1 |
This file contains instructions for how to complete the installation |
2 |
of mailman after you have installed the Red Hat mailman RPM. There are |
3 |
certain items you will need to manually configure as the RPM is not |
4 |
capable of doing every installation and confirguration task. |
5 |
|
6 |
First, you should note that the RPM has installed mailman in the |
7 |
following directory: |
8 |
@prefix@ |
9 |
You may want to examine this directory to find additional mailman |
10 |
documentation, or other mailman files. |
11 |
|
12 |
IMPORTANT NOTE FOR USERS UPGRADING FROM A PREVIOUS RED HAT MAILMAN |
13 |
INSTALLATION OR THOSE FAMILAR WITH "STANDARD MAILMAN INSTALLATIONS" |
14 |
|
15 |
Earlier Red Hat mailman rpms installed all of the mailman files under |
16 |
/var/mailman. This did not conform to the Filesystem Hierarchy |
17 |
Standard (FHS) and created security violations when SELinux is |
18 |
enabled. As of mailman-2.1.5-21 the following directory and file |
19 |
changes occurred: |
20 |
|
21 |
variable data (e.g. lists) is in @VAR_PREFIX@, library code, |
22 |
executables, and scripts are located in @prefix@, lock files are in |
23 |
@LOCK_DIR@, the pid file is in @PID_DIR@, qfiles are in @QUEUE_DIR@, |
24 |
and configuration files have been moved to the new @CONFIG_DIR@. |
25 |
|
26 |
If you previously had mailman installed and have edited files in |
27 |
/var/mailman (e.g. configuration) you will need to move those changes |
28 |
to their new locations. |
29 |
|
30 |
A script has been provided to aid in the task of migrating your |
31 |
mailman datafiles, it is contrib/migrate-fhs, run with -h for help |
32 |
information. |
33 |
|
34 |
The mapping of old locations to new locations is as follows: |
35 |
|
36 |
Directory Mapping: |
37 |
/var/mailman --> /var/lib/mailman |
38 |
/var/mailman/Mailman --> /usr/lib/mailman/Mailman |
39 |
/var/mailman/archives --> /var/lib/mailman/archives |
40 |
/var/mailman/bin --> /usr/lib/mailman/bin |
41 |
/var/mailman/cgi-bin --> /usr/lib/mailman/cgi-bin |
42 |
/var/mailman/cron --> /usr/lib/mailman/cron |
43 |
/var/mailman/data --> /var/lib/mailman/data |
44 |
/var/mailman/lists --> /var/lib/mailman/lists |
45 |
/var/mailman/locks --> /var/lock/mailman |
46 |
/var/mailman/logs --> /var/log/mailman |
47 |
/var/mailman/mail --> /usr/lib/mailman/mail |
48 |
/var/mailman/messages --> /usr/lib/mailman/messages |
49 |
/var/mailman/pythonlib --> /usr/lib/mailman/pythonlib |
50 |
/var/mailman/qfiles --> /var/spool/mailman |
51 |
/var/spool/mailman/qfiles --> /var/spool/mailman |
52 |
/var/mailman/scripts --> /usr/lib/mailman/scripts |
53 |
/var/mailman/spam --> /var/lib/mailman/spam |
54 |
/var/mailman/templates --> /usr/lib/mailman/templates |
55 |
/var/mailman/tests --> /usr/lib/mailman/tests |
56 |
|
57 |
File Mapping: |
58 |
/var/mailman/data/adm.pw --> /etc/mailman/adm.pw |
59 |
/var/mailman/data/creator.pw --> /etc/mailman/creator.pw |
60 |
/var/mailman/data/aliases --> /etc/mailman/aliases |
61 |
/var/mailman/data/virtual-mailman --> /etc/mailman/virtual-mailman |
62 |
/var/mailman/data/sitelist.cfg --> /etc/mailman/sitelist.cfg |
63 |
/var/mailman/data/master-qrunner.pid --> /var/run/mailman/master-qrunner.pid |
64 |
|
65 |
Discussion of directory and file relocation: |
66 |
|
67 |
Two new directories were created and three existing directories which |
68 |
were hardcoded are now configurable. |
69 |
|
70 |
PID_DIR is used to hold the process id and is new because FHS wants |
71 |
pid files to be located in /var/run. The FHS says when there is only a |
72 |
single pid file it should be located in /var/run/<name>.pid, and when |
73 |
there are multiple pid's files they should be located together in a |
74 |
subdirectory, /var/run/<name>/. Currently mailman only has a single |
75 |
pid file, but it does have multiple processes (qrunners). Also SELinux |
76 |
security policy is easier to write if processes are segregated into |
77 |
individual subdirectories. Therefore we elected to place the mailman |
78 |
pid file in its own subdirectory, there is some debate if this is 100% |
79 |
FHS compliant because there is only currently a single pid file, but |
80 |
this gives us greater future flexibility and is in the spirit of FHS. |
81 |
|
82 |
CONFIG_DIR is used to hold the site configuration files. FHS wants |
83 |
configuration files stored in /etc/mailman. Previously configuration |
84 |
files were mixed in with data files in DATA_DIR and with the run-time |
85 |
code (e.g. Mailman/mm_cfg.py). CONFIG_DIR continues to exist but is |
86 |
now restricted to data files (e.g. python pickle files). The password |
87 |
files, alias files, and .cfg (e.g. sitelist.cfg) files have been moved |
88 |
to CONFIG_DIR. mm_cfg.py which is the primary mailman configuration |
89 |
file was presented a bit of a dilemma. In theory it should be located |
90 |
in /etc/mailman, however it is executable code which argues it should |
91 |
be located with the other executable files, it has traditionally lived |
92 |
in $PREFIX/Mailman and experienced mailman admins will expect to find |
93 |
it there. Modifying all the mm_cfg import statements and paths.py was |
94 |
believed to be too invasive a change, and technically its part of the |
95 |
"Mailman" package and moving it would take it out of the package |
96 |
(although currently I don't think that presents any known |
97 |
issues). Instead a compromise approach was adopted, mm_cfg.py is |
98 |
symbolically linked into the /etc/mailman directory pointing to |
99 |
$PREFIX/Mailman/mm_cfg.py. Thus mm_cfg.py "appears" in the |
100 |
configuration directory but retains its traditional location, this was |
101 |
deemed a reasonable compromise for the mailman 2.1.x timeframe. |
102 |
|
103 |
sitelist.cfg has a symbolic link in its old location in the DATA_DIR |
104 |
pointing to its new location in the CONFIG_DIR. |
105 |
|
106 |
New Directories (can be specified as parameter to configure): |
107 |
|
108 |
CONFIG_DIR: default=$VAR_PREFIX/data FHS=/etc/mailman |
109 |
PID_DIR default=$VAR_PREFIX/data FHS=/var/run/mailman |
110 |
|
111 |
Existing directories that can now be specified as parameter to configure: |
112 |
|
113 |
LOCK_DIR: default=$VAR_PREFIX/locks FHS=/var/lock/mailman |
114 |
LOG_DIR: default=$VAR_PREFIX/logs FHS=/var/log/mailman |
115 |
QUEUE_DIR default=$VAR_PREFIX/qfiles FHS=/var/spool/mailman |
116 |
|
117 |
You can find addition documentation in the |
118 |
@DOC_DIR@/README.* files and/or |
119 |
@prefix@/README.* files. |
120 |
|
121 |
Mailman is an open source project and full documentation, current |
122 |
sources, patches, etc. can be found at the following official mailman |
123 |
web sites: |
124 |
|
125 |
http://www.gnu.org/software/mailman/mailman.html |
126 |
http://www.list.org |
127 |
|
128 |
1. Final installation instructions: |
129 |
|
130 |
Congratulations! You've installed the Mailman software. To get |
131 |
everything running you need to hook Mailman up to both your web |
132 |
server and your mail system. |
133 |
|
134 |
- If you plan on running your MTA and web server on different |
135 |
machines, sharing Mailman installations via NFS, be sure that |
136 |
the clocks on those two machines are synchronized closely. You |
137 |
might take a look at the file Mailman/LockFile.py; the constant |
138 |
CLOCK_SLOP helps the locking mechanism compensate for clock skew |
139 |
in this type of environment. |
140 |
|
141 |
- Configure your web server. The RPM has made the assumption you |
142 |
are running the apache web server (httpd). The RPM has installed |
143 |
a mailman config file (@HTTPD_CONF_FILE@) in @HTTPD_CONF_DIR@. |
144 |
You should edit the file to set your domain, see the |
145 |
instructions in the config file. |
146 |
|
147 |
Now restart your web server so the new settings take effect: |
148 |
|
149 |
% /sbin/service httpd restart |
150 |
|
151 |
- Create the site password using: |
152 |
|
153 |
% @prefix@/bin/mmsitepass <your-site-password> |
154 |
|
155 |
This password can be used anywhere that individual user or |
156 |
mailing list administrator passwords are required, giving the |
157 |
mailman site administrator the ability to adjust these things |
158 |
when necessary. |
159 |
|
160 |
You may also want to create a password for the site-wide "list |
161 |
creator" role (someone other than the site administrator who as |
162 |
privileges to create and remove lists through the web). Use the |
163 |
-c option to mmsitepass to set this. |
164 |
|
165 |
- Set the values for DEFAULT_EMAIL_HOST and DEFAULT_URL_HOST in |
166 |
@prefix@/Mailman/mm_cfg.py file if the fqdn of the host you are |
167 |
running mailman on is not the email and url host you need to use. |
168 |
|
169 |
- Update Mailman list files to new verson by running: |
170 |
@prefix@/bin/update |
171 |
|
172 |
Users upgrading from previous releases of this package may need |
173 |
to move their data or adjust the configuration files to point to |
174 |
the locations where their data is. |
175 |
|
176 |
- Create a "site-wide" mailing list (Note: this must be done |
177 |
before starting the mailman daemon). This is the one that |
178 |
password reminders will appear to come from. Usually this |
179 |
should be the "mailman" mailing list, but if you need to change |
180 |
this, be sure to change the MAILMAN_SITE_LIST variable in |
181 |
mm_cfg.py (see below). |
182 |
|
183 |
% @prefix@/bin/newlist mailman |
184 |
|
185 |
Follow the prompts, and see the README file for more |
186 |
information. |
187 |
|
188 |
- Start the Mailman qrunner daemon |
189 |
|
190 |
As of mailman version 2.1 mailman requires a service (daemon) to be |
191 |
run for mailman to operate. RedHat does not ship RPM's that enable |
192 |
services as part of package installation. You will need to enable |
193 |
the mailman service if you want mailman to run. |
194 |
|
195 |
To enable the mailman service after package installation you may run |
196 |
the "serviceconf" GUI tool, or you may do the following on the |
197 |
command line as root. |
198 |
|
199 |
/sbin/service mailman start |
200 |
|
201 |
To have the mailman service automatically start at certain run |
202 |
levels (replace the runlevel below with your desired run levels, for |
203 |
example to start mailman at run levels 3 and 5 runlevel would be 35: |
204 |
|
205 |
/sbin/chkconfig --level runlevel mailman on |
206 |
|
207 |
- You should then subscribe yourself to the mailman list. |
208 |
|
209 |
|
210 |
2. Customize Mailman |
211 |
|
212 |
You should do these steps using the account you installed Mailman |
213 |
under in section 2 above. |
214 |
|
215 |
- The file @prefix@/Mailman/Defaults.py contains a number of |
216 |
defaults for your installation. If any of these are incorrect, |
217 |
override them in @prefix@/Mailman/mm_cfg.py. |
218 |
|
219 |
DO NOT EDIT Defaults.py! |
220 |
|
221 |
Note: If you have upgraded your mailman installation RPM will |
222 |
save a copy of your previous version of mm_cfg.py in |
223 |
mm_cfg.py.rpmsave. |
224 |
|
225 |
See the comments in Defaults.py for details. Once a list is |
226 |
created, editing many of these variables will have no effect. |
227 |
At that point, you'll need to configure your lists through the |
228 |
web admin interface or through the command line script |
229 |
@prefix@/bin/withlist or @prefix@/bin/config_list. |
230 |
|
231 |
Note: Do *not* change HOME_DIR or MAILMAN_DIR. These are set |
232 |
automatically by the configure script when the RPM was created. |
233 |
|
234 |
- Create the site password using: |
235 |
|
236 |
% @prefix@/bin/mmsitepass <your-site-password> |
237 |
|
238 |
This password can be used anywhere that individual user or |
239 |
mailing list administrator passwords are required, giving the |
240 |
mailman site administrator the ability to adjust these things |
241 |
when necessary. |
242 |
|
243 |
You may also want to create a password for the site-wide "list |
244 |
creator" role (someone other than the site administrator who as |
245 |
privileges to create and remove lists through the web). Use the |
246 |
-c option to mmsitepass to set this. |
247 |
|
248 |
|
249 |
3. Troubleshooting |
250 |
|
251 |
If you encounter problems with running Mailman, first check the |
252 |
"Common Problems" section, below. If your problem is not covered |
253 |
there, check both the FAQ file and the online FAQ Wizard. |
254 |
Check for errors in the mailman log files which can be found in |
255 |
|
256 |
@LOG_DIR@ |
257 |
|
258 |
Mailman logs errors to this file: |
259 |
|
260 |
@LOG_DIR@/error |
261 |
|
262 |
If you encounter an error, send an error report to |
263 |
mailman-users@python.org. Include a description of what you're |
264 |
doing to cause the problem, and the relevant lines from your |
265 |
syslog. Also include information on your operating system, which |
266 |
version of Python you're using, and which version of Mailman |
267 |
you're installing. |
268 |
|
269 |
|
270 |
4. Common Problems |
271 |
|
272 |
Problem: All Mailman web pages give a 404 File not found error. |
273 |
|
274 |
Solution: Your web server has not been set up properly for handling |
275 |
Mailman's cgi commands. Make sure you've: |
276 |
|
277 |
1) Configured the web server to give permissions to |
278 |
@prefix@/cgi-bin |
279 |
2) Restarted the web server properly. |
280 |
|
281 |
Consult your web server's documentation for instructions |
282 |
on how to do these things. |
283 |
|
284 |
|
285 |
Problem: All Mailman web pages give an "Internal Server Error". |
286 |
|
287 |
Solution: The likely problem is that you are using the wrong GID or |
288 |
UID for CGI scripts. Check your syslog. If you see, for |
289 |
example, a line like: |
290 |
|
291 |
Attempt to exec script with invalid gid 51, expected 99 |
292 |
|
293 |
You need to reinstall Mailman, and specify $CGI_GID to be 51, |
294 |
as described in the installation instructions. |
295 |
|
296 |
|
297 |
Problem: I send mail to the list, and get back mail saying the |
298 |
list is not found! |
299 |
|
300 |
Solution: You probably didn't add the necessary aliases to the system |
301 |
alias database, given to you when you ran the newlist |
302 |
command. If you did add them, you likely did not update |
303 |
the alias database, or your system requires you to run |
304 |
newaliases explicitly. Refer to section 5 above for |
305 |
more information. |
306 |
|
307 |
|
308 |
Problem: I send mail to the list, and get back mail saying, |
309 |
"unknown mailer error". |
310 |
|
311 |
Solution: The likely problem is that you are using the wrong GID or |
312 |
UID for mail. Check your syslog. If you see, for |
313 |
example, a line like: |
314 |
|
315 |
Attempt to exec script with invalid gid 51, expected 99 |
316 |
|
317 |
You need to reinstall Mailman, and specify $MAIL_GID to |
318 |
be 51, as described in the installation |
319 |
instructions. see notes on Postfix below, as by default |
320 |
it will create these problems on installation. |
321 |
|
322 |
|
323 |
Problem: I use Postfix for my MTA and the mail wrapper programs |
324 |
are logging complaints about the wrong GID. |
325 |
|
326 |
Solution: Create a separate aliases file for Postfix in its |
327 |
main.cf config file under the variable "alias_maps". Put |
328 |
the file somewhere in Mailman's home directory, or |
329 |
somewhere else where the user mailman has write access |
330 |
to it; *as user mailman* call Postfix's "postalias" on the |
331 |
alias file. |
332 |
|
333 |
% postalias <the alias file> |
334 |
|
335 |
Also as user mailman, run |
336 |
|
337 |
% python -c'import os; print os.getgid()' |
338 |
|
339 |
This should print out the group id that Mailman should |
340 |
be configured to expect when the mail wrapper programs |
341 |
are run. Call it "thegid". Rebuild Mailman with |
342 |
|
343 |
% ./configure --with-mail-gid=thegid |
344 |
|
345 |
See also the "Using the Postfix mail server" section of |
346 |
the mailman installation manual for more information on |
347 |
connecting Postfix and Mailman. The manual is available |
348 |
in several formats at /usr/share/doc/mailman-*/admin/www. |
349 |
|
350 |
|
351 |
Problem: I send mail to the list, and get back mail saying, |
352 |
"sh: mailman not available for sendmail programs" |
353 |
|
354 |
Solution: Your system uses sendmail restricted shell (smrsh). You |
355 |
need to configure smrsh by creating a symbolic link from |
356 |
the mail wrapper (@prefix@/mail/mailman) to the directory |
357 |
identifying executables allowed to run under smrsh. |
358 |
|
359 |
Some common names for this directory are |
360 |
/var/admin/sm.bin, /usr/admin/sm.bin or /etc/smrsh. |
361 |
|
362 |
Note that on Debian Linux, the system makes |
363 |
/usr/lib/sm.bin, which is wrong, you will need to create |
364 |
the directory /usr/admin/sm.bin and add the link there. |
365 |
Note further any aliases newaliases spits out will need |
366 |
to be adjusted to point to the secure link to the |
367 |
wrapper. |
368 |
|
369 |
|
370 |
Problem: I messed up when I called configure. How do I clean |
371 |
things up and re-install? |
372 |
|
373 |
Solution: % make clean |
374 |
% ./configure --with-the-right-options |
375 |
% make install |
376 |
|
377 |
|
378 |
-------------------- Other Useful Information ----------------- |
379 |
|
380 |
RPM Preserves User Modified Files |
381 |
--------------------------------- |
382 |
|
383 |
The rpm during installation will preserve changes you have made to |
384 |
configuration files and templates from a previous installation. This |
385 |
is almost always what is desired. However you may want to check for |
386 |
the existence of files with either the .rpmsave or the .rpmnew |
387 |
extension and verify if any of these backup files created during the |
388 |
RPM install exist and if you are indeed using the version of the file |
389 |
you desire. |
390 |
|
391 |
Note: The installation directory for non-data files changed from |
392 |
@VAR_PREFIX@ to @prefix@ in mailman-2.1.5-20. Configuration files and |
393 |
templates that were user modified in a previous installation will need |
394 |
to manually move those changes from the earlier @VAR_PREFIX@ to the |
395 |
new @prefix@ installation directory. |
396 |
|
397 |
Here are a few commands that will aid you in this process: |
398 |
|
399 |
List any rpm backup files in the mailman installation directory: |
400 |
|
401 |
% find @prefix@ @VAR_PREFIX@ -name '*.rpm*' |
402 |
|
403 |
List any configuration files NOT in the mailman installation directory |
404 |
you might miss with the above command which also have the potental for |
405 |
backup copies. Given this short list you'll have to look for a |
406 |
matching backup file. |
407 |
|
408 |
% rpm -qc mailman | egrep -v '@prefix@|@VAR_PREFIX@' |
409 |
|
410 |
When rpm preserves a user modified file it installs the newest version |
411 |
of the file by appending the .rpmnew extension to the file name thus |
412 |
preserving the file but making the latest version avialable. If rpm |
413 |
replaces a user modified file the file being replaced is renamed to |
414 |
have the .rpmsave extension. RPM only performs these backup operations |
415 |
if the file is marked as being a configuration file in the rpm spec |
416 |
file, it is not performed in general on all files in the package. |
417 |
|
418 |
|
419 |
Mailman Cron Jobs: |
420 |
------------------ |
421 |
|
422 |
Mailman relies on the cron daemon to schedule periodic actions. These |
423 |
are contained in a crontab file. Previous versions of the mailman RPM |
424 |
from Red Hat created the cron jobs by running the crontab(1) command |
425 |
during the RPM installation phase. The cron jobs are now handled |
426 |
slightly differently. Rather than invoking crontab which loaded the |
427 |
cron jobs into a private cron file a mailman crontab file is installed |
428 |
into /etc/cron.d. The crontab file and the commands it runs were |
429 |
modified from the upstream distribution so these commands would run |
430 |
under the correct SELinux security profile. |
431 |
|
432 |
Previously the cron jobs were installed when the RPM was |
433 |
installed. This was less than optimal because the act of having the |
434 |
mailman RPM installed on a system should not cause the cron jobs to |
435 |
run. A better solution is to only run the mailman cron jobs if the |
436 |
mailman service is enabled. This is accomplished by installing the |
437 |
mailman crontab file in /etc/cron.d when the mailman service is |
438 |
started by mailman init.d script (e.g. either at boot time or via |
439 |
/sbin/service). When the mailman service is stopped the crontab file |
440 |
is removed from /etc/cron.d. The crontab file is copied from |
441 |
@prefix@/cron/crontab.in to /etc/cron.d/mailman. Thus if you edit the |
442 |
cron jobs you will need to edit the master copy in @prefix@/cron |
443 |
otherwise your edits will be lost the next time the mailman service is |
444 |
started or restarted. To pick up any changes made to the crontab file |
445 |
edit the master copy in @prefix@/cron and then use /sbin/service to |
446 |
restart mailman (e.g. /sbin/service mailman restart). Some may wonder |
447 |
why the crontab file in /etc/cron.d is not symbolically linked to the |
448 |
master copy when the service starts and unlinked when it stops. The |
449 |
reason is because newer versions of cron will refuse for security |
450 |
reasons to run any crontabs which are links to other files or |
451 |
writeable by anybody else except root. |
452 |
|
453 |
Choosing your MTA (sendmail or postfix) on Red Hat Systems: |
454 |
----------------------------------------------------------- |
455 |
|
456 |
Red Hat ships two different MTA's, sendmail and postfix. Because the |
457 |
sendmail and postfix rpms's share file names when installed the |
458 |
conflict is accomodated by utilizing the "alternatives" mechanism |
459 |
which manages a set of links. When one of the MTA's is selected via |
460 |
/usr/sbin/alternatives links are established which point to the |
461 |
correct files for that MTA. There are two ways to select your MTA: |
462 |
The system-switch-mail package contains a GUI front end to the |
463 |
alternatives mechanism and /usr/bin/system-switch-mail is an easy way |
464 |
to select your MTA, or you can invoke alternatives directly like this: |
465 |
|
466 |
% /usr/sbin/alternatives --config mta |
467 |
|
468 |
Note: Selecting your preferred MTA is distinct from configuring the |
469 |
MTA, you will need to consult the documentation for the MTA you |
470 |
selected for information on how to configure it. |
471 |
|
472 |
|
473 |
Local Variables: |
474 |
mode: indented-text |
475 |
indent-tabs-mode: nil |
476 |
End: |