|
@@ -7,15 +7,29 @@ SHELL="/bin/bash"
|
|
|
SENDMAIL="/opt/cropswap/sendmail.sh"
|
|
|
SUBUNSUB="/opt/cropswap/subunsub.sh"
|
|
|
DEBUGMAIL="/opt/cropswap/debug.sh"
|
|
|
-MLIST="/var/mail/maildrop/mlist"
|
|
|
-SLIST="/var/mail/maildrop/slist"
|
|
|
+
|
|
|
+POSTMASTER="postmaster@localhost"
|
|
|
+POSTMASTERREGEX=escape($POSTMASTER)
|
|
|
+
|
|
|
+# bi-directional group
|
|
|
+# From subscribed member -> other subscribed members
|
|
|
+MEMBERGROUP="cropswap-members@shandan.one"
|
|
|
+MEMBERGROUPREGEX=escape($MEMBERGROUP)
|
|
|
+
|
|
|
+# uni-directional group
|
|
|
+# From anyone -> organizers
|
|
|
+# From organizers -> subscribed members
|
|
|
+ORGANIZERGROUP="cropswap@shandan.one"
|
|
|
+ORGANIZERGROUPREGEX=escape($ORGANIZERGROUP)
|
|
|
|
|
|
SUFFIX=0
|
|
|
|
|
|
-HANDLE=0
|
|
|
FORWARD=0
|
|
|
SUBSCRIBE=""
|
|
|
CONTINUE=0
|
|
|
+TOPOSTMASTER=0
|
|
|
+TOORGANIZER=0
|
|
|
+TOMEMBER=0
|
|
|
|
|
|
UNHANDLED=5
|
|
|
BADREQUEST=4
|
|
@@ -26,13 +40,27 @@ FATAL=1
|
|
|
foreach /^(To|Cc):.*/
|
|
|
{
|
|
|
ADDR=getaddr($MATCH)
|
|
|
- foreach $ADDR =~ /^postmaster@localhost$/
|
|
|
+ foreach (tolower $ADDR) =~ /^$POSTMASTER$/
|
|
|
+ {
|
|
|
+ if (/^X\-GROUP:\s*$ORGANIZERGROUPREGEX\s*$/)
|
|
|
+ {
|
|
|
+ TOORGANIZER=1
|
|
|
+ }
|
|
|
+ if (/^X\-GROUP:\s*$MEMBERGROUPREGEX\s*$/)
|
|
|
+ {
|
|
|
+ TOORGANIZER=1
|
|
|
+ }
|
|
|
+ CONTINUE=1
|
|
|
+ TOPOSTMASTER=1
|
|
|
+ }
|
|
|
+ foreach (tolower $ADDR) =~ /^$ORGANIZERGROUPREGEX$/
|
|
|
{
|
|
|
+ TOORGANIZER=1
|
|
|
CONTINUE=1
|
|
|
- HANDLE=1
|
|
|
}
|
|
|
- foreach $ADDR =~ /^cropswap@shandan\.one$/
|
|
|
+ foreach $ADDR =~ /^$MEMBERGROUPREGEX$/
|
|
|
{
|
|
|
+ TOMEMBER=1
|
|
|
CONTINUE=1
|
|
|
}
|
|
|
}
|
|
@@ -42,7 +70,38 @@ if (!$CONTINUE)
|
|
|
exit
|
|
|
}
|
|
|
|
|
|
-if ($HANDLE)
|
|
|
+if ($TOMEMBER && $TOORGANIZER)
|
|
|
+{
|
|
|
+ cc "|$DEBUGMAIL multiplemembergroupset"
|
|
|
+ EXITCODE=$BADREQUEST
|
|
|
+ exit
|
|
|
+}
|
|
|
+
|
|
|
+if ($TOMEMBER)
|
|
|
+{
|
|
|
+ MAILGROUP=$MEMBERGROUP
|
|
|
+ SUBJECT="Crop Swap Member"
|
|
|
+}
|
|
|
+elsif ($TOORGANIZER)
|
|
|
+{
|
|
|
+ MAILGROUP=$ORGANIZERGROUP
|
|
|
+ SUBJECT="Crop Swap Notice"
|
|
|
+}
|
|
|
+else
|
|
|
+{
|
|
|
+ cc "|$DEBUGMAIL nomembergroupset"
|
|
|
+ EXITCODE=$FATAL
|
|
|
+ exit
|
|
|
+}
|
|
|
+LISTDIR="/var/mail/maildrop/$MAILGROUP"
|
|
|
+MLIST="$LISTDIR/mlist"
|
|
|
+SLIST="$LISTDIR/slist"
|
|
|
+
|
|
|
+#cc "|$DEBUGMAIL inspect"
|
|
|
+#EXITCODE=$FATAL
|
|
|
+#exit
|
|
|
+
|
|
|
+if ($TOPOSTMASTER)
|
|
|
{
|
|
|
if (/^Subject:\s*\[SIGNUP\]\s*$/)
|
|
|
{
|