diff --git a/CHANGES b/CHANGES index ea6615b..e002cd0 100644 --- a/CHANGES +++ b/CHANGES @@ -4,13 +4,14 @@ - Added support for MacroListVerify option - Added example in README to show use of MacroList* to separate inbound and outbound mail streams - - Added support for SyslogSuccess option + - Added support for SyslogSuccess option (both signing and verifying) - Rationalized logging to be much less verbose unless SyslogSuccess or debugLevel are set - default is generally start/stop/errors only - Fixed install_requires so either dnspython (preferred if neither is installed) or PyDNS satisfies the install requirements - - Update Authentication Results result comment not to mention key size for + - Updated Authentication Results result comment not to mention key size for ed25519 signatures, since it's irrelevant + - Enhanced signature verification logging to provide more useful information 0.9.4 2018-03-09 - Create PID directory if it is missing diff --git a/TODO b/TODO index 4197a99..a998728 100644 --- a/TODO +++ b/TODO @@ -41,7 +41,7 @@ SyslogSuccess implemented verified 1.0.0 No additional features planned -Plannedataset type support: +Plannedataset type support (if needed): db:/.db mdb: diff --git a/dkimpy_milter/__init__.py b/dkimpy_milter/__init__.py index 23b6b39..0762e07 100644 --- a/dkimpy_milter/__init__.py +++ b/dkimpy_milter/__init__.py @@ -218,6 +218,14 @@ class dkimMilter(Milter.Base): canonicalize[1])) name, val = h.split(': ', 1) self.addheader(name, val.strip().replace('\r\n', '\n'), 0) + if (milterconfig.get('Syslog') and + (milterconfig.get('SyslogSuccess') + or milterconfig.get('debugLevel') >= 1)): + syslog.syslog('{0}: {1} DKIM-Signature field added (s={2} ' + 'd={3})'.format(self.getsymval('i'), + d.signature_fields.get(b'a'), + d.signature_fields.get(b's'), + d.domain)) if privateEd25519: d = dkim.DKIM(txt) h = d.sign(milterconfig.get('SelectorEd25519'), self.fdomain, @@ -226,6 +234,14 @@ class dkimMilter(Milter.Base): signature_algorithm='ed25519-sha256') name, val = h.split(': ', 1) self.addheader(name, val.strip().replace('\r\n', '\n'), 0) + if (milterconfig.get('Syslog') and + (milterconfig.get('SyslogSuccess') + or milterconfig.get('debugLevel') >= 1)): + syslog.syslog('{0}: {1} DKIM-Signature field added (s={2} ' + 'd={3})'.format(self.getsymval('i'), + d.signature_fields.get(b'a'), + d.signature_fields.get(b's'), + d.domain)) except dkim.DKIMException as x: if milterconfig.get('Syslog'): syslog.syslog('DKIM: {0}'.format(x)) @@ -243,8 +259,8 @@ class dkimMilter(Milter.Base): if res: if d.signature_fields.get(b'a') == 'ed25519-sha256': self.dkim_comment = ('Good {0} signature' - .format(d.signature_fields - .get(b'a'))) + .format(d.signature_fields + .get(b'a'))) else: self.dkim_comment = ('Good {0} bit {1} signature' .format(d.keysize, @@ -268,8 +284,12 @@ class dkimMilter(Milter.Base): if res: if (milterconfig.get('Syslog') and (milterconfig.get('SyslogSuccess') or - milterconfig.get('debugLevel') >= 1)): - syslog.syslog('DKIM: Pass ({0})'.format(d.domain)) + milterconfig.get('debugLevel') >= 1)): + syslog.syslog('{0}: {1} DKIM signature verified (s={2} ' + 'd={3})'.format(self.getsymval('i'), + d.signature_fields.get(b'a'), + d.signature_fields.get(b's'), + d.domain)) self.dkim_domain = d.domain else: if milterconfig.get('DiagnosticDirectory'):