diff --git a/CHANGES b/CHANGES index f1ffb56..91cb75d 100644 --- a/CHANGES +++ b/CHANGES @@ -1,5 +1,9 @@ 1.0.3 - Make error logging more explicit to aid debugging + - 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.0.2 2019-10-07 - Fix startup logging so it provides information at a useful time diff --git a/dkimpy_milter/__init__.py b/dkimpy_milter/__init__.py index 89d5be9..c62b4c0 100644 --- a/dkimpy_milter/__init__.py +++ b/dkimpy_milter/__init__.py @@ -36,7 +36,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 read_keyfile -from dkimpy_milter.util import own_socketfile from dkimpy_milter.util import fold __version__ = "1.0.1" @@ -371,7 +370,6 @@ def main(): Milter.set_flags(Milter.CHGHDRS + Milter.ADDHDRS) miltername = 'dkimpy-filter' socketname = milterconfig.get('Socket') - own_socketfile(milterconfig) drop_privileges(milterconfig) sys.stdout.flush() if milterconfig.get('Syslog'): diff --git a/dkimpy_milter/util.py b/dkimpy_milter/util.py index 5d3f69d..28dacf8 100644 --- a/dkimpy_milter/util.py +++ b/dkimpy_milter/util.py @@ -146,16 +146,6 @@ def write_pid(milterconfig): return pid -def own_socketfile(milterconfig): - """If socket is Unix socket, chown to UserID before dropping privileges""" - import os - user, group = user_group(milterconfig.get('UserID')) - if milterconfig.get('Socket')[:1] == '/': - os.chown(milterconfig.get('Socket')[1:], user, group) - if milterconfig.get('Socket')[:6] == "local:": - os.chown(milterconfig.get('Socket')[6:], user, group) - - def read_keyfile(milterconfig, keytype): """Read private key from file.""" import syslog