From 5ad6d321bd712d077502b1fe9ea011be7b65aa18 Mon Sep 17 00:00:00 2001 From: Stuart Gathman <stuart@gathman.org> Date: Thu, 4 Jan 2007 18:01:11 +0000 Subject: [PATCH] Do plain CBV when template missing. --- Milter/dsn.py | 10 +++++----- bms.py | 40 ++++++++++++++++++++++++---------------- 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/Milter/dsn.py b/Milter/dsn.py index 4407b84..723d3a0 100644 --- a/Milter/dsn.py +++ b/Milter/dsn.py @@ -5,6 +5,9 @@ # Send DSNs, do call back verification, # and generate DSN messages from a template # $Log$ +# Revision 1.12 2006/07/26 16:37:35 customdesigned +# Support timeout. +# # Revision 1.11 2006/06/21 21:07:11 customdesigned # Include header fields in DSN template. # @@ -79,6 +82,8 @@ def send_dsn(mailfrom,receiver,msg=None,timeout=600): def create_msg(q,rcptlist,origmsg=None,template=None): "Create a DSN message from a template. Template must be '\n' separated." + if not template: + return None heloname = q.h sender = q.s connectip = q.i @@ -98,11 +103,6 @@ def create_msg(q,rcptlist,origmsg=None,template=None): msg.add_header('X-Mailer','PyMilter-'+Milter.__version__) msg.set_type('text/plain') - if not template: - if spf_result and spf_result.startswith('softfail'): - template = softfail_msg - else: - template = nospf_msg hdrs,body = template.split('\n\n',1) for ln in hdrs.splitlines(): name,val = ln.split(':',1) diff --git a/bms.py b/bms.py index fdd711d..248f7aa 100644 --- a/bms.py +++ b/bms.py @@ -1,6 +1,9 @@ #!/usr/bin/env python # A simple milter that has grown quite a bit. # $Log$ +# Revision 1.77 2006/12/31 03:07:20 customdesigned +# Use HELO identity if good when MAILFROM is bad. +# # Revision 1.76 2006/12/30 18:58:53 customdesigned # Skip reputation/whitelist/blacklist when rejecting on SPF. Add X-Hello-SPF. # @@ -81,7 +84,7 @@ subjpats = ( r'^subjectbounce', r'^returned mail', r'^undeliver', - r'^delivery\b.*\bfailure', + r'^delivery\b.*\bfail', r'^delivery problem', r'\buser unknown\b', r'^failed', @@ -1683,24 +1686,29 @@ class bmsMilter(Milter.Milter): self.log('CBV:',sender,'(cached)') res = cbv_cache[sender] else: - self.log('CBV:',sender) + fname = template_name+'.txt' try: template = file(template_name+'.txt').read() - except IOError: template = None + self.log('CBV:',sender,'Using:',fname) + except IOError: + template = None + self.log('CBV:',sender,'PLAIN') m = dsn.create_msg(q,self.recipients,msg,template) - if srs: - # Add SRS coded sender to various headers. When (incorrectly) - # replying to our DSN, any of these which are preserved - # allow us to track the source. - msgid = srs.forward(sender,self.receiver) - m.add_header('Message-Id','<%s>'%msgid) - if 'x-mailer' in m: - m.replace_header('x-mailer','"%s" <%s>' % (m['x-mailer'],msgid)) - else: - m.add_header('X-Mailer','"Python Milter" <%s>'%msgid) - m.add_header('Sender','"Python Milter" <%s>'%msgid) - m = m.as_string() - print >>open(template_name+'.last_dsn','w'),m + if m: + if srs: + # Add SRS coded sender to various headers. When (incorrectly) + # replying to our DSN, any of these which are preserved + # allow us to track the source. + msgid = srs.forward(sender,self.receiver) + m.add_header('Message-Id','<%s>'%msgid) + if 'x-mailer' in m: + m.replace_header('x-mailer','"%s" <%s>' % (m['x-mailer'],msgid)) + else: + m.add_header('X-Mailer','"Python Milter" <%s>'%msgid) + m.add_header('Sender','"Python Milter" <%s>'%msgid) + m = m.as_string() + print >>open(template_name+'.last_dsn','w'),m + # if missing template, do plain CBV res = dsn.send_dsn(sender,self.receiver,m,timeout=timeout) if res: desc = "CBV: %d %s" % res[:2] -- GitLab