# mailing list protocol! # depends on a bunch of files in $HOME/lists -- # a "listname.users" containing all of the users # and (optionally) a "listname.senders" if you want to restrict that SHELL=/bin/sh SENDMAIL=/usr/sbin/sendmail LINEBUF=10000000 :0 * ^To:.*list\+\/[a-z0-9_]+@tilde\.town LIST=| echo "$MATCH" | sed 's/@.*//' | sed 's/\(.\{16\}\).*/\1/' | tr '[:upper:]' '[:lower:]' :0A { :0A * ? [ -e ${HOME}/lists/${LIST}.users ] RECIPIENTS=| cat ${HOME}/lists/${LIST}.users | tr '\n' ' ' :0E { RECIPIENTS="" } } # Extract envelope sender. Email addresses are actually very complex # but we're on tilde.town so our email addresses aren't going to have spaces :0A * ^From \/[^ ]* ENV_SENDER=|echo "$MATCH" | sed "s/ .*//" :0A ENV_USER=|echo "$ENV_SENDER" | sed "s/@.*//" :0A { # If we have a restricted list of senders we should abort if it's not in there :0A * ? [ -e "${HOME}/lists/${LIST}.senders" ] { :0A * !? grep -F "${ENV_USER}" "${HOME}/lists/${LIST}.senders" # hack to quit procmailrc immediately (WHY) { EXITCODE=77 HOST= } } } :0Af | formail -a "X-Loop: list+${LIST}@tilde.town" -I "Reply-To: ${LIST} " -I "From: ${ENV_SENDER}" :0A { UMASK=003 :0c: archive/${LIST} } :0A ! ${RECIPIENTS}