Setup of the mailing lists


# for administration of mlmmj
recipient_delimiter = +

# to talk to rspamd for dmarc munging


# to map the ml with the proper transport
virtual_alias_maps = hash:/usr/local/mlmmj/virtual
transport_maps = hash:/usr/local/mlmmj/transport
propagate_unmatched_extensions = virtual

mlmmj    unix  -       n       n       -       -       pipe
    flags=ORhu user=mailman argv=/usr/local/bin/mlmmj-receive -F -L /usr/local/mlmmj/lists/$nexthop



munging {
        list_map =  "/usr/local/mlmmj/rspamd-munging";
        mitigate_strict_only = true;




Home made scripts


Directory containing all the mailing lists


static html assets


list of mboxes corresponding to archive backups, if archives should be rebuilt they will be rebuilt from there


mboxes for archived mailing lists


html generated mailing archive for archived mailing lists


directory where the subscriptions will be handled


virtual mapping of mailing lists email and internal email for postfix (run postmap on it once modified) should contain 1 entry per valid email for a given mailing list


mapping between internal email and transport for postfix) run porstmap on it once modified should contain 1 entry per mailing list


Directory where the html archives will be generated


list of mailing list to activate munging on, one per line

maintenance (bounce etc)

the mlmmj-maintd daemon is run every 5 minutes to handle all the maintenance via crontab


$ cat /usr/local/etc/cron.d/mlmmj
*/5     *       *       *       *       mailman /usr/local/mlmmj/bin/
*/2     *       *       *       *       mailman /usr/local/mlmmj/bin/
*/5     *       *       *       *       mailman /usr/local/bin/mlmmj-maintd -F -d /usr/local/mlmmj/lists


Archives are run via hypermail if a mailing lists have at its root directory a file named noarchive, then the incremental upgrade will stop running The configuration is done in hmrc


folder_by_date = "%Y-%B"
usegdbm = "1"
indextable = "0"
reverse = "1"
reverse_folders = 1
describe_folder = "%B %Y"
require_msgids = 0
discard_dup_msgids = 0
gmtime = 1
monthly_index = 1
message_pattern = %.6d
file_by_thread = true
href_detection = true
thrdlevels = 2
monthly_index = 1
yearly_index = 1
thread_file_depth = 1

ihtmlheaderfile=        /usr/local/etc/hypermail/index-header.hyp
mhtmlheaderfile=        /usr/local/etc/hypermail/msg-header.hyp
ihtmlfooterfile=        /usr/local/etc/hypermail/index-footer.hyp
mhtmlfooterfile=        /usr/local/etc/hypermail/msg-footer.hyp

Regenerating from scratch the archives

/!\ Do this as user mailman /!\

$ hypermail -c /usr/local/etc/hmrc -o append=0 -a "/index" -m /usr/local/mlmmj/mboxes/freebsd-test.mbox -l "freebsd-test: Test posting area" -u -x -d /usr/local/mlmmj/webarchive/freebsd-test

Incremental updates

The incremental updates are performed by crontab via the script

It will take all untreated files from /usr/local/mlmmj/lists/ml/archive and pass them through mexport (from the mblaze package) to generate a mbox formatted output which will be piped to hypermail

The untreated files are the files which filename is a number higer then the last number recorded in the lastindex file

As a result the mbox of the mailing will be prepended with the new mails and the html archives updated

The script runs every 5 minutes


Small CGI to handle subscription and links to archive It should run as user ***nobody***

It takes /usr/local/mlmmj/list as an entry file to determine what it should show to the user

The subscription will be written in files in /var/spool/mlmmj-webview/subscribe The unsubscription will be written in files in /var/spool/mlmmj-webview/unscubsribe

a crontab will every 2 minutes look at new (un)subscriptions here and dedup them and proceed The script being /usr/local/mlmmj/bin/


list_members [mailinglist]

list the members of a given mailing list


list the public mailing lists -n name -d description

create a new mailing list

incrementally update the web archives and mbox

deal with pending (un)subscriptions

lookup all html files in webarchive and try to convert to unicode what can be converted to it

Teams/clusteradm/MailingLists (last edited 2021-05-12T00:40:33+0000 by DanLangille)