diff --git a/CHANGES b/CHANGES index 9eda23b..9b6b275 100644 --- a/CHANGES +++ b/CHANGES @@ -21,6 +21,10 @@ - Make error logging more explicit to aid debugging - Remove SigningTableEd25519 from documentation - it was never implemented and a per algorithm signing table turns out not to be needed + - Delete own_socketfile to resolve race condition where the permissions + change fails on a Unix socket because it hasn't been created yet (libmilter + will do this correctly on its own based on umask, the milter doesn't need + to do it) (LP: #1849712) 1.1.0 2019-04-12 - Add SubDomains option to enable signing for sub-domains (LP: #1811535) diff --git a/dkimpy_milter/__init__.py b/dkimpy_milter/__init__.py index c12c0bd..bb68f24 100644 --- a/dkimpy_milter/__init__.py +++ b/dkimpy_milter/__init__.py @@ -37,7 +37,6 @@ from dkimpy_milter.util import drop_privileges from dkimpy_milter.util import setExceptHook from dkimpy_milter.util import write_pid from dkimpy_milter.util import get_keys -from dkimpy_milter.util import own_socketfile from dkimpy_milter.util import fold __version__ = "1.2.0" @@ -444,7 +443,6 @@ def main(): socketname = 'fd:3' if socketname is None: socketname = 'local:/var/run/dkimpy-milter/dkimpy-milter.sock' - own_socketfile(milterconfig, socketname) sys.stdout.flush() if milterconfig.get('Syslog'): syslog.syslog('dkimpy-milter starting:{0} user:{1}' diff --git a/dkimpy_milter/util.py b/dkimpy_milter/util.py index 36a42be..b8ccd3a 100644 --- a/dkimpy_milter/util.py +++ b/dkimpy_milter/util.py @@ -149,27 +149,6 @@ def write_pid(milterconfig): return pid -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 - if sockname is None: - sockname = milterconfig.get('Socket') - if sockname is None: - return - if sockname[:1] == '/': - offset = 0 - elif sockname[:6] == "local:": - offset = 6 - elif sockname[:5] == "unix:": - offset = 5 - - if offset is not None: - if os.path.exists(sockname[offset:]): - os.chown(sockname[offset:], user, group) - - def read_keyfile(keyfile, milterconfig): """Read private key from file.""" import syslog