##
docs_contribdir = $(docdir)/contrib
dist_docs_contrib_SCRIPTS = docs/contrib/replyfilter docs/contrib/build_nmh \
- docs/contrib/ml docs/contrib/vpick
+ docs/contrib/localpostproc docs/contrib/ml \
+ docs/contrib/vpick docs/contrib/replaliases
dist_docs_contrib_DATA = docs/contrib/replaliases
##
--- /dev/null
+#!/bin/sh
+#
+# localpostproc - A sample postproc which changes the submission email server
+# based on user-supplied criteria.
+#
+# The basic concept is that we change where we submit mail to based on the
+# message contents. We use scan(1) to get out fields we care about. But
+# really, you could use ANY criteria, such as environment variables,
+# recipients, etc etc.
+#
+
+#
+# Find out which message is the draft message; yes, this sucks.
+#
+# The case statement has to know about switches that take arguments;
+# add to this list as necessary.
+#
+
+whom=0
+
+find_draftmessage() {
+ while test $# -gt 0; do
+ case "$1" in
+ -al* | -filt* | -wi* | -client | -idanno | -server | \
+ -partno | -saslmech | -user | -por* | -width | \
+ -file* | -mhl* | -mt* | -cr* | -lib* | -auth* | -sendmail)
+ shift
+ ;;
+ -whom)
+ whom=1
+ ;;
+ -*) ;;
+ *)
+ draftmessage="$1"
+ return 0
+ ;;
+ esac
+ shift
+ done
+
+ echo "Cannot find draft message name in argument list"
+ exit 1
+}
+
+realpost="$(mhparam libdir)/post"
+
+if [ $# -eq 0 ]; then
+ echo "Usage: [post switches] filename"
+ exit 1
+fi
+
+find_draftmessage "$@"
+
+if [ $whom -eq 1 ]; then
+ exec "$realpost" "$@"
+fi
+
+fromhost=$(scan -format '%<{resent-from}%(host{resent-from})%|%(host{from})%>' -file "$draftmessage")
+
+if [ $? -ne 0 ]; then
+ echo "Unable to run scan on draft file $draftmessage, aborting"
+ exit 1
+fi
+
+if [ -z "$fromhost" ]; then
+ echo "Could not determine hostname of From: address"
+ exit 1;
+fi
+
+#
+# Here we use the hostname in the "from" address, but you could use anything
+#
+
+case "$fromhost" in
+ *host1.com)
+ postflags="-server smtp.host1.com -sasl -port submission"
+ ;;
+
+ host2.com)
+ postflags="-server smtp.host2.com -sasl -tls -port submission"
+ ;;
+
+ *)
+ echo "Don't know how to send email from $fromhost"
+ exit 1
+ ;;
+esac
+
+exec "$realpost" $postflags "$@"