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
# A simple milter that has grown quite a bit.
# $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
# Fail dsn
#
@@ -1569,12 +1573,13 @@ class bmsMilter(Milter.Milter):
# check for delayed bounce
if self.delayed_failure:
self.fp.seek(0)
lastln = None
for ln in self.fp:
# FIXME: handle multi-line header field
lnl = ln.lower()
for k in ('message-id','x-mailer','sender'):
if lnl.startswith(k):
name,val = ln.split(None,1)
if lastln:
if ln[0].isspace() and ln[0] != '\n':
lastln += ln
continue
name,val = lastln.rstrip().split(None,1)
pos = val.find('<SRS')
if pos >= 0:
try:
@@ -1590,6 +1595,11 @@ class bmsMilter(Milter.Milter):
self.log('BLACKLIST:',sender,fname)
return Milter.DISCARD
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
spam_checked = self.check_spam() # tag or quarantine for spam