A procmail based script to run simple and small mailing lists
kiss_procmail_list.rc allows to create simple and small mailing lists to facilitate e-mail communication of a bunch of people. It is definitely no replacement for full-blown mailing lists such as provided by Mailman. It's for cases where all their features are not required and the number of participants fit into a procmail recipe ;-)
The script is installed in the .procmailrc
of the person who will be the list-moderator, who will be in charge of subscribing and unsubscribing participants and who will receive messages which were intended for the list but didn't fit the criteria.
So, create an alias address for the list that points to the account where the script is included. For example, add the following to /etc/aliases
assuming that coolrat
is the username of the list-moderator:
example-l: coolrat
In coolrat
's .procmailrc
setup the list by setting the required variables (see the script for details) and then INCLUDERC the script itself. For example:
# KISS example mailing list LISTNAME="eXample-L" LISTADDRESS="$LISTNAME@example.net" LISTFILE="$HOME/example_list_subscribers.txt" INCLUDERC="$HOME/kiss_procmail_list.rc"
Finally, we need to add the e-mail addresses of the participants to example_list_subscribers.txt
. The format is 1 address per line wrapped in <
and >
. For example:
<coolrat@example.net> <coolalias@example.net> nomail <otherrat@example.org>
When I installed the script on my account running Postfix my own address was of course included and triggered Postfix' mail forwarding loop detection. So, we need to carefully work around it. Here's an example of what I used:
# --- KISS mailing list example for Postfix # deliver list moderation messages straight away :0 * ^List-Kiss: $DEFAULT LISTNAME="eXample-L" LISTADDRESS="$LISTNAME@example.net" LISTFILE="$HOME/example_list_subscribers.txt" :0 * $ ^((Resent-)?To|CC): (.*<)?$LISTADDRESS(>|$) { # workaround postfix mail loop bouncing for our own address :0 f * !$ ^(From|Return-Path:|List-Id:) .*$LISTNAME * ^Delivered-To: coolrat@example\.net$ | formail -I Delivered-To: # other settings, e.g. LISTMAXSIZE=999999 INCLUDERC="$HOME/kiss_procmail_list.rc" }
kiss_procmail_list.rc + helper script example kiss_procmail_list_mod.sh
For the old version 1 of the script see kiss_procmail_list1.rc.
Use at your own risk! Not much tested yet, tried only on Debian 7 & 8. Feedback and bug reports welcome.
From: someone@example.com (Name)
is required, currently, it is recommended to rewrite the header before it hits our script.