New delayed DSN pattern. Retab (expandtab).

This commit is contained in:
Stuart Gathman
2007-03-17 21:22:48 +00:00
parent e571ccc5a5
commit 4013365a3d
+17 -13
View File
@@ -1,6 +1,9 @@
#!/usr/bin/env python
# A simple milter that has grown quite a bit.
# $Log$
# Revision 1.95 2007/03/03 19:18:57 customdesigned
# Fix continuing findsrs when srs.reverse fails.
#
# Revision 1.94 2007/03/03 18:46:26 customdesigned
# Improve delayed failure detection.
#
@@ -145,7 +148,8 @@ _subjpats = (
r'^failed', r'^mail failed',
r'^echec de distribution',
r'^fallo en la entrega',
r'\bfehlgeschlagen\b'
r'\bfehlgeschlagen\b',
r'^error sending\b'
)
refaildsn = re.compile('|'.join(_subjpats),re.IGNORECASE)
@@ -381,7 +385,7 @@ def findsrs(fp):
name,val = lastln.rstrip().split(None,1)
pos = val.find('<SRS')
if pos >= 0:
end = val.find('>',pos+4)
end = val.find('>',pos+4)
return srs.reverse(val[pos+1:end])
except: pass
lnl = ln.lower()
@@ -728,8 +732,8 @@ class bmsMilter(Milter.Milter):
qual = 'HELO'
domain = self.spf.h
else:
# No good identity: blame purported domain. Qualify by SPF
# result so NEUTRAL will get separate reputation from SOFTFAIL.
# No good identity: blame purported domain. Qualify by SPF
# result so NEUTRAL will get separate reputation from SOFTFAIL.
qual = res
try:
umis = gossip.umis(domain+qual,self.id+time.time())
@@ -933,7 +937,7 @@ class bmsMilter(Milter.Milter):
if not self.internal_connection and domain in private_relay:
self.log('REJECT: RELAY:',to)
self.setreply('550','5.7.1','Unauthorized relay for %s' % domain)
self.setreply('550','5.7.1','Unauthorized relay for %s' % domain)
return Milter.REJECT
# non DSN mail to SRS address will bounce due to invalid local part
@@ -1087,7 +1091,7 @@ class bmsMilter(Milter.Milter):
return rc
elif self.whitelist_sender and lname == 'subject':
# check for AutoReplys
if reautoreply.match(val):
if reautoreply.match(val):
self.whitelist_sender = False
self.log('AUTOREPLY: not whitelisted')
@@ -1411,8 +1415,8 @@ class bmsMilter(Milter.Milter):
sender = findsrs(self.fp)
if sender:
cbv_cache[sender] = 550,self.delayed_failure
# make blacklisting persistent, since delayed DSNs are expensive
blacklist[sender] = None
# make blacklisting persistent, since delayed DSNs are expensive
blacklist[sender] = None
try:
# save message for debugging
fname = tempfile.mktemp(".dsn")
@@ -1507,11 +1511,11 @@ class bmsMilter(Milter.Milter):
for name,val,idx in self.new_headers:
try:
try:
self.addheader(name,val,idx)
except TypeError:
val = val.replace('\x00',r'\x00')
self.addheader(name,val,idx)
try:
self.addheader(name,val,idx)
except TypeError:
val = val.replace('\x00',r'\x00')
self.addheader(name,val,idx)
except Milter.error:
self.addheader(name,val) # older sendmail can't insheader