--- /dev/null
+#! /bin/sh
+set -e
+
+if ([ "$1" != subscribe ] && [ "$1" != unsubscribe ]) || \
+ [ -z "$2" ] || [ -z "$3" ]; then
+ echo "Usage: $0 subscribe|unsubscribe list address" 2>&1
+ exit 1
+fi
+
+ACTION="$1"
+LIST="${2%%@*}"
+ADDRESS="$3"
+
+DRAFT=`tempfile`
+trap 'rm -f "$DRAFT"' EXIT ERR HUP INT QUIT TERM
+
+cat >"$DRAFT" <<EOF
+From: Colin Watson <$ADDRESS>
+To: $LIST-request@lists.debian.org
+Subject: $ACTION $ADDRESS
+Fcc: =debian/lists
+
+$ACTION $ADDRESS
+EOF
+
+mutt -H "$DRAFT"
+
+exit 0