Installing Mailman 2.1.4 on Mac OS X Server (Panther)

On panther server you already have a user called "mailman" "uid=78" and a group called "mailman" "gid=78". Make sure that mailman user has a password and permission to log in. Open terminal and login as root:

mv /usr/share/mailman /usr/share/mailman.original
mkdir /usr/share/mailman
sudo chgrp mailman /usr/share/mailman
sudo chmod a+rx,g+ws /usr/share/mailman

Login as user mailman:

cd /usr/share/mailman
curl -O http://aleron.dl.sourceforge.net/sourceforge/mailman/mailman-2.1.4.tgz
gnutar -xvzf mailman-2.1.4.tgz
cd mailman-2.1.4
./configure --prefix=/usr/share/mailman --with-cgi-gid=www --with-mail-gid=mailman
make install
cd ..
bin/check_perms -f
bin/check_perms -f

Open and add the following lines to the end of "mm_cfg.py" file:

cd Mailman
open -e mm_cfg.py

DEFAULT_EMAIL_HOST = 'mail.domain.net'
DEFAULT_URL_HOST = 'www.domain.net'
add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)

cd ..
bin/newlist mailman
bin/config_list -i data/sitelist.cfg mailman

Create a password that can be used anywhere that individual user or mailing list administrator passwords are required.

bin/mmsitepass
cd mailman/cron
crontab crontab.in

Login as root and change the following lines:

open -e /etc/httpd/httpd_mailman.conf

ScriptAlias /mailman/ "/usr/share/mailman/cgi-bin/"
Alias /pipermail/ "/usr/share/mailman/archives/public/"
<Directory "/usr/share/mailman/archives/public/">
Options FollowSymLinks MultiViews Indexes
AllowOverride None
Order allow,deny
Allow from all
</Directory>

sudo apachectl graceful

Open and uncomment the following line to enable web-based configuration of mailman:

open -e /private/etc/httpd/httpd.conf

# Include /etc/httpd/httpd_mailman.conf

Apple has already included startup file at "/System/Library/StartupItems/Mailman", but since we're not using apple's mail server we cannot use ServerAdmin app to start mailman except to administer the list.

open -e/private/etc/hostconfig

Flip "NO" to "YES":           MAILMAN=-YES-

To start mailman manually via terminal (as root)

/usr/share/mailman/bin/mailmanctl start
/usr/share/mailman/bin/mailmanctl stop
/usr/share/mailman/bin/mailmanctl reload

/usr/share/mailman/bin/mmsitepass

Manage your lists from the web:

http://www.domain.com/mailman/create
http://www.domain.com/mailman/listinfo

Exim configure file:

add to main config section:

MAILMAN_HOME=/usr/share/mailman
MAILMAN_WRAP=MAILMAN_HOME/mail/mailman
MAILMAN_USER=mailman
MAILMAN_GROUP=mailman

add to routers (near the beginning):

mailman_router:
driver = accept
require_files = MAILMAN_HOME/lists/$local_part/config.pck
local_part_suffix_optional
local_part_suffix = -bounces : -bounces+* : \
-confirm+* : -join : -leave : \
-owner : -request : -admin
transport = mailman_transport

add to transports:

mailman_transport:
driver = pipe
command = MAILMAN_WRAP \
'${if def:local_part_suffix \
{${sg{$local_part_suffix}{-(\\w+)(\\+.*)?}{\$1}}} \
{post}}' \
$local_part
current_directory = MAILMAN_HOME
home_directory = MAILMAN_HOME
user = MAILMAN_USER
group = MAILMAN_GROUP