Saturday, October 19, 2013

Mailman Mailing List with Postfix

Mailman is free mailing list manager for managing electronic mail discussions and  newsletter lists. It is widely used mailing list manager which supports supports built-in archiving, automatic bounce processing, content filtering, digest delivery, spam filters.

Here I will explain how to install and configure mailman on a linux system.

First download the latest pack from the link below,

wget http://ftp.gnu.org/gnu/mailman/mailman-2.1.15.tgz

useradd -m /usr/local/mailman mailman
chmod 02775 /usr/local/mailman

apt-get install python-dev

tar -zxvf mailman-2.1.15.tgz
cd mailman-2.1.15

I am running my web server as apache user, having gid = 48.

./configure --with-cgi-gid=48 --with-mail-gid=mailman
make
make install



check installation,

/usr/local/mailman/bin/check_perms -f

Set up webserver for maintaining discussion archives ..

create a new virtual host for lists.test.com

vim /etc/apache2/sites-available/list

<VirtualHost *:80>
ServerName lists.test.com
DocumentRoot /var/www/lists
ErrorLog /var/log/apache2/lists-error.log
CustomLog /var/log/apache2/lists-access.log combined

<Directory /usr/local/mailman/archives/>
    Options FollowSymLinks
    AllowOverride None
</Directory>

Alias /pipermail /usr/local/mailman/archives/public/
Alias /images /usr/local/mailman/icons
ScriptAlias /admin /usr/local/mailman/cgi-bin/admin
ScriptAlias /admindb /usr/local/mailman/cgi-bin/admindb
ScriptAlias /confirm /usr/local/mailman/cgi-bin/confirm
ScriptAlias /create /usr/local/mailman/cgi-bin/create
ScriptAlias /edithtml /usr/local/mailman/cgi-bin/edithtml
ScriptAlias /listinfo /usr/local/mailman/cgi-bin/listinfo
ScriptAlias /options /usr/local/mailman/cgi-bin/options
ScriptAlias /private /usr/local/mailman/cgi-bin/private
ScriptAlias /rmlist /usr/local/mailman/cgi-bin/rmlist
ScriptAlias /roster /usr/local/mailman/cgi-bin/roster
ScriptAlias /subscribe /usr/local/mailman/cgi-bin/subscribe
ScriptAlias /mailman /usr/local/mailman/cgi-bin
ScriptAlias / /usr/local/mailman/cgi-bin/listinfo
</VirtualHost>

mkdir /var/www/lists
a2ensite list
/etc/init.d/apache2 reload


Now edit the
vim /usr/local/mailman/Mailman/mm_cfg.py

IMAGE_LOGOS = '/images/'
DEFAULT_URL_PATTERN = 'http://%s/'
DEFAULT_EMAIL_HOST = 'mail.test.com'
DEFAULT_URL_HOST = 'lists.test.com'

For postfix support,

vim /etc/postfix/main.cf

recipient_delimiter = +
unknown_local_recipient_reject_code = 550
transport_maps = hash:/etc/postfix/transport
relay_domains = mail.test.com
mailman_destination_recipient_limit = 1
mydestination = $myhostname, localhost.$mydomain, localhost mail.test.com

vim /etc/postfix/transport

mail.test.com      mailman:

/etc/init.d/postfix restart

Now create a new maillist. We can create it  either command line or through web interface,

command line -

/usr/local/mailman/bin/newlist --urlhost=lists.test.com --emailhost=mail.test.com mailman

mailman is the name of the list.

This will give you the entries we need to add to our aliases file, that is ..

vim /etc/aliases

mailman:              "|/usr/local/mailman/mail/mailman post mailman"
mailman-admin:        "|/usr/local/mailman/mail/mailman admin mailman"
mailman-bounces:      "|/usr/local/mailman/mail/mailman bounces mailman"
mailman-confirm:      "|/usr/local/mailman/mail/mailman confirm mailman"
mailman-join:         "|/usr/local/mailman/mail/mailman join mailman"
mailman-leave:        "|/usr/local/mailman/mail/mailman leave mailman"
mailman-owner:        "|/usr/local/mailman/mail/mailman owner mailman"
mailman-request:      "|/usr/local/mailman/mail/mailman request mailman"
mailman-subscribe:    "|/usr/local/mailman/mail/mailman subscribe mailman"
mailman-unsubscribe:  "|/usr/local/mailman/mail/mailman unsubscribe mailman"

Then type command,

newaliases

chown mailman.mailman /etc/aliases.db /etc/aliases

/etc/init.d/postfix restart

Now we can start mailman service,

/usr/local/mailman/scripts/mailman start

(for stopping /usr/local/mailman/scripts/mailman stop)

Admin interface - http://lists.test.com/admin

Lists of available maillists - http://lists.test.com/listinfo

For creating mailing list through interface,

/usr/local/mailman/bin/mmsitepass <mailman-password>

http://lists.test.com/create


Now we can subscribe to any mailing list through http://lists.test.com/listinfo. A confirmation mail will be send to your mail account and then you are done.

Now send mails to <listname>@mail.test.com for example (mailman@mail.test.com), It will be forwarded to all members in the mailing list.

This will be also archived in our website - http://lists.test.com/pipermail/mailman/


Thanks for reading.

Cheers /-

No comments:

Post a Comment