#!/bin/sh # # check-attachments — check that referenced attachments are actually attached # # This is based on the idea behind # http://www.vim.org/scripts/download_script.php?src_id=3165: if the mail body # matches a given regular expression, then check whether there are also # non-PGP MIME parts in the message, or else refuse to send the message. # # You can override the checking by adding the X-No-Attachments header to the # message. # # Copyright © 2010 martin f. krafft # Released under the terms of the Artistic Licence 2.0 # set -eu RE_ENGLISH='attach(ing|ed|ment)?|included\W+(with|in)\W+th(is|e\W+(curr|pres)ent)\W+mail' RE_GERMAN='an(gehängt|hängsel|bei)|bei(gefügt|lage)|(im|siehe)\W+(anhang|beilage)' RE_FRENCH='attach(e|er|ée?s?|ement|ant)' OVERRIDE_HEADER=X-No-Attachments if ! grep -q "^${OVERRIDE_HEADER}:" "$1" \ && egrep -ziq "($RE_ENGLISH|$RE_GERMAN|$RE_FRENCH)" "$1"; then nr_attach=$(sed -rne 's/^Content-Type:[[:space:]]+//p' "$1" | egrep -cv '^(multipart/|application/pgp-signature)') if [ $nr_attach -lt 2 ]; then echo >&2 "E: the mail message references an attachment," echo >&2 "E: but there seems to be no non-PGP MIME part." echo >&2 "E: (add the $OVERRIDE_HEADER header to override the check)." exit 1 fi fi sed -i -e "/^${OVERRIDE_HEADER}:/d" "$1"