Menu
Szybki wybór
Hosting Domeny VPS SSL Kalkulator Porównania FAQ
Aktywne kody
Wszystkie kody rabatowe

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

Najczęstsze pytania

Czym różni się Dovecot od Postfixa? +
Postfix to MTA (Mail Transfer Agent) — odbiera i wysyła pocztę między serwerami przez SMTP (port 25/587). Dovecot to MDA/MRA (Mail Delivery/Retrieval Agent) — udostępnia pocztę użytkownikom końcowym przez IMAP (port 143/993) lub POP3 (port 110/995). W typowym stacku Postfix odbiera wiadomość, zapisuje ją do Maildir użytkownika (np. przez LMTP do Dovecot), a klient pocztowy (Thunderbird, Outlook) łączy się z Dovecotem po IMAP aby ją przeczytać. Oba programy są niezależne ale komplementarne.
Maildir czy mdbox — który format wybrać? +
Maildir trzyma każdą wiadomość jako osobny plik (cur/new/tmp) — prosty, niezawodny, łatwy do backupu przez rsync, ale wolny przy dużych skrzynkach (10k+ maili w jednym katalogu to problem dla filesystemu). mdbox (Dovecot-specific) pakuje wiadomości w większe pliki (domyślnie do 2 MB), co drastycznie poprawia wydajność dla dużych skrzynek i daje lepsze wsparcie single-instance storage (duplikaty w załącznikach są przechowywane raz). Dla skrzynek do 5000 wiadomości Maildir jest OK, powyżej rekomendujemy mdbox.
Jak skonfigurować LMTP między Postfix a Dovecot? +
LMTP (Local Mail Transfer Protocol, RFC 2033) to prosty protokół dostarczania lokalnego — Postfix przekazuje wiadomość do Dovecota, który zapisuje ją do Maildir i wymusza kwoty/filtry Sieve. W Dovecocie włącz service lmtp z socketem UNIX (np. /var/spool/postfix/private/dovecot-lmtp). W Postfixie ustaw mailbox_transport = lmtp:unix:private/dovecot-lmtp. Zyskujesz: kwoty Dovecota respektowane, Sieve filters, server-side sorting, lepsze logi. To standardowy setup produkcyjny.
Czy Dovecot wspiera uwierzytelnianie z bazy MySQL? +
Tak. Dovecot ma backendy auth: passwd (system linuxowy), passwd-file (plik płaski), sql (MySQL/PostgreSQL), ldap, pam. Dla wirtualnych użytkowników (bez kont systemowych) typowym wyborem jest sql z tabelą zawierającą email, password_hash, quota, home. Plik /etc/dovecot/dovecot-sql.conf.ext definiuje query SELECT password FROM virtual_users WHERE email = %u. Hashe haseł: ARGON2ID lub BLF-CRYPT (bcrypt). To standard w mail serverach dla wielu domen (ISPmail tutorial).

Sprawdź oferty pasujące do tego scenariusza

Poniżej masz szybkie przejścia do ofert i stron z kodami rabatowymi tam, gdzie są dostępne.