Browse Source

ensure signup/subscribe responses have the group alias in the name

Pi 1 year ago
parent
commit
c99061c2ce

+ 2 - 4
cropswap-postmaster.sh

@@ -1,18 +1,16 @@
 #!/bin/bash
 set -euo pipefail
 ACTION="$1"
-GROUP="$2"
-FROM="$3"
+FROM="$2"
 
 if [ "$ACTION" == "SIGNUP" ]; then
 	TO=postmaster@localhost
 	HEADER="$(cat <<EOF
 $(cat -)
-X-GROUP: $GROUP
 EOF
 )"
 else
-	TO="$GROUP"
+	TO=$(cat - | formail -X 'X-GROUP')
 	HEADER="X-IGNORED:"
 fi
 

+ 11 - 2
cropswap-register.sh

@@ -3,10 +3,19 @@ set -euo pipefail
 GROUP="$1"
 ALIAS="$2"
 EMAIL="$3"
+declare -A GROUPALIASES=(
+	["cropswap@shandan.one"]="Crop Swap Notices"
+	["cropswap-members@shandan.one"]="Crop Swap Members"
+)
 
 SCRIPTDIR=$(readlink -e "${BASH_SOURCE[0]%/*}")
-${SCRIPTDIR}/cropswap-postmaster.sh SIGNUP "$GROUP" "$EMAIL" <<EOF
+
+${SCRIPTDIR}/cropswap-postmaster.sh SIGNUP "$EMAIL" <<EOF
+X-GROUP: $GROUP
+X-GROUP-ALIAS: ${GROUPALIASES[$GROUP]}
 X-MEMBER-ALIAS: $ALIAS
 X-AUTH:
 EOF
-${SCRIPTDIR}/cropswap-postmaster.sh SUBSCRIBE "$GROUP" "$EMAIL"
+${SCRIPTDIR}/cropswap-postmaster.sh SUBSCRIBE "$EMAIL" <<EOF
+X-GROUP: $GROUP
+EOF

+ 1 - 1
cropswap-reply.sh

@@ -4,7 +4,7 @@ if ((DEBUG != 0)); then
 	SENDMAIL="$DEBUGMAIL"
 fi
 /usr/bin/mailbot -N -t $RESP \
-	-A 'From: $MAILGROUP' \
+	-A "From: $MAILGROUPALIAS <$MAILGROUP>" \
 	-A "List-Id: $MAILGROUP" \
 	-A "List-Unsubscribe: <mailto:$MAILGROUP?subject=[UNSUBSCRIBE]>" \
 	-A "List-Subscribe: <mailto:$MAILGROUP?subject=[SUBSCRIBE]>" \

+ 1 - 0
filters/cropswap-members@shandan.one

@@ -7,6 +7,7 @@ if (!$CONTINUE)
    CONTINUE=1
    TOMEMBER=1
    MAILGROUP=$MEMBERGROUP
+   MAILGROUPALIAS="Crop Swap Members"
    SUBJECT="Crop Swap Member"
 }
 elsif ($CONTINUE)

+ 1 - 0
filters/cropswap@shandan.one

@@ -7,6 +7,7 @@ if (!$CONTINUE)
    CONTINUE=1
    TOORGANIZER=1
    MAILGROUP=$ORGANIZERGROUP
+   MAILGROUPALIAS="Crop Swap Notices"
 }
 elsif ($CONTINUE)
 {

+ 4 - 0
filters/postmaster@localhost

@@ -16,6 +16,10 @@ if (!$CONTINUE)
       TOMEMBER=1
       MAILGROUP=$MATCH1
    }
+   if (/^X\-GROUP\-ALIAS:\s*(.*)\s*$/)
+   {
+      MAILGROUPALIAS=$MATCH1
+   }
 }
 elsif ($CONTINUE)
 {

+ 12 - 4
test-cropswap@shandan.one.sh

@@ -18,16 +18,24 @@ cd "$MAILDROPDIR"
 mkdir cropswap@shandan.one
 ${SCRIPTDIR}/cropswap-register.sh cropswap@shandan.one "Member" "member1@mail.com" &>/dev/null
 ${SCRIPTDIR}/cropswap-register.sh cropswap@shandan.one "Member" "member2@mail.com" &>/dev/null
-${SCRIPTDIR}/cropswap-postmaster.sh SIGNUP cropswap@shandan.one organizer1@mail.com <<EOF &>/dev/null
+${SCRIPTDIR}/cropswap-postmaster.sh SIGNUP organizer1@mail.com <<EOF &>/dev/null
 X-MEMBER-ALIAS: Organizer
 X-AUTH: admin
+X-GROUP: cropswap@shandan.one
+X-GROUP-ALIAS: cropswap@shandan.one
 EOF
-${SCRIPTDIR}/cropswap-postmaster.sh SUBSCRIBE cropswap@shandan.one organizer1@mail.com &>/dev/null
-${SCRIPTDIR}/cropswap-postmaster.sh SIGNUP cropswap@shandan.one organizer2@mail.com <<EOF &>/dev/null
+${SCRIPTDIR}/cropswap-postmaster.sh SUBSCRIBE organizer1@mail.com <<EOF &>/dev/null
+X-GROUP: cropswap@shandan.one
+EOF
+${SCRIPTDIR}/cropswap-postmaster.sh SIGNUP organizer2@mail.com <<EOF &>/dev/null
 X-MEMBER-ALIAS: Organizer
 X-AUTH: admin
+X-GROUP: cropswap@shandan.one
+X-GROUP-ALIAS: cropswap@shandan.one
+EOF
+${SCRIPTDIR}/cropswap-postmaster.sh SUBSCRIBE organizer2@mail.com <<EOF &>/dev/null
+X-GROUP: cropswap@shandan.one
 EOF
-${SCRIPTDIR}/cropswap-postmaster.sh SUBSCRIBE cropswap@shandan.one organizer2@mail.com &>/dev/null
 
 set -x
 maildrop -funregistered@mail.com < ${SCRIPTDIR}/tests/cropswap@shandan.one/from-unregistered.eml 1>forward.out 2>forward.err

+ 25 - 17
test-signup.sh

@@ -15,34 +15,42 @@ cd "$MAILDROPDIR"
 
 #
 # TEST SIGNUP
-for g in "" "-members"; do
-	mkdir -p cropswap${g}@shandan.one
-	${SCRIPTDIR}/cropswap-postmaster.sh SIGNUP "cropswap${g}@shandan.one" admin@mail.com <<EOF 1> reply.out 2> reply.err
+set -x
+cat <<EOF | while read group alias; do
+cropswap@shandan.one Crop Swap Notices
+cropswap-members@shandan.one Crop Swap Members
+EOF
+	mkdir -p "${group}"
+	${SCRIPTDIR}/cropswap-postmaster.sh SIGNUP admin@mail.com <<EOF 1> reply.out 2> reply.err #|| cat reply.err && exit 1
 X-MEMBER-ALIAS: Admin
+X-GROUP-ALIAS: $alias
+X-GROUP: $group
 X-AUTH: admin
 EOF
 	grep 'You have been registered as a member' reply.out
-	grep '^\+Admin$' "cropswap${g}@shandan.one"/alist.txt
-	grep '^\+admin@mail.com$' cropswap${g}@shandan.one/alist.txt
+	grep '^\+Admin$' "${group}/alist.txt"
+	grep '^\+admin@mail.com$' "${group}/alist.txt"
 
-	${SCRIPTDIR}/cropswap-postmaster.sh SUBSCRIBE "cropswap${g}@shandan.one" admin@mail.com <<EOF 1> reply.out 2> reply.err
+	${SCRIPTDIR}/cropswap-postmaster.sh SUBSCRIBE admin@mail.com <<EOF 1> reply.out 2> reply.err #|| cat reply.err && exit 1
+X-GROUP: $group
 EOF
 	grep 'Your subscription status has been updated successfully' reply.out
-	grep '^\+Admin$' "cropswap${g}@shandan.one"/slist.txt
-	grep '^\+admin@mail.com$' cropswap${g}@shandan.one/slist.txt
-done
-for g in "" "-members"; do
-	mkdir -p cropswap${g}@shandan.one
-	${SCRIPTDIR}/cropswap-postmaster.sh SIGNUP "cropswap${g}@shandan.one" non-admin@mail.com <<EOF 1> reply.out 2> reply.err
+	grep '^\+Admin$' "${group}/slist.txt"
+	grep '^\+admin@mail.com$' "${group}/slist.txt"
+
+	${SCRIPTDIR}/cropswap-postmaster.sh SIGNUP non-admin@mail.com <<EOF 1> reply.out 2> reply.err
 X-MEMBER-ALIAS: Non-admin
+X-GROUP-ALIAS: $alias
+X-GROUP: $group
 EOF
 	grep 'You have been registered as a member' reply.out
-	! grep '^\+Non\-admin$' "cropswap${g}@shandan.one"/alist.txt
-	! grep '^\+non-admin@mail.com$' cropswap${g}@shandan.one/alist.txt
+	! grep '^\+Non\-admin$' "${group}/alist.txt"
+	! grep '^\+non-admin@mail.com$' "${group}/alist.txt"
 
-	${SCRIPTDIR}/cropswap-postmaster.sh SUBSCRIBE "cropswap${g}@shandan.one" non-admin@mail.com <<EOF 1> reply.out 2> reply.err
+	${SCRIPTDIR}/cropswap-postmaster.sh SUBSCRIBE non-admin@mail.com <<EOF 1> reply.out 2> reply.err
+X-GROUP: $group
 EOF
 	grep 'Your subscription status has been updated successfully' reply.out
-	grep '^\+Non\-admin$' "cropswap${g}@shandan.one"/slist.txt
-	grep '^\+non-admin@mail.com$' cropswap${g}@shandan.one/slist.txt
+	grep '^\+Non\-admin$' "${group}/slist.txt"
+	grep '^\+non-admin@mail.com$' "${group}/slist.txt"
 done