123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- 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
-
- exit
- }
- else
- {
- gdbmclose
- EXITCODE=$FATAL
- exit
- }
- }
- EXITCODE=$BADREQUEST
-
- exit
- }
-
- EXITCODE=$UNHANDLED
-
- exit
- }
- gdbmopen($MLIST, "R")
- ALIAS=gdbmfetch(tolower($FROM))
- if ($ALIAS eq "")
- {
- gdbmclose
- EXITCODE=$UNREGISTERED
- exit
- }
- gdbmclose
- 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
- }
- NOFORWARD=$FROM
- FROM=$ALIAS
- to "!"
|