#!/bin/sh # # localpostproc - decide where to send email based on the draft message # # # Find out which message is the draft message; yes, this sucks # find_draftmessage() { skip_next=0 for arg; do case "$arg" in -al* | -filt* | -wi* | -client | -idanno | -server | \ -partno | -saslmaxssf | -saslmech | -user | -por* | \ -file* | -mhl* | -mt* | -cr* | -lib* | -oauth) skip_next=1 ;; -*) skip_next=0; ;; *) if [ "$skip_next" -eq 0 ]; then draftmessage="$arg" return 0 fi skip_next=0 ;; esac 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 "$@" fromhost=$(scan -format '%(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 case "$fromhost" in *.some.other.host) postflags="-server some.other.server -sasl -port submission" ;; pobox.com) postflags="-server smtp.pobox.com -sasl -tls -port submission" ;; *) echo "Don't know how to send email from $fromhost" exit 1 ;; esac exec "$realpost" $postflags "$@"