Move Received-SPF header to top.
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.43 2005/12/09 16:54:01 customdesigned
|
||||||
|
# Select neutral DSN template for best_guess
|
||||||
|
#
|
||||||
# Revision 1.42 2005/12/01 22:42:32 customdesigned
|
# Revision 1.42 2005/12/01 22:42:32 customdesigned
|
||||||
# improve gossip support.
|
# improve gossip support.
|
||||||
# Initialize srs_domain from srs.srs config property. Should probably
|
# Initialize srs_domain from srs.srs config property. Should probably
|
||||||
@@ -779,8 +782,8 @@ class bmsMilter(Milter.Milter):
|
|||||||
|
|
||||||
# addheader can only be called from eom(). This accumulates added headers
|
# addheader can only be called from eom(). This accumulates added headers
|
||||||
# which can then be applied by alter_headers()
|
# which can then be applied by alter_headers()
|
||||||
def add_header(self,name,val):
|
def add_header(self,name,val,idx=-1):
|
||||||
self.new_headers.append((name,val))
|
self.new_headers.append((name,val,idx))
|
||||||
self.log('%s: %s' % (name,val))
|
self.log('%s: %s' % (name,val))
|
||||||
|
|
||||||
def connect(self,hostname,unused,hostaddr):
|
def connect(self,hostname,unused,hostaddr):
|
||||||
@@ -1023,10 +1026,11 @@ class bmsMilter(Milter.Milter):
|
|||||||
elif policy != 'OK':
|
elif policy != 'OK':
|
||||||
self.log('REJECT: no PTR, HELO or SPF')
|
self.log('REJECT: no PTR, HELO or SPF')
|
||||||
self.setreply('550','5.7.1',
|
self.setreply('550','5.7.1',
|
||||||
"You must have a reverse lookup or publish SPF: http://openspf.org",
|
"You must have a valid HELO or publish SPF: http://www.openspf.org ",
|
||||||
"Contact your mail administrator IMMEDIATELY! Your mail server is ",
|
"Contact your mail administrator IMMEDIATELY! Your mail server is ",
|
||||||
"severely misconfigured. It has no PTR record (dynamic PTR records ",
|
"severely misconfigured. It has no PTR record (dynamic PTR records ",
|
||||||
"that contain your IP don't count), an invalid HELO, and no SPF record."
|
"that contain your IP don't count), an invalid or dynamic HELO, ",
|
||||||
|
"and no SPF record."
|
||||||
)
|
)
|
||||||
return Milter.REJECT
|
return Milter.REJECT
|
||||||
if res in ('deny', 'fail'):
|
if res in ('deny', 'fail'):
|
||||||
@@ -1090,7 +1094,7 @@ class bmsMilter(Milter.Milter):
|
|||||||
self.log('TEMPFAIL: SPF %s %i %s' % (res,code,txt))
|
self.log('TEMPFAIL: SPF %s %i %s' % (res,code,txt))
|
||||||
self.setreply(str(code),'4.3.0',txt)
|
self.setreply(str(code),'4.3.0',txt)
|
||||||
return Milter.TEMPFAIL
|
return Milter.TEMPFAIL
|
||||||
self.add_header('Received-SPF',q.get_header(res,receiver))
|
self.add_header('Received-SPF',q.get_header(res,receiver),0)
|
||||||
self.spf = q
|
self.spf = q
|
||||||
if res == 'pass' and auto_whitelist.has_key(self.canon_from):
|
if res == 'pass' and auto_whitelist.has_key(self.canon_from):
|
||||||
self.whitelist = True
|
self.whitelist = True
|
||||||
@@ -1285,7 +1289,7 @@ class bmsMilter(Milter.Milter):
|
|||||||
if not self.fp: return Milter.TEMPFAIL # not seen by envfrom
|
if not self.fp: return Milter.TEMPFAIL # not seen by envfrom
|
||||||
if not self.data_allowed:
|
if not self.data_allowed:
|
||||||
return self.forged_bounce()
|
return self.forged_bounce()
|
||||||
for name,val in self.new_headers:
|
for name,val,idx in self.new_headers:
|
||||||
self.fp.write("%s: %s\n" % (name,val)) # add new headers to buffer
|
self.fp.write("%s: %s\n" % (name,val)) # add new headers to buffer
|
||||||
self.fp.write("\n") # terminate headers
|
self.fp.write("\n") # terminate headers
|
||||||
# log when neither sender nor from domains matches mail from domain
|
# log when neither sender nor from domains matches mail from domain
|
||||||
@@ -1578,8 +1582,8 @@ class bmsMilter(Milter.Milter):
|
|||||||
self.addrcpt(self.mailfrom)
|
self.addrcpt(self.mailfrom)
|
||||||
else:
|
else:
|
||||||
self.alter_recipients(self.discard_list,self.redirect_list)
|
self.alter_recipients(self.discard_list,self.redirect_list)
|
||||||
for name,val in self.new_headers:
|
for name,val,idx in self.new_headers:
|
||||||
self.addheader(name,val)
|
self.addheader(name,val,idx)
|
||||||
|
|
||||||
if self.cbv_needed:
|
if self.cbv_needed:
|
||||||
q = self.cbv_needed
|
q = self.cbv_needed
|
||||||
|
|||||||
Reference in New Issue
Block a user