- Added support for SyslogSuccess option

- Rationalized logging to be much less verbose unless SyslogSuccess or
   debugLevel are set - default is generally start/stop/errors only
This commit is contained in:
Scott Kitterman
2018-03-10 16:06:22 -05:00
parent f9358d594c
commit 1843ca6244
4 changed files with 25 additions and 12 deletions
+3
View File
@@ -4,6 +4,9 @@
- Added support for MacroListVerify option - Added support for MacroListVerify option
- Added example in README to show use of MacroList* to separate inbound and - Added example in README to show use of MacroList* to separate inbound and
outbound mail streams outbound mail streams
- Added support for SyslogSuccess option
- Rationalized logging to be much less verbose unless SyslogSuccess or
debugLevel are set - default is generally start/stop/errors only
0.9.4 2018-03-09 0.9.4 2018-03-09
- Create PID directory if it is missing - Create PID directory if it is missing
+1 -1
View File
@@ -36,7 +36,7 @@ InternalHosts implemented verified
0.9.5 (Beta) 0.9.5 (Beta)
MacroList implemented verified MacroList implemented verified
MacroListVerify implemented verified MacroListVerify implemented verified
SyslogSuccess SyslogSuccess implemented verified
1.0.0 1.0.0
No additional features planned No additional features planned
+17 -9
View File
@@ -96,7 +96,7 @@ class dkimMilter(Milter.Base):
connecttype = 'INTERNAL' connecttype = 'INTERNAL'
else: else:
connecttype = 'EXTERNAL' connecttype = 'EXTERNAL'
if milterconfig.get('Syslog'): if milterconfig.get('Syslog') and milterconfig.get('debugLevel') >= 1:
syslog.syslog("connect from {0} at {1} {2}" syslog.syslog("connect from {0} at {1} {2}"
.format(hostname, hostaddr, connecttype)) .format(hostname, hostaddr, connecttype))
return Milter.CONTINUE return Milter.CONTINUE
@@ -106,7 +106,7 @@ class dkimMilter(Milter.Base):
# of each message. # of each message.
@Milter.noreply @Milter.noreply
def envfrom(self, f, *str): def envfrom(self, f, *str):
if milterconfig.get('Syslog'): if milterconfig.get('Syslog') and milterconfig.get('debugLevel') >= 2:
syslog.syslog("mail from: {0} {1}".format(f, str)) syslog.syslog("mail from: {0} {1}".format(f, str))
self.fp = StringIO.StringIO() self.fp = StringIO.StringIO()
self.mailfrom = f self.mailfrom = f
@@ -124,13 +124,15 @@ class dkimMilter(Milter.Base):
def header(self, name, val): def header(self, name, val):
lname = name.lower() lname = name.lower()
if lname == 'dkim-signature': if lname == 'dkim-signature':
if milterconfig.get('Syslog'): if (milterconfig.get('Syslog') and
milterconfig.get('debugLevel') >= 1):
syslog.syslog("{0}: {1}".format(name, val)) syslog.syslog("{0}: {1}".format(name, val))
self.has_dkim += 1 self.has_dkim += 1
if lname == 'from': if lname == 'from':
fname, self.author = parseaddr(val) fname, self.author = parseaddr(val)
self.fdomain = self.author.split('@')[1] self.fdomain = self.author.split('@')[1]
if milterconfig.get('Syslog'): if (milterconfig.get('Syslog') and
milterconfig.get('debugLevel') >= 1):
syslog.syslog("{0}: {1}".format(name, val)) syslog.syslog("{0}: {1}".format(name, val))
elif lname == 'authentication-results': elif lname == 'authentication-results':
self.arheaders.append(val) self.arheaders.append(val)
@@ -163,7 +165,8 @@ class dkimMilter(Milter.Base):
.parse_value(FWS.sub('', val))) .parse_value(FWS.sub('', val)))
if ar.authserv_id == self.AuthservID: if ar.authserv_id == self.AuthservID:
self.chgheader('authentication-results', i, '') self.chgheader('authentication-results', i, '')
if milterconfig.get('Syslog'): if (milterconfig.get('Syslog') and
milterconfig.get('debugLevel') >= 1):
syslog.syslog('REMOVE: {0}'.format(val)) syslog.syslog('REMOVE: {0}'.format(val))
except: except:
# Don't error out on unparseable AR header fiels # Don't error out on unparseable AR header fiels
@@ -188,7 +191,8 @@ class dkimMilter(Milter.Base):
self.AuthservID, self.AuthservID,
results=self.arresults) results=self.arresults)
h = fold(str(h)) h = fold(str(h))
if milterconfig.get('Syslog'): if (milterconfig.get('Syslog') and
milterconfig.get('debugLevel') >= 2):
syslog.syslog(str(h)) syslog.syslog(str(h))
name, val = str(h).split(': ', 1) name, val = str(h).split(': ', 1)
self.addheader(name, val, 0) self.addheader(name, val, 0)
@@ -203,7 +207,9 @@ class dkimMilter(Milter.Base):
else: else:
canonicalize.append(canon) canonicalize.append(canon)
canonicalize.append(canon) canonicalize.append(canon)
syslog.syslog('canonicalize: {0}'.format(canonicalize)) if (milterconfig.get('Syslog') and
milterconfig.get('debugLevel') >= 1):
syslog.syslog('canonicalize: {0}'.format(canonicalize))
try: try:
if privateRSA: if privateRSA:
d = dkim.DKIM(txt) d = dkim.DKIM(txt)
@@ -254,8 +260,10 @@ class dkimMilter(Milter.Base):
self.header_d = d.signature_fields.get(b'd') self.header_d = d.signature_fields.get(b'd')
self.header_a = d.signature_fields.get(b'a') self.header_a = d.signature_fields.get(b'a')
if res: if res:
if milterconfig.get('Syslog'): if (milterconfig.get('Syslog') and
syslog.syslog('DKIM: Pass ({0})'.format(d.domain)) (milterconfig.get('SyslogSuccess') or
milterconfig.get('debugLevel') >= 1)):
syslog.syslog('DKIM: Pass ({0})'.format(d.domain))
self.dkim_domain = d.domain self.dkim_domain = d.domain
else: else:
if milterconfig.get('DiagnosticDirectory'): if milterconfig.get('DiagnosticDirectory'):
+4 -2
View File
@@ -47,7 +47,8 @@ defaultConfigData = {
'IntHosts': False, 'IntHosts': False,
'DiagnosticDirectory': '', 'DiagnosticDirectory': '',
'MacroList': '', 'MacroList': '',
'MacroListVerify': '' 'MacroListVerify': '',
'debugLevel': 0 # Undocumented config item for developer use
} }
@@ -344,7 +345,8 @@ def _readConfigFile(path, configData=None, configGlobal={}):
'IntHosts': 'bool', 'IntHosts': 'bool',
'DiagnosticDirectory': 'str', 'DiagnosticDirectory': 'str',
'MacroList': 'dataset', 'MacroList': 'dataset',
'MacroListVerify': 'dataset' 'MacroListVerify': 'dataset',
'debugLevel': 'int'
} }
# check to see if it's a file # check to see if it's a file