Procmail Mailinglist (Variante 2)

.procmailrc (Für das Postfach in dem eingehende Mails an die Mailinglist(s) terminieren):

procmailrc
SHELL=/bin/bash
 
VERBOSE=no
#LOGFILE=/tmp/procmail-vt.log
#LOGABSTRACT=all
 
FROM=`formail -xFrom: | sed -e 's/ *(.*)//; s/>.*//; s/.*[:<] *//'`
 
###########################################################
 
:0
* ^To:.*ml1@
* ? fgrep -qxis $FROM /home/.mailinglists/user1/list1
| /usr/local/bin/fire-mailinglist "/home/.mailinglists/user1/list1" "ML1"
 
###########################################################
 
:0
* ^To:.*ml2@
* ? fgrep -qxis $FROM /home/.mailinglists/user1/list2
| /usr/local/bin/fire-mailinglist "/home/.mailinglists/user1/list2" "ML2"
 
###########################################################
 
:0
| /dev/null
 
fire-mailinglist
#!/bin/bash
 
MAIL=$(cat /dev/stdin)
 
FROM=$(echo "${MAIL}" | formail -xFrom: | sed -e 's/ *(.*)//; s/>.*//; s/.*[:<] *//')
 
if [ "x${2}" != "x" ]; then
	MAIL=$(echo "${MAIL}" | /bin/sed -e "s/Subject: /Subject: \x5B${2}\x5D /g")
fi
 
if [ "x${1}" != "x" ]; then
	if [ -f "${1}" ]; then
		for RECP in $(cat ${1}); do
			MAIL=$(echo "$MAIL" | formail -I "To: ${RECP}")
			echo "${MAIL}" | /usr/sbin/sendmail -t -r "${FROM}"
		done
	fi
fi

/home/.mailinglists/user1/list1 (Auflistung der Empfänger, eine E-Mail Adresse pro Zeile):

mail1@domain
mail2@domain
mail3@domain

/home/.mailinglists/user1/list2 (Auflistung der Empfänger, eine E-Mail Adresse pro Zeile):

mail3@domain
mail4@domain
mail5@domain

Beliebig erweiterbar. :)