annotate README.postfix @ 780:ddae562f7cf0

Document why 'nobody' is inappropriate and capitalise a few things
author Ben Schmidt
date Mon, 15 Nov 2010 10:11:28 +1100
parents fdc57c9e5f56
children 58d726e86650
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
706
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
1 README.postfix Dec 16th 2009
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
2
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
3 POSTFIX ISSUES
780
ddae562f7cf0 Document why 'nobody' is inappropriate and capitalise a few things
Ben Schmidt
parents: 749
diff changeset
4
ddae562f7cf0 Document why 'nobody' is inappropriate and capitalise a few things
Ben Schmidt
parents: 749
diff changeset
5 The main issue with Postfix and Mlmmj is the Mlmmj requirement that
ddae562f7cf0 Document why 'nobody' is inappropriate and capitalise a few things
Ben Schmidt
parents: 749
diff changeset
6 the Mlmmj executables must be executed by root or the owner of the
ddae562f7cf0 Document why 'nobody' is inappropriate and capitalise a few things
Ben Schmidt
parents: 749
diff changeset
7 list directory.
706
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
8
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
9 This is at odds with Postfix. The standard local delivery mechanism
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
10 for Postfix is local(8) that ships with Postfix. According to
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
11 local(8) delivery to external programs is done on behalf of the
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
12 receiving user. But when delivering to a program without using a
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
13 .forward file there is no user context. And using an alias file
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
14 does not provide user context.
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
15
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
16 The man page also explains that in the absence of user context the
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
17 local(8) daemon will use the owner of the :include: file from the
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
18 aliases file. But this is a problem too. By default :include:
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
19 files are disabled as a security precaution in aliases files for
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
20 delivering to external programs.
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
21
780
ddae562f7cf0 Document why 'nobody' is inappropriate and capitalise a few things
Ben Schmidt
parents: 749
diff changeset
22 So Postfix then falls back to executing with the user specified by
ddae562f7cf0 Document why 'nobody' is inappropriate and capitalise a few things
Ben Schmidt
parents: 749
diff changeset
23 the configuration option 'default_privs'. The default setting for
ddae562f7cf0 Document why 'nobody' is inappropriate and capitalise a few things
Ben Schmidt
parents: 749
diff changeset
24 this option is the user 'nobody'. You can make Mlmmj work by having
ddae562f7cf0 Document why 'nobody' is inappropriate and capitalise a few things
Ben Schmidt
parents: 749
diff changeset
25 your lists owned by 'nobody', but this is not recommended. Other
ddae562f7cf0 Document why 'nobody' is inappropriate and capitalise a few things
Ben Schmidt
parents: 749
diff changeset
26 programs and daemons may use 'nobody' as a user who should not have
ddae562f7cf0 Document why 'nobody' is inappropriate and capitalise a few things
Ben Schmidt
parents: 749
diff changeset
27 access to anything; most notably, some NFS implementations use this
ddae562f7cf0 Document why 'nobody' is inappropriate and capitalise a few things
Ben Schmidt
parents: 749
diff changeset
28 user when somebody connects but fails to authenticate. Such users
ddae562f7cf0 Document why 'nobody' is inappropriate and capitalise a few things
Ben Schmidt
parents: 749
diff changeset
29 should not be able to access your mailing lists. Changing
ddae562f7cf0 Document why 'nobody' is inappropriate and capitalise a few things
Ben Schmidt
parents: 749
diff changeset
30 'default_privs' to an 'mlmmj' user may open other security holes,
ddae562f7cf0 Document why 'nobody' is inappropriate and capitalise a few things
Ben Schmidt
parents: 749
diff changeset
31 and may not be appropriate if Postfix is used for other external
ddae562f7cf0 Document why 'nobody' is inappropriate and capitalise a few things
Ben Schmidt
parents: 749
diff changeset
32 programs besides Mlmmj.
ddae562f7cf0 Document why 'nobody' is inappropriate and capitalise a few things
Ben Schmidt
parents: 749
diff changeset
33
ddae562f7cf0 Document why 'nobody' is inappropriate and capitalise a few things
Ben Schmidt
parents: 749
diff changeset
34 This leaves us with a conundrum on how to execute the Mlmmj
ddae562f7cf0 Document why 'nobody' is inappropriate and capitalise a few things
Ben Schmidt
parents: 749
diff changeset
35 executables as an 'mlmmj' user. One answer is to use a Postfix
ddae562f7cf0 Document why 'nobody' is inappropriate and capitalise a few things
Ben Schmidt
parents: 749
diff changeset
36 transport.
706
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
37
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
38 First we'll get the 'mlmmj' user setup and then move onto the
780
ddae562f7cf0 Document why 'nobody' is inappropriate and capitalise a few things
Ben Schmidt
parents: 749
diff changeset
39 Postfix configuration:
706
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
40
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
41 MLMMJ SETUP
780
ddae562f7cf0 Document why 'nobody' is inappropriate and capitalise a few things
Ben Schmidt
parents: 749
diff changeset
42
706
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
43 Create a 'mlmmj' user that will own all the lists. Use whatever
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
44 user creation app/script is provided by your system. Generally
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
45 'useradd'.
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
46
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
47 Create the spool directory that is owned by the 'mlmmj' user.
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
48 This is typically /var/spool/mlmmj but can be any directory so long
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
49 as it is owned by 'mlmmj'. It can even be the home directory of the
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
50 'mlmmj' user. If the spool directory is not /var/spool/mlmmj then
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
51 everywhere in this file replace /var/spool/mlmmj with your spool
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
52 directory.
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
53
749
fdc57c9e5f56 Remove .sh from mlmmj-make-ml.sh; symlink original name
Ben Schmidt
parents: 748
diff changeset
54 Create a mailing list using mlmmj-make-ml. Make sure to use the
706
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
55 -s flag to set the spool directory if it isn't /var/spool/mlmmj
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
56
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
57 POSTFIX SETUP
780
ddae562f7cf0 Document why 'nobody' is inappropriate and capitalise a few things
Ben Schmidt
parents: 749
diff changeset
58
706
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
59 First thing is to make sure that the postfix server accepts mail for
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
60 the mailing lists. For a server that handles mail for multiple
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
61 domains, this is done with a 'virtual_alias_map'. This is how I'll
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
62 demonstrate.
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
63
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
64 Add a virtual_alias_map file to main.cf configuration. We'll use a
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
65 regular expression map since we need to be able to match all the
780
ddae562f7cf0 Document why 'nobody' is inappropriate and capitalise a few things
Ben Schmidt
parents: 749
diff changeset
66 various Mlmmj delimiter addresses (list-subscribe, list-unsubscribe,
ddae562f7cf0 Document why 'nobody' is inappropriate and capitalise a few things
Ben Schmidt
parents: 749
diff changeset
67 confsub-0123456789abcdef, etc.).
706
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
68
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
69 main.cf:
780
ddae562f7cf0 Document why 'nobody' is inappropriate and capitalise a few things
Ben Schmidt
parents: 749
diff changeset
70 virtual_alias_maps = hash:/etc/postfix/virtual,
706
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
71 regexp:/var/spool/mlmmj/virtual.regexp
780
ddae562f7cf0 Document why 'nobody' is inappropriate and capitalise a few things
Ben Schmidt
parents: 749
diff changeset
72
706
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
73 /var/spool/mlmmj/virtual.regexp:
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
74 /^(mlmmj-test.*)@example\.com$/ ${1}
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
75 /^(another-list.*)@sample\.com$/ ${1}
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
76
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
77 One line needs to be in the virtual map for each list the 'mlmmj' id
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
78 is to handle. The regex formula is:
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
79
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
80 /^(list-name.*)@(domain\.com)$/ ${1}
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
81
747
fd77dd58bde1 Added info on a hierarchical multi-domain option to README.postfix
Ben Schmidt
parents: 706
diff changeset
82 If you want to host multiple domains in a hierarchical structure,
fd77dd58bde1 Added info on a hierarchical multi-domain option to README.postfix
Ben Schmidt
parents: 706
diff changeset
83 you can alternatively use:
fd77dd58bde1 Added info on a hierarchical multi-domain option to README.postfix
Ben Schmidt
parents: 706
diff changeset
84
fd77dd58bde1 Added info on a hierarchical multi-domain option to README.postfix
Ben Schmidt
parents: 706
diff changeset
85 /^(list-name.*)@(domain\.com)$/ domain--${1}
fd77dd58bde1 Added info on a hierarchical multi-domain option to README.postfix
Ben Schmidt
parents: 706
diff changeset
86
780
ddae562f7cf0 Document why 'nobody' is inappropriate and capitalise a few things
Ben Schmidt
parents: 749
diff changeset
87 Next we make sure that Postfix can invoke the mlmmj executables as
706
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
88 the 'mlmmj' user. This is where the transport map comes in. So we
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
89 add a transport map and a configuration option that instructs the
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
90 transport to only deliver one file at a time. See transport(5) for
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
91 more information on transports.
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
92
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
93 main.cf:
780
ddae562f7cf0 Document why 'nobody' is inappropriate and capitalise a few things
Ben Schmidt
parents: 749
diff changeset
94 transport_maps = regexp:/var/spool/mlmmj/transport
706
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
95 mlmmj_destination_recipient_limit = 1
780
ddae562f7cf0 Document why 'nobody' is inappropriate and capitalise a few things
Ben Schmidt
parents: 749
diff changeset
96
706
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
97 /var/spool/mlmmj/transport:
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
98 /^(list-test).*$/ mlmmj:list-test
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
99 /^(another-list).*$/ mlmmj:another-list
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
100
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
101 What this transport file says, is that any message destined for an
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
102 email address that matches the regexp on the left, deliver it using
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
103 the transport 'mlmmj' and setting 'nexthop' to the value in $1.
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
104 Which in this case is the mailing list name. 'nexthop' is special
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
105 variable for transports.
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
106
747
fd77dd58bde1 Added info on a hierarchical multi-domain option to README.postfix
Ben Schmidt
parents: 706
diff changeset
107 For the hierarchical multi-domain solution, use this variant:
fd77dd58bde1 Added info on a hierarchical multi-domain option to README.postfix
Ben Schmidt
parents: 706
diff changeset
108
fd77dd58bde1 Added info on a hierarchical multi-domain option to README.postfix
Ben Schmidt
parents: 706
diff changeset
109 /^(domain--list-name).*$/ mlmmj:domain/list-name
fd77dd58bde1 Added info on a hierarchical multi-domain option to README.postfix
Ben Schmidt
parents: 706
diff changeset
110
706
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
111 Now we setup the 'mlmmj' transport. The 'mlmmj' in mlmmj:$1 above
780
ddae562f7cf0 Document why 'nobody' is inappropriate and capitalise a few things
Ben Schmidt
parents: 749
diff changeset
112 indicates a transport listed in the Postfix master.cf file. We are
706
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
113 just going to create a transport called 'mlmmj' but it is nothing
748
dfc9ab125fd4 Fix spelling of 'receive' and 'voodoo'; make mlmmj-recieve a symlink
Chris Webb
parents: 747
diff changeset
114 more than a pipe(8) to the mlmmj-receive program that is invoked as
706
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
115 the 'mlmmj' user.
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
116
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
117 master.cf:
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
118 # mlmmj mailing lists
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
119 mlmmj unix - n n - - pipe
748
dfc9ab125fd4 Fix spelling of 'receive' and 'voodoo'; make mlmmj-recieve a symlink
Chris Webb
parents: 747
diff changeset
120 flags=DORhu user=mlmmj argv=/usr/local/bin/mlmmj-receive -F -L /var/spool/mlmmj/$nexthop/
706
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
121
780
ddae562f7cf0 Document why 'nobody' is inappropriate and capitalise a few things
Ben Schmidt
parents: 749
diff changeset
122 This takes the pipe(8) Postfix delivery agent and tells it to invoke
748
dfc9ab125fd4 Fix spelling of 'receive' and 'voodoo'; make mlmmj-recieve a symlink
Chris Webb
parents: 747
diff changeset
123 '/usr/local/bin/mlmmj-receive' as the 'mlmmj' user and pipe the
706
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
124 email to it on stdin. This mode of transportation is given the name
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
125 'mlmmj'.
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
126
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
127 The 'flags' parameter to pipe(8) is pretty critical here. In
748
dfc9ab125fd4 Fix spelling of 'receive' and 'voodoo'; make mlmmj-recieve a symlink
Chris Webb
parents: 747
diff changeset
128 particular if the 'R' option is not used mlmmj-receive fails to
dfc9ab125fd4 Fix spelling of 'receive' and 'voodoo'; make mlmmj-recieve a symlink
Chris Webb
parents: 747
diff changeset
129 receive the mail correctly. The options mean:
706
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
130
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
131 D - Prepend a 'Delivered-To: recipient' header
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
132 O - Prepend an 'X-Original-To: recipient' header
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
133 R - Prepend a 'Return-Path:'. header
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
134 h - fold $nexthop to lowercase
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
135 u - fold $recipient to lowercase
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
136
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
137 $nexthop gets set to what was on the right had side of the ':' in
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
138 the transport file. The way we have that configured is that
747
fd77dd58bde1 Added info on a hierarchical multi-domain option to README.postfix
Ben Schmidt
parents: 706
diff changeset
139 $nexthop will get set to the name of the mailing list (or domain
fd77dd58bde1 Added info on a hierarchical multi-domain option to README.postfix
Ben Schmidt
parents: 706
diff changeset
140 and name). Your list directories, then, should be at
fd77dd58bde1 Added info on a hierarchical multi-domain option to README.postfix
Ben Schmidt
parents: 706
diff changeset
141 /var/spool/mlmmj/list-name as usual, or for the hierarchical
fd77dd58bde1 Added info on a hierarchical multi-domain option to README.postfix
Ben Schmidt
parents: 706
diff changeset
142 multi-domain version, in /var/spool/mlmmj/domain/list-name.
706
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
143
780
ddae562f7cf0 Document why 'nobody' is inappropriate and capitalise a few things
Ben Schmidt
parents: 749
diff changeset
144 Restart Postfix and enjoy your new lists.
706
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
145
52189a450b0c Added README.postfix (Jeremy Hinegardner, Andreas Schneider)
mortenp
parents:
diff changeset
146