Table of Contents


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

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:

<> nomail

Postfix forwarding loop workaround

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
* ^List-Kiss:
* $ ^((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:


kiss_procmail_list.rc + helper script example

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.

The script checks whether the sender's "From:" address is "subscribed" to the list. Optionally, this can be turned off, and one can setup other means of sender verification.
If support for the syntax From: (Name) is required, currently, it is recommended to rewrite the header before it hits our script.
It'd be trivial to add VERP but it's pointless since the number of participants should be small anyway and bounces are handled manually.
Probably, one could work around this limitation with some more procmail foo. Right now, the script is a "delivering recipe". So, even if it is included/run multiple times, a single message is delivered only once unless a "c" flag is used to generate a carbon copy.