Catch more ascii encoding errors to improve resilience against bad data
(LP: #1844189)
This commit is contained in:
@@ -15,6 +15,8 @@
|
|||||||
conversion issues
|
conversion issues
|
||||||
- Fix variable initialization so mailformed mails missing body From do not
|
- Fix variable initialization so mailformed mails missing body From do not
|
||||||
cause a traceback (LP: #1844161)
|
cause a traceback (LP: #1844161)
|
||||||
|
- Catch more ascii encoding errors to improve resilience against bad data
|
||||||
|
(LP: #1844189)
|
||||||
|
|
||||||
1.1.0 2019-04-12
|
1.1.0 2019-04-12
|
||||||
- Add SubDomains option to enable signing for sub-domains (LP: #1811535)
|
- Add SubDomains option to enable signing for sub-domains (LP: #1811535)
|
||||||
|
|||||||
@@ -149,7 +149,11 @@ class dkimMilter(Milter.Base):
|
|||||||
elif lname == 'authentication-results':
|
elif lname == 'authentication-results':
|
||||||
self.arheaders.append(val)
|
self.arheaders.append(val)
|
||||||
if self.fp:
|
if self.fp:
|
||||||
|
try:
|
||||||
self.fp.write(b"%s: %s\n" % (codecs.encode(name, 'ascii'), codecs.encode(val, 'ascii')))
|
self.fp.write(b"%s: %s\n" % (codecs.encode(name, 'ascii'), codecs.encode(val, 'ascii')))
|
||||||
|
except:
|
||||||
|
# Don't choke on header fields with non-ascii garbage in them.
|
||||||
|
pass
|
||||||
return Milter.CONTINUE
|
return Milter.CONTINUE
|
||||||
|
|
||||||
@Milter.noreply
|
@Milter.noreply
|
||||||
@@ -305,8 +309,13 @@ class dkimMilter(Milter.Base):
|
|||||||
self.header_i = codecs.decode(d.signature_fields.get(b'i'), 'ascii')
|
self.header_i = codecs.decode(d.signature_fields.get(b'i'), 'ascii')
|
||||||
except TypeError as x:
|
except TypeError as x:
|
||||||
self.header_i = None
|
self.header_i = None
|
||||||
|
try:
|
||||||
self.header_d = codecs.decode(d.signature_fields.get(b'd'), 'ascii')
|
self.header_d = codecs.decode(d.signature_fields.get(b'd'), 'ascii')
|
||||||
self.header_a = codecs.decode(d.signature_fields.get(b'a'), 'ascii')
|
self.header_a = codecs.decode(d.signature_fields.get(b'a'), 'ascii')
|
||||||
|
except Exception as x:
|
||||||
|
self.dkim_comment = str(x)
|
||||||
|
if milterconfig.get('Syslog'):
|
||||||
|
syslog.syslog("check_dkim: {0}".format(x))
|
||||||
if res:
|
if res:
|
||||||
if (milterconfig.get('Syslog') and
|
if (milterconfig.get('Syslog') and
|
||||||
(milterconfig.get('SyslogSuccess') or
|
(milterconfig.get('SyslogSuccess') or
|
||||||
@@ -326,7 +335,12 @@ class dkimMilter(Milter.Base):
|
|||||||
syslog.syslog('DKIM: Fail (saved as {0})'
|
syslog.syslog('DKIM: Fail (saved as {0})'
|
||||||
.format(fname))
|
.format(fname))
|
||||||
else:
|
else:
|
||||||
syslog.syslog('DKIM: Fail ({0})'.format(d.domain.lower()))
|
if milterconfig.get('Syslog'):
|
||||||
|
if d.domain:
|
||||||
|
syslog.syslog('DKIM: Fail ({0})'
|
||||||
|
.format(d.domain.lower()))
|
||||||
|
else:
|
||||||
|
syslog.syslog('DKIM: Fail, unextractable domain'
|
||||||
if res:
|
if res:
|
||||||
result = 'pass'
|
result = 'pass'
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user