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