I am running similar issue with saslauthd basically because EnvironmentFile is 
not applied:

Oct 26 01:16:06 debian (aslauthd)[2060335]: saslauthd.service: Referenced but 
unset environment variable evaluates to an empty string: MECHANISMS, 
MECH_OPTIONS, OPTIONS, THREADS
Oct 26 01:16:06 debian saslauthd[2060335]: saslauthd[2060335] :unknown 
authentication mechanism: -n
Oct 26 01:16:06 debian systemd[1]: saslauthd.service: Control process exited, 
code=exited, status=1/FAILURE

Solution I suggest:

diff /usr/lib/systemd/system/saslauthd.service{.orig,}
--- /usr/lib/systemd/system/saslauthd.service.orig 2025-02-28 
22:58:34.000000000 +0100
+++ /usr/lib/systemd/system/saslauthd.service   2025-10-26 01:25:23.043441786 
+0200
@@ -5,9 +5,7 @@
 [Service]
 Type=forking
 Group=sasl
-PIDFile=/var/run/saslauthd/saslauthd.pid
-EnvironmentFile=/etc/default/saslauthd
-ExecStart=/usr/sbin/saslauthd -a $MECHANISMS $MECH_OPTIONS $OPTIONS -n $THREADS
+ExecStart=/bin/bash -c '. /etc/default/saslauthd; exec /usr/sbin/saslauthd -a 
$MECHANISMS $MECH_OPTIONS $OPTIONS -n $THREADS'
 RuntimeDirectory=saslauthd

 [Install]

systemd is actually able to track saslauthd main process when it forks, hence 
PIDFile is not needed:

● saslauthd.service - SASL Authentication Daemon
     Loaded: loaded (/usr/lib/systemd/system/saslauthd.service; disabled; 
preset: enabled)
     Active: active (running) since Sun 2025-10-26 01:25:36 CEST; 4s ago
    Process: 2062075 ExecStart=/bin/bash -c . /etc/default/saslauthd; exec 
/usr/sbin/saslauthd -a $MECHANISMS $MECH_OPTIONS $OPTIONS -n $THREADS 
(code=exited, status=0/SUCCESS)
   Main PID: 2062077 (saslauthd)
      Tasks: 2 (limit: 9342)
     Memory: 3.5M (peak: 4.2M)
        CPU: 12ms
     CGroup: /system.slice/saslauthd.service
             ├─2062077 /usr/sbin/saslauthd -a ldap -c -m /run/postfix/saslauthd 
-n 2
             └─2062078 /usr/sbin/saslauthd -a ldap -c -m /run/postfix/saslauthd 
-n 2

--
With best regards,
Dmitry

Reply via email to