How to Install GNU Mailman on Ubuntu 16.04 with Postfix, Nginx and FastCGI
GNU mailman is free and open-source web-based mailing list manager written in Python. It’s commonly used by open-source projects. In this tutorial, we are going to install GNU mailman on Ubuntu 16.04 with Nginx and FastCGI.
Prerequisites
Mailman only provides a web administration interface. It does not send or receive emails by itself but relies on external SMTP server such as Postfix.
It’s assumed that you already have Postfix properly installed. If not, check out the following tutorial.
With that out of the way, let’s get started with installing GNU Mailman.
Step 1: Install GNU Mailman
We can install GNU Mailman from repository.
sudo apt update sudo apt install mailman
During the installation, you will be asked to select languages for Mailman. Use arrow key to move up and down. Use space bar to select your language. A star character indicates the language is selected.
After that, it prompts you to create a new list. Hit OK, then run the following command to create the mailman
list.
sudo newlist mailman
Enter the list admin email address and set a password. Then edit /etc/aliases file.
sudo nano /etc/aliases
Copy and paste the following lines into the file.
## 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"
Save and close the file. Run the following command to update the alias index file.
sudo newaliases
Restart Postfix SMTP server.
sudo systemctl restart postfix
Start the Mailman program.
sudo systemctl start mailman
Step 2: Install FCGIWrap
To properly display the Mailman web interface, we need to install fcgiwrap
package which allow us to run CGI applications with FastCGI and Nginx.
sudo apt install fcgiwrap
Once installed, fcgiwrap will run automatically, as can seen by issuing this command:
systemctl status fcgiwrap
Output:
● fcgiwrap.service - Simple CGI Server
Loaded: loaded (/lib/systemd/system/fcgiwrap.service; indirect; vendor preset: enabled)
Active: active (running) since Mon 2016-12-12 01:25:20 EST; 4min 27s ago
Main PID: 27780 (fcgiwrap)
CGroup: /system.slice/fcgiwrap.service
└─27780 /usr/sbin/fcgiwrap -f
We need to make sure FCGI and Nginx run as the same user (www-data
). Edit the /etc/init.d/fcgiwrap
shell script.
sudo nano /etc/init.d/fcgiwrap
Find the FCGI_USER
and FCGI_GROUP
variables. The value should be www-data
. If not, change it.
FCGI_USER="www-data" FCGI_GROUP="www-data"
After that, restart fcgiwrap
service.
sudo systemctl restart fcgiwrap
fcgiwrap service listens on /var/run/fcigwrap.socket
by default.
Step 3: Setting up Nginx Server Block
Install Nginx with:
sudo apt install nginx
To access Mailman from a sub-directory of your existing website, edit the server block file of your website.
sudo nano /etc/nginx/conf.d/your-site.conf
Put the following lines in the server
section.
location /cgi-bin/mailman { root /usr/lib/; fastcgi_split_path_info (^/cgi-bin/mailman/[^/]*)(.*)$; include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; fastcgi_intercept_errors on; fastcgi_pass unix:/var/run/fcgiwrap.socket; } location /images/mailman { alias /usr/share/images/mailman; } location /pipermail { alias /var/lib/mailman/archives/public; autoindex on; }
Save and close the file. Then test Nginx configuration and reload.
sudo nginx -t sudo systemctl reload nginx
Now you can access Mailman admin page via the following URL and create new mailing lists.
www.your-site.com/cgi-bin/mailman/admin/
That’s it!
I hope this article helped you install GNU Mailman with Nginx on Ubuntu 16.04. As always, if you found this post useful, then subscribe to our free newsletter. You can also follow us on Google+, Twitter or like our Facebook page.