Skip to content
Snippets Groups Projects
Commit d01dc65f authored by Stuart Gathman's avatar Stuart Gathman
Browse files

Use HELO identity if good when MAILFROM is bad.

parent b703031c
No related branches found
No related tags found
No related merge requests found
#!/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): ...@@ -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): ...@@ -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): ...@@ -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(): ...@@ -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")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment