1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/gpg_sign.py Tue Dec 16 15:07:35 2014 +0100
1.3 @@ -0,0 +1,52 @@
1.4 +#!/usr/bin/env python
1.5 +
1.6 +from GPGUtils import GPG, as_string
1.7 +from email import message_from_file
1.8 +from email.mime.message import MIMEMessage
1.9 +from subprocess import Popen, PIPE
1.10 +import sys
1.11 +
1.12 +# Postfix exit codes.
1.13 +
1.14 +EX_TEMPFAIL = 75
1.15 +
1.16 +try:
1.17 + # Obtain an identity.
1.18 +
1.19 + gpg = GPG()
1.20 + identity = sys.argv[1]
1.21 + recipients = sys.argv[2:]
1.22 + original = message_from_file(sys.stdin)
1.23 +
1.24 + # Wrap the message in its own container.
1.25 +
1.26 + msg = MIMEMessage(original)
1.27 +
1.28 + # Sign the message.
1.29 +
1.30 + msg = gpg.signMessage(msg, identity)
1.31 + msg["From"] = identity
1.32 + msg["To"] = original["To"]
1.33 + msg["Subject"] = original["Subject"]
1.34 +
1.35 + # Submit to Postfix without causing routing loops.
1.36 +
1.37 + sendmail = Popen(["/usr/sbin/sendmail", "-G", "-i"] + recipients, shell=False, stdin=PIPE, stdout=PIPE, stderr=PIPE)
1.38 + sendmail.stdin.write(as_string(msg))
1.39 + out, err = sendmail.communicate()
1.40 + retcode = sendmail.wait()
1.41 +
1.42 + sys.exit(retcode)
1.43 +
1.44 +except Exception, exc:
1.45 + if "-v" in sys.argv[1:]:
1.46 + raise
1.47 + type, value, tb = sys.exc_info()
1.48 + print >>sys.stderr, "Exception %s at %d" % (exc, tb.tb_lineno)
1.49 + #import traceback
1.50 + #traceback.print_exc(file=open("/tmp/mail.log", "a"))
1.51 + sys.exit(EX_TEMPFAIL)
1.52 +
1.53 +sys.exit(0)
1.54 +
1.55 +# vim: tabstop=4 expandtab shiftwidth=4