#!/usr/bin/python ''' ## Description A script to get mail from info@example.com and re-write the 'From"' Header as "From: John Doe via info at example.com '" ## Installation Instuctions * Place the script under */usr/local/sbin/rewrite_from.py*. * Edit */etc/aliases*: ``` info: "|/usr/local/sbin/rewrite_from.py" ``` * Run the `newaliases` command. ''' import sys import email import smtplib import re DEBUG = 1 MAIL_SERVER = 'localhost' TO = ["ceo@example.com", "ceoexternalmail@gmail.com"] def main(): ''' Main Function ''' raw_msg = '' for line in sys.stdin: raw_msg = raw_msg + line msg = email.message_from_string(raw_msg) reply_to_re = re.search( r'([a-zA-Z0-9_.+-]+@[a-zA-Z0-9-.]+\.[a-zA-Z0-9-.]+)', msg['From']) if reply_to_re: reply_to = reply_to_re.group(1) from_re = re.search( r'^ *(.+) +?', msg['From']) if from_re: from_h = from_re.group(1) if msg['Reply-To']: msg['Reply-To'] = reply_to msg.replace_header('Reply-To', reply_to) else: msg.add_header('Reply-To', reply_to) msg.replace_header('From', from_h + ' via info at example.com ') send_mail = smtplib.SMTP('localhost') send_mail.sendmail(msg['From'], TO, msg.as_string()) send_mail.quit() if DEBUG: filename = "/tmp/msg.out" out = open(filename, 'w') out.write(msg.as_string()) if __name__ == "__main__": main()