|
@@ -0,0 +1,139 @@
|
|
|
+# 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 "!"
|
|
|
+
|