Handle multi-line headers in delayed dsns.
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user