Dovecot uses a master process that spawns specialized workers. This isolates failure: a buggy IMAP session can't crash the auth daemon.
Core processes:
| Process | Role |
|---|---|
| dovecot (master) | Spawns and supervises children |
| anvil | Tracks per-user/IP connection counts |
| log | Centralized log collector |
| config | Serves config to all other processes |
| stats | In-memory metrics |
| auth | Single auth daemon for all protocols |
| imap-login / pop3-login | Pre-auth network handlers (low privilege) |
| imap / pop3 | Per-session post-auth workers |
| lmtp | Local delivery from MTA |
| doveadm | Admin CLI server |
Privilege separation: imap-login runs as user dovenull with no shell. Only after auth succeeds does the session hand off to imap running as the mailbox owner. This is why Dovecot has had so few CVEs over 20 years.
Concurrency: by default each user gets one imap process per session. With service_count = 0, Dovecot reuses processes to lower fork() overhead under high concurrency.
Sign in to keep track of what you have read.