From: martin f. krafft Date: Mon, 14 Jun 2010 11:40:53 +0000 (+0200) Subject: implement requirement to ack recipients as a sendmail check X-Git-Url: https://git.madduck.net/etc/mutt.git/commitdiff_plain/c48af8b004671069fc75f0ed6dcaedfefb5b7c6e?hp=9a429ea7cf3cab8d57192d41d1ba94fa1365267d implement requirement to ack recipients as a sendmail check --- diff --git a/.mutt/ack-recipients b/.mutt/ack-recipients new file mode 100644 index 0000000..e69de29 diff --git a/.mutt/sendmail-checks.d/ack-recipients b/.mutt/sendmail-checks.d/ack-recipients new file mode 100755 index 0000000..d22eb6b --- /dev/null +++ b/.mutt/sendmail-checks.d/ack-recipients @@ -0,0 +1,41 @@ +#!/bin/sh +# +# ack-recipients – require double-checking of some recipients +# +# refuse to send a mail as long as recipients listed in ~/.mutt/ack-recipients +# are not individually "signed-off" by adding their e-mail addresses to the +# X-Acked header. This header is removed from the mail before it is sent. +# +# Copyright © 2010 martin f. krafft +# Released under the terms of the Artistic Licence 2.0 +# +set -eu + +CHECKLIST="$HOME/.mutt/ack-recipients" +HEADER=X-Acked +ACKED_RCPTS=$(formail -czx ${HEADER}: < $1 | tr -d ',') +MAILFILE="$1"; shift + +ret=0 +for r in $@; do + ack=0 + # check if this recipient is in the list of acked recipients + for a in $ACKED_RCPTS; do [ $a = $r ] && ack=1 && break; done + re=$(echo $r | sed -e 's,\.,\\.,') + # now check if this unacked recipient needs to be acked + if [ $ack -eq 0 ] && grep -qi "^${re}$" "$CHECKLIST"; then + echo >&2 "E: will not send mail until $r has been added to the $HEADER header" + ret=1 + fi +done + +[ $ret -eq 0 ] || exit $ret + +# now remove the X-Acked header from the mail +TMPFILE=$(tempfile -p mutt-sendmail -s .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 +formail -I ${HEADER}: < "$MAILFILE" > "$TMPFILE" +mv "$TMPFILE" "$MAILFILE" +settrap -