Use HELO identity if good when MAILFROM is bad.
This commit is contained in:
@@ -1,6 +1,9 @@
|
|||||||
#!/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.76 2006/12/30 18:58:53 customdesigned
|
||||||
|
# Skip reputation/whitelist/blacklist when rejecting on SPF. Add X-Hello-SPF.
|
||||||
|
#
|
||||||
# Revision 1.75 2006/12/28 01:54:32 customdesigned
|
# Revision 1.75 2006/12/28 01:54:32 customdesigned
|
||||||
# Reject on bad_reputation or blacklist and nodspam. Match valid helo like
|
# Reject on bad_reputation or blacklist and nodspam. Match valid helo like
|
||||||
# PTR for guessed SPF pass.
|
# PTR for guessed SPF pass.
|
||||||
@@ -813,7 +816,8 @@ class bmsMilter(Milter.Milter):
|
|||||||
else:
|
else:
|
||||||
rc = Milter.CONTINUE
|
rc = Milter.CONTINUE
|
||||||
# FIXME: parse Received-SPF from trusted_relay for SPF result
|
# FIXME: parse Received-SPF from trusted_relay for SPF result
|
||||||
res = self.spf and self.spf.guess
|
res = self.spf and self.spf_guess
|
||||||
|
hres = self.spf and self.spf_helo
|
||||||
# Check whitelist and blacklist
|
# Check whitelist and blacklist
|
||||||
if auto_whitelist.has_key(self.canon_from):
|
if auto_whitelist.has_key(self.canon_from):
|
||||||
if res == 'pass' or self.trusted_relay:
|
if res == 'pass' or self.trusted_relay:
|
||||||
@@ -834,6 +838,9 @@ class bmsMilter(Milter.Milter):
|
|||||||
qual = 'SPF'
|
qual = 'SPF'
|
||||||
elif res == 'pass':
|
elif res == 'pass':
|
||||||
qual = 'GUESS'
|
qual = 'GUESS'
|
||||||
|
elif hres == 'pass':
|
||||||
|
qual = 'HELO'
|
||||||
|
domain = self.spf.h
|
||||||
else:
|
else:
|
||||||
qual = self.connectip
|
qual = self.connectip
|
||||||
try:
|
try:
|
||||||
@@ -983,7 +990,8 @@ class bmsMilter(Milter.Milter):
|
|||||||
self.add_header('Received-SPF',q.get_header(q.result,receiver),0)
|
self.add_header('Received-SPF',q.get_header(q.result,receiver),0)
|
||||||
if hres and q.h != q.o:
|
if hres and q.h != q.o:
|
||||||
self.add_header('X-Hello-SPF',hres,0)
|
self.add_header('X-Hello-SPF',hres,0)
|
||||||
q.guess = res
|
self.spf_guess = res
|
||||||
|
self.spf_helo = hres
|
||||||
if res != q.result:
|
if res != q.result:
|
||||||
self.add_header('X-Guessed-SPF',res,0)
|
self.add_header('X-Guessed-SPF',res,0)
|
||||||
self.spf = q
|
self.spf = q
|
||||||
@@ -1730,7 +1738,6 @@ def main():
|
|||||||
Milter.set_flags(flags)
|
Milter.set_flags(flags)
|
||||||
socket.setdefaulttimeout(60)
|
socket.setdefaulttimeout(60)
|
||||||
milter_log.info("bms milter startup")
|
milter_log.info("bms milter startup")
|
||||||
sys.stdout.flush()
|
|
||||||
Milter.runmilter("pythonfilter",socketname,timeout)
|
Milter.runmilter("pythonfilter",socketname,timeout)
|
||||||
milter_log.info("bms milter shutdown")
|
milter_log.info("bms milter shutdown")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user