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