Dovecot IMAP/POP3 — konfiguracja serwera pocztowego
Opublikowano: 10 kwietnia 2026 · Kategoria: VPS / Mail server
Dovecot to najpopularniejszy serwer IMAP/POP3 na Linuksie — lekki, bezpieczny i wyjątkowo szybki. W parze z Postfixem tworzy kompletny stack mailowy, na którym stoi większość samohostowanych serwerów pocztowych. Ten przewodnik pokazuje pełną konfigurację od instalacji do uruchomienia, z autoryzacją z pliku i z MySQL, z TLS, integracją LMTP oraz wyborem między Maildir a mdbox.
Instalacja i struktura pakietów
Dovecot jest podzielony na moduły — instalujesz tylko te, które są potrzebne. W Debianie i Ubuntu typowy zestaw dla serwera IMAP z autoryzacją MySQL i filtrami Sieve wygląda tak:
# Ubuntu/Debian — instalacja Dovecota z modułami
sudo apt update
sudo apt install -y dovecot-core dovecot-imapd dovecot-pop3d \
dovecot-lmtpd dovecot-mysql dovecot-sieve \
dovecot-managesieved
# Sprawdź wersję i dostępne moduły
dovecot --version
# 2.3.19.1 (9b53102964)
dovecot --build-options
# Mails: shared mdbox sdbox maildir mbox ...
# SQL drivers: mysql pgsql sqlite
# Passdb: passwd passwd-file shadow pam ldap sql ...
Po instalacji katalog /etc/dovecot/ zawiera plik główny dovecot.conf
i podkatalog conf.d/ z plikami tematycznymi (10-auth.conf, 10-mail.conf, 10-ssl.conf,
10-master.conf itd.). Nie edytuj wszystkiego w jednym pliku — Dovecot wczytuje wszystkie pliki
.conf z conf.d po kolei.
dovecot.conf — podstawowa konfiguracja
Poniżej minimalna, ale produkcyjnie używalna konfiguracja główna — włącza IMAP i POP3, wymusza TLS, ustawia ścieżkę do skrzynek użytkowników wirtualnych i loguje do syslog:
# /etc/dovecot/dovecot.conf protocols = imap pop3 lmtp sieve # Listen tylko na IPv4 + IPv6 listen = *, :: # Logi log_path = /var/log/dovecot.log info_log_path = /var/log/dovecot-info.log log_timestamp = "%Y-%m-%d %H:%M:%S " # Include wszystkich plików conf.d !include conf.d/*.conf !include_try local.conf
# /etc/dovecot/conf.d/10-mail.conf
# Lokalizacja skrzynek — %n to nazwa użytkownika, %d to domena
mail_location = maildir:/var/vmail/%d/%n/Maildir
# Użytkownik systemowy posiadający katalogi
mail_uid = vmail
mail_gid = vmail
mail_privileged_group = mail
# Namespace IMAP (INBOX, folders)
namespace inbox {
inbox = yes
separator = /
prefix =
} Autoryzacja — passwd-file vs MySQL
Dovecot rozróżnia passdb (co sprawdza hasło) i userdb (skąd bierze UID/GID/home dir). Oba mogą używać różnych backendów. Dla małych instalacji wystarczy plik płaski; dla wielu domen z panelem CMS — MySQL.
# /etc/dovecot/conf.d/10-auth.conf — wariant passwd-file
disable_plaintext_auth = yes
auth_mechanisms = plain login
passdb {
driver = passwd-file
args = scheme=BLF-CRYPT username_format=%u /etc/dovecot/passwd
}
userdb {
driver = static
args = uid=vmail gid=vmail home=/var/vmail/%d/%n
} # Utworzenie pliku passwd z hashami bcrypt sudo touch /etc/dovecot/passwd sudo chmod 640 /etc/dovecot/passwd sudo chown root:dovecot /etc/dovecot/passwd # Dodaj użytkownika (bcrypt) HASH=$(doveadm pw -s BLF-CRYPT -p 'tajne-haslo-123') echo "[email protected]:${HASH}" | sudo tee -a /etc/dovecot/passwd # Format pliku: # [email protected]:{BLF-CRYPT}$2y$05$Bwxjn...
# /etc/dovecot/conf.d/10-auth.conf — wariant MySQL
# Zakomentuj passdb passwd-file i włącz:
passdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
# /etc/dovecot/dovecot-sql.conf.ext
driver = mysql
connect = host=127.0.0.1 dbname=mailserver user=mailuser password=tajne
default_pass_scheme = ARGON2ID
password_query = \
SELECT email as user, password FROM virtual_users WHERE email = '%u'
user_query = \
SELECT 150 AS uid, 8 AS gid, \
CONCAT('/var/vmail/', SUBSTRING_INDEX('%u','@',-1), '/', \
SUBSTRING_INDEX('%u','@',1)) AS home, \
CONCAT('*:bytes=', quota_bytes) AS quota_rule \
FROM virtual_users WHERE email = '%u' TLS / SSL — szyfrowanie IMAP i POP3
Bez TLS hasła latają plain textem. Dovecot obsługuje dwa tryby: STARTTLS (port 143 dla IMAP, 110 dla POP3 — szyfrowanie po handshake) i implicit TLS (port 993 dla IMAPS, 995 dla POP3S — szyfrowanie od pierwszego bajtu). Nowoczesne klienty używają implicit TLS.
# /etc/dovecot/conf.d/10-ssl.conf ssl = required # Ścieżki do certyfikatów (Let's Encrypt) ssl_cert = </etc/letsencrypt/live/mail.example.com/fullchain.pem ssl_key = </etc/letsencrypt/live/mail.example.com/privkey.pem # Nowoczesne ciphersuites ssl_min_protocol = TLSv1.2 ssl_cipher_list = ECDHE+AESGCM:ECDHE+CHACHA20:DHE+AESGCM ssl_prefer_server_ciphers = yes # DH parameters (raz, trwa chwilę) # openssl dhparam -out /etc/dovecot/dh.pem 2048 ssl_dh = </etc/dovecot/dh.pem
Integracja z Postfix przez LMTP
LMTP (Local Mail Transfer Protocol) to preferowany sposób dostarczania poczty z Postfixa do Dovecota. W odróżnieniu od bezpośredniego zapisu do Maildir przez Postfix, LMTP pozwala Dovecotowi wymuszać kwoty i uruchamiać filtry Sieve przy dostarczeniu.
# /etc/dovecot/conf.d/10-master.conf — sekcja LMTP
service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp {
mode = 0600
user = postfix
group = postfix
}
}
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
} # /etc/postfix/main.cf — przekazanie lokalnej poczty do Dovecota virtual_transport = lmtp:unix:private/dovecot-lmtp smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_auth_enable = yes # Po zmianach sudo systemctl restart dovecot postfix doveadm log test doveadm auth test [email protected]
Maildir vs mdbox vs mbox — porównanie
Wybór formatu skrzynek wpływa na wydajność, niezawodność i łatwość backupu. Rekomendacje zależą od rozmiaru skrzynki i rodzaju obciążenia:
| Format | Struktura | Wydajność | Backup | Kiedy używać |
|---|---|---|---|---|
Maildir | Plik per wiadomość (cur/new/tmp) | Dobra do 5k maili | rsync, proste | Małe/średnie skrzynki, prostota |
mdbox | Pliki po ~2 MB z wieloma wiadomościami | Bardzo dobra | doveadm backup | Duże skrzynki 10k+, SIS |
sdbox | Jak Maildir ale w formacie Dovecot | Dobra | doveadm backup | Gdy chcesz metadane bez mdbox |
mbox | Jeden plik na folder (legacy) | Słaba dla concurrent | Problematyczny | Nie używaj — legacy |
# Migracja z Maildir do mdbox dla istniejącej skrzynki doveadm backup -u [email protected] mdbox:/var/vmail/example.com/jan/mdbox # Zmień mail_location w 10-mail.conf: # mail_location = mdbox:/var/vmail/%d/%n/mdbox sudo systemctl restart dovecot