X-Git-Url: https://git.madduck.net/etc/neomutt.git/blobdiff_plain/a6ac44586209b9b0be5add1bef270451f3dcb677..4d1afcd5cc3e282554877a10d6be81931ef0cc03:/.config/neomutt/sendmail diff --git a/.config/neomutt/sendmail b/.config/neomutt/sendmail new file mode 100755 index 0000000..cd0b8dd --- /dev/null +++ b/.config/neomutt/sendmail @@ -0,0 +1,49 @@ +#!/bin/sh +# +# neomutt/sendmail – sendmail wrapper to enforce some checks on outgoing mails +# +# The script basically just creates a temporary file and then invokes any +# executable scripts in ~/.config/neomutt/sendmail-checks.d in run-parts style. +# They receive the filename of a temporary file holding the message to be sent +# as $1, followed by all recipients as determined by mutt. +# +# Copyright © 2010 martin f. krafft Released under the +# terms of the Artistic Licence 2.0 +# +set -eux + +CHECKSDIR="$HOME/.config/neomutt/sendmail-checks.d" +SENDMAIL="/usr/sbin/sendmail -oem -oi" + +TMPFILE=$(mktemp --tmpdir mutt-sendmail.XXXXXXXXXX.msg) +settrap () { trap "$@" 0 1 2 3 4 5 6 7 8 10 11 12 13 14 15; } +cleanup () { rm -f "$TMPFILE"; settrap -; } +settrap cleanup + +argtype=s +recipients= sendmail_args= +for i in "$@"; do + case "$argtype/$i" in + (s/--) argtype=r;; + (s/*) sendmail_args="${sendmail_args} $i";; + (r/*) recipients="${recipients} $i";; + esac +done + +cat > $TMPFILE + +remove_headers= +if ! formail -czx "Resent-" < "$TMPFILE" | grep -q .; then + # only do this for original mails, not bounces + recipients="$recipients $(formail -czx "X-Bcc" < "$TMPFILE" | tr -d ',')" + remove_headers="$remove_headers -IX-Bcc" +fi +args=$(for i in $recipients; do echo "--arg=$i"; done) +run-parts --exit-on-error --umask=0077 --arg="$TMPFILE" $args -- "$CHECKSDIR" + +recipients=$(echo "$recipients" | xargs) + +formail $remove_headers < "$TMPFILE" \ + | eval $SENDMAIL "$sendmail_args" -- "$recipients" + +cleanup