Mailman is a mailing list manager. It's old, but very stable and very decent. The current running version still uses Python 2. This is the installation on FreeBSD 12.1.
On FreeBSD:
pkg install mailman
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.
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
...
}
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:
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.
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.
Make your mailman start at boot time by adding mailman to your /etc/rc.conf file and start the service.
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