> On 24 Feb 2026, at 06:53, Aki Tuomi via dovecot <[email protected]> wrote:
> 
> 
>> On 24/02/2026 00:57 EET Philip Iezzi via dovecot <[email protected]> wrote:
>> 
> 
> <snip/>
> 
>> 
>> But, when using an absolute path on unix_listener, upgrade step 2) 
>> Bullseye=>Bookworm breaks with:
>> 
>> Processing triggers for dovecot-core (2:2.4.2-2+debian12) ...
>> Job for dovecot.service failed because the control process exited with error 
>> code.
>> (...)
>> dovecot[34446]: master: Error: service(lmtp): Socket already exists: 
>> /var/run/dovecot/lmtp
>> dovecot[34446]: master: Fatal: Failed to start listeners
>> 
>> I then moved to `unix_listener lmtp`:
>> 
>> service lmtp {
>>  unix_listener lmtp {
>>    mode = 0666
>>    user = postfix
>>    group = postfix
>>  }
>> }
>> 
>> Bookworm upgrade (restarted from scratch with a fresh server clone) went 
>> through fine.
>> But even after several dovecot.service restarts, the socket ended up in 
>> /run/lmtp without creating the /run/dovecot directory, and after a full 
>> system reboot, it was suddenly back where I have expected it: 
>> /run/dovecot/lmtp
>> I never changed base_dir, which defaults to /var/run/dovecot/
>> 
> 
> On most modern operating systems, /var/run and /run are the same. So unless 
> you touched something, dovecot should always use /run/dovecot. Not sure what 
> happened there, but I suspect you accidentically changed something.

Thanks Aki. I know, /var/run -> /run symlink always existed (since very old 
Debian versions), so that definitely did not change on Bookworm upgrade.
So it must have been some Bookworm upgrade "glitch" with /run temporarily not 
being available...
Is there some code in Dovecot that decides to fall back to /run if $base_dir 
(/run/dovecot) is missing? That's the only thing I really wondered about - why 
dit the socket ever end up in /run/lmtp instead of /run/dovecot/lmtp ? If the 
whole /run/dovecot cannot be created for some reason, Dovecot should not be 
able to start.

Please just confirm that my current config is "sane":

service lmtp {
 unix_listener lmtp {
   mode = 0666
   user = postfix
   group = postfix
 }
}

With this setup, am I somehow fighting against the default lmtp socket which 
would already be created as root:root because of `protocols = lmtp ...` 
definition?
Just want to make sure this socket will always be available, as it is the most 
crucial part of my whole setup.

Cheers,
Philip

_______________________________________________
dovecot mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to