Handle multi-line headers in delayed dsns.

This commit is contained in:
Stuart Gathman
2006-06-21 22:22:00 +00:00
parent 8c4cca8f55
commit d38cf5885e
+15 -5
View File
@@ -1,6 +1,10 @@
#!/usr/bin/env python #!/usr/bin/env python
# A simple milter that has grown quite a bit. # A simple milter that has grown quite a bit.
# $Log$ # $Log$
# Revision 1.64 2006/06/21 21:12:04 customdesigned
# More delayed reject token headers.
# Don't require HELO pass for CBV.
#
# Revision 1.63 2006/05/21 03:41:44 customdesigned # Revision 1.63 2006/05/21 03:41:44 customdesigned
# Fail dsn # Fail dsn
# #
@@ -1569,12 +1573,13 @@ class bmsMilter(Milter.Milter):
# check for delayed bounce # check for delayed bounce
if self.delayed_failure: if self.delayed_failure:
self.fp.seek(0) self.fp.seek(0)
lastln = None
for ln in self.fp: for ln in self.fp:
# FIXME: handle multi-line header field if lastln:
lnl = ln.lower() if ln[0].isspace() and ln[0] != '\n':
for k in ('message-id','x-mailer','sender'): lastln += ln
if lnl.startswith(k): continue
name,val = ln.split(None,1) name,val = lastln.rstrip().split(None,1)
pos = val.find('<SRS') pos = val.find('<SRS')
if pos >= 0: if pos >= 0:
try: try:
@@ -1590,6 +1595,11 @@ class bmsMilter(Milter.Milter):
self.log('BLACKLIST:',sender,fname) self.log('BLACKLIST:',sender,fname)
return Milter.DISCARD return Milter.DISCARD
except: continue except: continue
lnl = ln.lower()
for k in ('message-id','x-mailer','sender'):
if lnl.startswith(k):
lastln = ln
break
# analyze external mail for spam # analyze external mail for spam
spam_checked = self.check_spam() # tag or quarantine for spam spam_checked = self.check_spam() # tag or quarantine for spam