Contents
Description
Mailman is a mailing list manager. It's old, but very stable and very decent. The current running version uses Python 2. This is the installation on FreeBSD 12.1.
Installation
On FreeBSD:
pkg install mailman
Configuration
DNS
Watch out using FreeBSD and sendmail! If you want to have a single hostname as a domain for your mailinglist server, you can't have a CNAME in your DNS. So the next is WRONG! I run into some trouble that my virtual domain was detected as a local domain and so the virtual mailinglist tables didn't worked.
lists.example.org. 3600 CNAME smtp.example.org. lists.example.org. 3600 MX 10 smtp.example.org.
This is right:
lists.example.org. 3600 A 1.2.3.4 lists.example.org. 3600 MX 10 smtp.example.org.
Webserver
Hiawatha
First, set the execution user in the file /usr/local/etc/hiawatha/cgi-wrapper.conf. Add the next line to the file:
Wrap = mailman ; /usr/local/mailman/cgi-bin ; www:www
Then, make cgi exectutable in /usr/local/etc/hiawatha/hiawatha.conf by adding this line:
CGIextension = cgi
In your virtual host configuration, add an executable directory and make it an alias:
Directory { DirectoryID = dir_mailman Path = /mailman/ ShowIndex = no StartFile = listinfo ExecuteCGI = yes TimeForCGI = 10 WrapCGI = mailman } VirtualHost { ... Alias /mailman:/usr/local/mailman/cgi-bin Alias /pipermail:/usr/local/mailman/archives/public Alias /icons:/usr/local/mailman/icons NoExtensionAs = cgi EnablePathInfo = yes UseDirectory = dir_mailman ... }
Configuration
The configuration is done in /usr/local/mailman/Mailman/mm_cfg.py. Make your changes here, only if they are system wide! Look the default up in Defaults.py. Example settings to change are:
- DEFAULT_EMAIL_HOST
- DEFAULT_URL_HOST
Create the default mailinglist
After you have completed the integration of Mailman and your mail server, you need to create a site-wide mailing list. This is the one that password reminders will appear to come from, and it is required for proper Mailman operation. Usually this should be a list called mailman, but if you need to change this, be sure to change the MAILMAN_SITE_LIST variable in mm_cfg.py. You can create the site list with this command, following the prompts:
/usr/local/mailman/bin/newlist mailman
Now configure your site list. You should also subscribe yourself to the site list.
Create the passwords
There are two site-wide passwords that you can create from the command line, using the bin/mmsitepass script. The first is the site password which can be used anywhere a password is required in the system. The site password will get you into the administration page for any list, and it can be used to log in as any user. Think root for a Unix system, so pick this password wisely!
The second password is a site-wide list creator password. You can use this to delegate the ability to create new mailing lists without providing all the privileges of the site password. Of course, the owner of the site password can also create new mailing lists, but the list creator password is limited to just that special role. To set the site password, use this command:
/usr/local/mailman/bin/mmsitepass <your-site-password>
To set the list creator password, use this command:
/usr/local/mailman/bin/mmsitepass -c <list-creator-password>
- It is okay not to set a list creator password, but you probably do want a site password.
Start the mailinglist server
Make your mailman start at boot time by adding mailman to your /etc/rc.conf file and start the service.
Problems
SPF/DKIM
A lot of mailinglist emails will end up in the spamfolder of there clients. There is a solution for this. Change in the mailinlist admin page the option from_is_list to Munge From. This will resend the email and will be originated from the mailinlist email adres and not the sender. This could be seen as spoofing of a mail addres.
To avoid DKIM problems, add the following line your mm_cfg.py and restart Mailman afterwards. This will remove the DKIM headers so DKIM will not fail.
REMOVE_DKIM_HEADERS = 1