diff --git a/dkimpy_milter/__init__.py b/dkimpy_milter/__init__.py index bcdf2a7..3f9eef9 100644 --- a/dkimpy_milter/__init__.py +++ b/dkimpy_milter/__init__.py @@ -354,7 +354,9 @@ def main(): Milter.set_flags(Milter.CHGHDRS + Milter.ADDHDRS) miltername = 'dkimpy-filter' socketname = milterconfig.get('Socket') - own_socketfile(milterconfig) + if socketname is None: + socketname = 'local:/var/run/dkimpy-milter/dkimpy-milter.sock' + own_socketfile(milterconfig, socketname) drop_privileges(milterconfig) sys.stdout.flush() Milter.runmilter(miltername, socketname, 240) diff --git a/dkimpy_milter/config.py b/dkimpy_milter/config.py index bf6551a..c59ce55 100644 --- a/dkimpy_milter/config.py +++ b/dkimpy_milter/config.py @@ -39,7 +39,7 @@ defaultConfigData = { 'SyslogFacility': 'mail', 'UMask': 0o07, 'Mode': 'sv', - 'Socket': 'local:/var/run/dkimpy-milter/dkimpy-milter.sock', + 'Socket': None, 'PidFile': '/var/run/dkimpy-milter/dkimpy-milter.pid', 'UserID': 'dkimpy-milter', 'Canonicalization': 'relaxed/simple', diff --git a/dkimpy_milter/util.py b/dkimpy_milter/util.py index 17857d6..1d5788d 100644 --- a/dkimpy_milter/util.py +++ b/dkimpy_milter/util.py @@ -146,12 +146,15 @@ def write_pid(milterconfig): return pid -def own_socketfile(milterconfig): +def own_socketfile(milterconfig, sockname=None): """If socket is Unix socket, chown to UserID before dropping privileges""" import os user, group = user_group(milterconfig.get('UserID')) offset = None - sockname = milterconfig.get('Socket') + if sockname is None: + sockname = milterconfig.get('Socket') + if sockname is None: + return if sockname[:1] == '/': offset = 0 elif sockname[:6] == "local:":