Module 1 · Lesson 2 of 25

Process model and master/worker design

Part of Dovecot: IMAP/POP3 at Production Scale — Dovecot Architecture.

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.

Pulse · self-hosted sending

Own the infrastructure your pipeline depends on.

One install script on your own server. Pulse sets up the MTA, mailboxes, certificates and dashboard; you add domains and start sending.

# on a fresh Ubuntu server
$ cd pulse && sudo ./install.sh
→ docker compose up · kumomta · stalwart · caddy
→ dashboard ready on https://pulse.yourdomain.com
$

Also from us:Beat — monitoring that tells you the fixConsulting — $65/hr, no retainer