Hello,
I am comparing Dovecot 2.3.21.1 and 2.4.5 on the same arm64 macOS host. Apple Mail and Thunderbird work normally with 2.3.21.1, but both fail at the same post-authentication boundary with 2.4.5.
The comparison keeps the client, mailbox data, TLS certificate, CRAM-MD5 credentials, public-IP/hairpin path, and base_dir=/var/run/dovecot the same. Only one Dovecot version is running at a time.
With 2.4.5:
TLS and CRAM-MD5 succeed.
SQL passdb and static userdb succeed.
imap-login reports "Logged in".
The authenticated imap process loads its plugins, assumes uid/gid 350, and resolves the expected namespace and Maildir.
It then reports:
Disconnected: Connection closed (No commands sent) in=0 out=502
Two Apple Mail attempts repeat the same result. There is no panic, fatal error, signal, or explicit anvil error in the captured interval. The /proc/self/stat and /proc/self/io debug messages also occur with the working 2.3 build on macOS.
With 2.3.21.1, the same Apple Mail version proceeds immediately to open INBOX, Junk, and Sent, reads headers and complete messages, and logs out normally. Thunderbird likewise completes NAMESPACE, COMPRESS, ID, SELECT, LIST/FETCH, STATUS, and IDLE with 2.3. Under 2.4, its client trace shows NAMESPACE being sent immediately before the socket closes, while the server-side imap process records no command.
One process-model difference is:
2.3: service imap { process_limit = 200 client_limit = 5 service_count = 0 }
2.4: service imap { client_limit = 1 }
I understand that client_limit=1 is the recommended 2.4 setting, so I am not assuming this is misconfiguration; I mention it because the failure occurs at the post-login process/handoff boundary.
The build already includes commit 5100f0fd576d0600c3f8ad7bb056ae08235cab11, so I do not believe the previously reported peer-PID/anvil fix is simply absent.
Attached:
- doveconf-2.4.5-sanitized.txt
- dovecot-2.4.5-apple-mail-sanitized.txt
I have also prepared a short paired 2.3/2.4 excerpt and can provide the complete sanitized Thunderbird client trace if useful.
What additional master/anvil/process logging would best identify where the authenticated connection is being lost on macOS?