# Global maildrop filter file # Uncomment this line to make maildrop default to ~/Maildir for # delivery- this is where courier-imap (amongst others) will look. #DEFAULT="$HOME/Maildir" SHELL="/bin/bash" SENDMAIL="/home/pi/cropswap-sendmail.sh" REPLYMAIL="/home/pi/cropswap-replymail.sh" MLIST="/home/pi/mlist" SLIST="/home/pi/slist" SUBUNSUB="/home/pi/cropswap-subunsub.sh" SUFFIX=0 HANDLE=0 FORWARD=0 SUBSCRIBE="" CONTINUE=0 UNHANDLED=5 BADREQUEST=4 UNREGISTERED=3 UNSUBSCRIBED=2 FATAL=1 foreach /^(To|Cc):.*/ { ADDR=getaddr($MATCH) foreach $ADDR =~ /^postmaster@localhost$/ { CONTINUE=1 HANDLE=1 } foreach $ADDR =~ /^cropswap@shandan\.one$/ { CONTINUE=1 } } if (!$CONTINUE) { EXITCODE=$UNHANDLED exit } if ($HANDLE) { if (/^Subject:\s*\[SIGNUP\]\s*$/) { if (/^X-MEMBER-ALIAS:\s*(.*)\s*$/) { gdbmopen($MLIST, "W") ALIAS=$MATCH1 KEY=$ALIAS EXISTS=gdbmfetch($ALIAS) while ($EXISTS ne "" && $EXISTS ne gdbmfetch(tolower($FROM))) { SUFFIX=($SUFFIX + 1) KEY="$ALIAS $SUFFIX" EXISTS=gdbmfetch($KEY) } if (gdbmstore(tolower($FROM), $ALIAS) == 0 && gdbmstore($ALIAS, tolower($FROM)) == 0) { gdbmclose #TODO: mailbot - You have been registered as $ALIAS exit } else { gdbmclose EXITCODE=$FATAL exit } } EXITCODE=$BADREQUEST # No response to unregistered users exit } #cc "|$REPLYMAIL" EXITCODE=$UNHANDLED # No response to unregistered users exit } gdbmopen($MLIST, "R") ALIAS=gdbmfetch(tolower($FROM)) if ($ALIAS eq "") { gdbmclose EXITCODE=$UNREGISTERED exit } gdbmclose # # REGISTERED USERS ONLY # if (/^Subject:\s*\[(SUBSCRIBE|UNSUBSCRIBE)\]\s*$/) { SUBSCRIBE=$MATCH1 } if ($SUBSCRIBE ne "") { gdbmopen($SLIST, "W") if (gdbmstore(tolower($FROM), $SUBSCRIBE) == 0) { gdbmclose system "$SUBUNSUB '$SUBSCRIBE' '$ALIAS' '$FROM'" exit } else { gdbmclose EXITCODE=$FATAL exit } } gdbmopen($SLIST, "R") FORWARD=(gdbmfetch(tolower($FROM)) eq "SUBSCRIBE") gdbmclose if (!$FORWARD) { EXITCODE=$UNSUBSCRIBED exit } # # SUBSCRIBED USERS ONLY # NOFORWARD=$FROM FROM=$ALIAS to "!"