1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
$Revision: 402 $, $Date: 1998-04-10 01:05:30 +0100 (Fri, 10 Apr 1998) $
There's still much that I'd like to redo or add. I'm not incredibly
proud of the code, and it's a bit embarassing to be sharing it at this
point. The weakest points in my mind are probably the cgi scripts and
html formatting. Unfortunately, I won't soon have the time to devote
to doing it better.
Initial version of Mailman (v. 0.9) written by John Viega Dec 12-15 1996
See file DONE for info on changes since v. 0.9
Features:
o Most standard mailing list features, including:
moderation, mail based commands, digests, etc...
o An extensive web interface customizable on a per-list basis.
o Web based list administration interface for *all* admin-type tasks.
o Automatic web based hypermail-style archives (using pipermail)
o Smart bounce detection and correction
o Fast bulk mailing
o Multiple list owners and moderators
o Optional MIME-Compliant digests
o Nice about which machine you subscribed from if you're from the
right domain.
Requirements:
You must be root on a machine running a mail transport program that
uses an /etc/aliases file, and has a sendmail executable (smail
should be OK). Eventually I'd really like to support qmail,
but currently don't.
The machine really needs to have a web server in order to configure lists.
Install:
o Make sure Python is installed as /usr/local/bin/python (currently
hardcoded -- this obviously needs to change, and should be
handled by a config program)
o As root, add a mailman user
o As mailman, copy the mailman dir to /home/mailman. Currently the
system requires the source be located there.
[I've been making it a subdir of /home/mailman, ie,
/home/mailman/mailman. If it really should be the same dir, the
previous sentence should say "copy the contents of the mailman dir
to..." klm.]
o As mailman, in /home/mailman make public_html, cgi-bin, and logs
directories. (Chmod g+sw if multiple members of a group are
experimenting.)
o As mailman, in /home/mailman make archives/private and archives/public
directories. (Chmod g+sw if multiple members of a group are
experimenting.)
o As root, Configure your web server to give /home/mailman/cgi-bin
perms to run cgi in the cgi-bin dir, and restart the web server.
The line you should add should look something like:
Exec /mailman/* /home/mailman/cgi-bin/*
or:
ScriptAlias /mailman/ /home/mailman/cgi-bin/
(Or whatever is equivalent for your web server)
o As root, edit /home/mailman/mailman/src/*.c and edit the UID and
GID const lines as appropriate.
o As root, cd to /home/mailman/mailman/src and type: make
o As root, Add mailman as a trusted mail user. This is usually done
by adding: Tmailman to /etc/sendmail.cf under the line: Troot
o As root, Restart sendmail.
o As mailman, cd to /home/mailman/mailman/cron, and add crontab.in
as your crontab. (probably done w/: crontab crontab.in)
o Edit modules/mm_cfg.py - if you don't already have one, make a
copy from modules/mm_cfg.py.dist. Include settings in mm_cfg.py
for any of the defaults in mm_defaults.py that you want to tailor
for your site.
Adding a new list:
o Run the program bin/newlist
Troubleshooting:
If the web pages hang:
CERN web servers might leave python's running, and in some
cases might hang the cgi completely. In that case, switch to
Apache.
If from the web you get "document contains no data":
If mail isn't getting delivered:
The cgi wrappers are failing. Either a UID is wrong, or your
web server / mailer has a non-standard name.
Some notes about the code (Developers notes):
How to add a new user option:
1) Add a flag to mm_defaults.py, and mm_cfg.py.dist if it's
likely to require a custom value for each site.
2) Add an entry to mm_html GetStandardReplacements name
& mapping, to enable referring to the value from mailman html.
3) Add replacements lines to the cgi/options and cgi/listionfo
scripts, to hook the mailman html up with the option.
4) For user-specific options, make SetUserOption calls in
& cgi/handle_opts.
5) For user-specific options, add to 2 data structs at top of
& mm_mailcmd.
6) For user-specific options, add description to mm_mailcmd help
7) Update templates if the options have replacements
8) Use your option wherever appropriate...
|