Mailman on ubuntu 16.04
Install apache2
sudo apt install apache2
Install postfix
sudo apt install postfix
Install mailman
sudo apt install mailman
Setup apache
sudo cp /etc/mailman/apache.conf /etc/apache2/sites-available/mailman.conf
sudo a2ensite mailman.conf
sudo a2enmod cgi
sudo a2enmod cgid
sudo service apache2 restart
Activate the MTA option on the mailman config file (/etc/mailman/mm_cfg.py). Write or uncomment this line:
MTA = 'Postfix'
Run the script to generate aliases.
sudo /usr/lib/mailman/bin/genaliases
Use the postconf command to add the necessary configuration to /etc/postfix/main.cf:
sudo postconf -e 'relay_domains = lists.example.com'
sudo postconf -e 'transport_maps = hash:/etc/postfix/transport'
sudo postconf -e 'mailman_destination_recipient_limit = 1'
sudo postconf -e 'alias_maps = hash:/etc/aliases, hash:/var/lib/mailman/data/aliases'
In /etc/postfix/master.cf double check that you have the following transport:
mailman unix - n n - - pipe
flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
${nexthop} ${user}
Edit the file /etc/postfix/transport:
lists.example.com mailman:
Now have Postfix build the transport map
sudo postmap -v /etc/postfix/transport
Then add mailman aliases in /etc/aliases
mailman: "|/var/lib/mailman/mail/mailman post mailman"
mailman-admin: "|/var/lib/mailman/mail/mailman admin mailman"
mailman-bounces: "|/var/lib/mailman/mail/mailman bounces mailman"
mailman-confirm: "|/var/lib/mailman/mail/mailman confirm mailman"
mailman-join: "|/var/lib/mailman/mail/mailman join mailman"
mailman-leave: "|/var/lib/mailman/mail/mailman leave mailman"
mailman-owner: "|/var/lib/mailman/mail/mailman owner mailman"
mailman-request: "|/var/lib/mailman/mail/mailman request mailman"
mailman-subscribe: "|/var/lib/mailman/mail/mailman subscribe mailman"
mailman-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe mailman"
Fix permissions of aliases files and restart postfix
sudo chown root:list /var/lib/mailman/data/aliases
sudo chown root:list /etc/aliases
sudo newaliases
sudo /etc/init.d/postfix restart
Create mailman list
$ sudo newlist mailman mailmanadm@mydomain.com
Enter the email of the person running the list: bhuvaneswaran at NOSPAM gmail.com
Initial mailman password:
To finish creating your mailing list, you must edit your /etc/aliases (orequivalent) file by adding the following lines, and possibly running the `newaliases' program:
## mailman mailing list
mailman: "|/var/lib/mailman/mail/mailman post mailman"
mailman-admin: "|/var/lib/mailman/mail/mailman admin mailman"
mailman-bounces: "|/var/lib/mailman/mail/mailman bounces mailman"
mailman-confirm: "|/var/lib/mailman/mail/mailman confirm mailman"
mailman-join: "|/var/lib/mailman/mail/mailman join mailman"
mailman-leave: "|/var/lib/mailman/mail/mailman leave mailman"
mailman-owner: "|/var/lib/mailman/mail/mailman owner mailman"
mailman-request: "|/var/lib/mailman/mail/mailman request mailman"
mailman-subscribe: "|/var/lib/mailman/mail/mailman subscribe mailman"
mailman-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe mailman"
Hit enter to notify mailman owner...
Edit /etc/aliases and run
$ sudo newaliases
Start mailman
$ sudo /etc/init.d/mailman start
Start mailman qrunner
$ sudo /var/lib/mailman/bin/mailmanctl start
Add members to list
$ vi ~/members
user1@mydomain.com
user2@mydomain.com
$ sudo /var/lib/mailman/bin/add_members -r ~/members -w y -a y mailman
Mailmain script location
/var/lib/mailman/bin
Change site password
sudo ./mmsitepass
Change list passoword
sudo ./change_pw -l <list name> -p <new password>
Discard pending post
sudo ./discard /var/lib/mailman/data/heldmsg-<list name>-<msg number>.pck
Reference: https://help.ubuntu.com/community/Mailman