From 2300a83903e0f54078fac315c652582a832d1cd4 Mon Sep 17 00:00:00 2001 From: Michael Smith Date: Sat, 20 Oct 2007 06:37:02 -0400 Subject: [PATCH] avoid postmaster loops --- mailPlanner.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/mailPlanner.py b/mailPlanner.py index 5ae1f5e..16fd581 100755 --- a/mailPlanner.py +++ b/mailPlanner.py @@ -9,6 +9,7 @@ import smtplib import sys import traceback import syslog +import re import Planner import PlanTime @@ -99,6 +100,21 @@ def handleMessage(msg, replyto): # Always return success. Otherwise Postfix will send a bounce message. return 0 +def looksLikePostmaster(msg, replyto): + r = replyto.lower() + + # from the vacation(1) manpage plus some extras + for s in ('-request@', 'postmaster', 'uucp', 'mailer-daemon', 'mailer', + '-relay', 'abuse@', 'mailerdaemon', 'majordomo', 'maildaemon'): + if r.find(s) != -1: + return True + + p = msg["precedence"] + if p and p.lower() in ('bulk', 'junk', 'list'): + return True + + return False + def main(): fp = email.FeedParser.FeedParser() for line in sys.stdin: @@ -107,6 +123,10 @@ def main(): # if these headers are here, we can reply semi-intelligently with errors replyto = msg["reply-to"] or msg["from"] + if looksLikePostmaster(msg, replyto): + logIt("Skipping reply to postmaster address '%s'" % replyto) + return 0 + return handleMessage(msg, replyto) if __name__ == '__main__': -- 2.11.4.GIT