- 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:
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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,6 +207,8 @@ class dkimMilter(Milter.Base):
|
|||||||
else:
|
else:
|
||||||
canonicalize.append(canon)
|
canonicalize.append(canon)
|
||||||
canonicalize.append(canon)
|
canonicalize.append(canon)
|
||||||
|
if (milterconfig.get('Syslog') and
|
||||||
|
milterconfig.get('debugLevel') >= 1):
|
||||||
syslog.syslog('canonicalize: {0}'.format(canonicalize))
|
syslog.syslog('canonicalize: {0}'.format(canonicalize))
|
||||||
try:
|
try:
|
||||||
if privateRSA:
|
if privateRSA:
|
||||||
@@ -254,7 +260,9 @@ 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
|
||||||
|
(milterconfig.get('SyslogSuccess') or
|
||||||
|
milterconfig.get('debugLevel') >= 1)):
|
||||||
syslog.syslog('DKIM: Pass ({0})'.format(d.domain))
|
syslog.syslog('DKIM: Pass ({0})'.format(d.domain))
|
||||||
self.dkim_domain = d.domain
|
self.dkim_domain = d.domain
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user