Postawienie własnego serwera poczty to jeden z tych projektów, które uczą Cię Linuksa, DNS-u i bezpieczeństwa szybciej niż dziesięć kursów. Wysyłasz maila ze swojej domeny, z własnej maszyny, bez Gmaila i bez płacenia za hosting pocztowy. Brzmi prosto, ale poczta to jeden z najbardziej wymagających serwisów do utrzymania — i właśnie dlatego tak dużo z niej wyniesiesz.
W tym przewodniku przejdziesz przez kompletną konfigurację stacku Postfix + Dovecot na Debianie/Ubuntu: od pakietów, przez TLS i konta wirtualne w bazie, po rekordy DNS (SPF, DKIM, DMARC, PTR), które decydują o tym, czy Twój mail wyląduje w skrzynce, czy w spamie. Pokażę Ci też, gdzie ten projekt boli najbardziej i kiedy lepiej go nie wdrażać na produkcję.
Czym właściwie jest serwer poczty i z czego się składa
Poczta to nie jeden program, tylko kilka współpracujących elementów. Zrozumienie podziału ról oszczędzi Ci większości frustracji przy debugowaniu.
- MTA (Mail Transfer Agent) — odpowiada za wysyłanie i przyjmowanie poczty przez protokół SMTP. Tu rolę gra
Postfix. To on rozmawia z serwerami Gmaila czy Outlooka. - MDA / serwer dostępowy — udostępnia Twoje skrzynki klientom (Thunderbird, telefon) przez IMAP lub POP3. Tym zajmuje się
Dovecot. - Baza kont — w prostym wariancie konta to użytkownicy systemowi, ale w praktyce trzymasz je w bazie (
MariaDB/MySQL) jako konta wirtualne. Dzięki temu dodanie skrzynki to wpis w tabeli, a nie nowy użytkownik Linuksa. - DNS — rekordy MX, SPF, DKIM, DMARC i PTR mówią światu, gdzie i jak dostarczać pocztę Twojej domeny oraz czy można jej ufać.
Postfix przyjmuje maila, przekazuje go do Dovecota przez protokół LMTP, a Dovecot zapisuje go w skrzynce w formacie Maildir (jeden plik = jeden mail, dużo wygodniejszy niż stary mbox). Gdy logujesz się klientem, znowu gada z Tobą Dovecot.
Czego potrzebujesz, zanim zaczniesz
To nie jest projekt, który postawisz na laptopie za routerem domowym. Lista wymagań nie jest długa, ale każdy punkt jest twardy:
- VPS z publicznym, statycznym IP — serwery domowe i większość tanich VPS-ów mają zablokowany port 25 albo IP na czarnych listach. Sprawdzeni dostawcy pod pocztę to np. Hetzner, OVH czy Mikr.us.
- Własna domena z dostępem do edycji DNS (np.
twojadomena.pl). - Świeży system Debian (13 „Trixie”, ewentualnie wciąż wspierane 12) lub Ubuntu LTS (26.04 albo 24.04) z dostępem
rootlubsudo. Trzymaj się wydań LTS/stable — będą dostawać aktualizacje bezpieczeństwa przez lata. - Odblokowany port 25 wychodzący — to najczęstszy ukryty problem. U wielu providerów trzeba o to poprosić w tickecie.
- Możliwość ustawienia rekordu PTR (reverse DNS) na IP serwera — bez tego Gmail i Microsoft będą Cię odrzucać. PTR ustawia się w panelu providera VPS, nie u rejestratora domeny.
Na start ustaw poprawnie nazwę hosta. Przyjęło się, że serwer poczty nazywa się mail.twojadomena.pl:
hostnamectl set-hostname mail.twojadomena.pl
Instalacja pakietów
Zacznij od aktualizacji systemu i instalacji kompletu narzędzi. Wersja z bazą MySQL i kontami wirtualnymi jest minimalnie trudniejsza w konfiguracji, ale dużo wygodniejsza w utrzymaniu — i tak ją tu robimy.
apt update && apt upgrade -y
apt install -y postfix postfix-mysql dovecot-core dovecot-imapd dovecot-lmtpd dovecot-mysql mariadb-server certbot
Podczas instalacji Postfixa kreator zapyta o typ konfiguracji — wybierz Internet Site, a jako system mail name podaj twojadomena.pl (bez mail.). Nie martw się, jeśli klikniesz źle — wszystko poprawisz potem w plikach.
Krótko o pakietach:
postfix+postfix-mysql— SMTP plus wsparcie kont z bazy.dovecot-core,dovecot-imapd,dovecot-lmtpd,dovecot-mysql— IMAP, dostarczanie przez LMTP i odpytywanie bazy.mariadb-server— baza na konta i aliasy.certbot— darmowe certyfikaty TLS z Let’s Encrypt.
Baza danych: domeny, konta i aliasy
Konta wirtualne trzymamy w trzech tabelach. To klasyczny schemat, który znajdziesz w większości poważnych poradników, bo po prostu działa.
Utwórz bazę i tabele:
- virtual_domains — lista obsługiwanych domen (np.
twojadomena.pl). - virtual_users — adresy i hasła. Hasła nigdy nie trzymaj plaintextem — używaj hasha
SHA512-CRYPT. - virtual_aliases — przekierowania, np.
kontakt@na Twój główny adres.
Hash hasła wygenerujesz wprost Dovecotem, bez żadnych zewnętrznych narzędzi:
doveadm pw -s SHA512-CRYPT
Polecenie poprosi o hasło dwa razy i zwróci gotowy hash zaczynający się od {SHA512-CRYPT}. Ten ciąg wrzucasz do kolumny z hasłem w virtual_users. Dodanie nowej skrzynki to od teraz jeden INSERT.
Konfiguracja Postfixa
Główny plik to /etc/postfix/main.cf. Tu ustawiasz tożsamość serwera, TLS i to, że konta pobierasz z bazy.
Kluczowe parametry, które musisz znać:
myhostname = mail.twojadomena.pl— pełna nazwa hosta.mydestination— domeny obsługiwane lokalnie jako systemowe (przy kontach wirtualnych zostawiasz tu tylkolocalhost).virtual_mailbox_domains,virtual_mailbox_maps,virtual_alias_maps— wskazują na plikimysql:, które odpytują Twoje trzy tabele.smtpd_tls_cert_fileismtpd_tls_key_file— ścieżki do certyfikatu Let’s Encrypt.smtpd_tls_security_level = encrypt— wymusza szyfrowanie połączeń.smtpd_sasl_type = dovecotorazsmtpd_sasl_auth_enable = yes— uwierzytelnianie wysyłki oddajesz Dovecotowi.
Drugi ważny plik to /etc/postfix/master.cf. Tu odblokowujesz tzw. submission — port 587 z wymuszonym TLS i logowaniem, którego używają klienci poczty do wysyłania. Port 25 zostaw wyłącznie do komunikacji serwer–serwer; nie pozwól na nim logować się użytkownikom, bo to prosta droga do bycia open relayem i trafienia na blacklisty.
Poprawność map z bazy sprawdzisz narzędziem postmap:
postmap -q twojadomena.pl mysql:/etc/postfix/mysql-virtual-domains.cf
Jeśli komenda zwróci 1 dla domeny i pełny adres dla konta — zapytania do bazy działają.
Konfiguracja Dovecota
Dovecot odpowiada za IMAP, dostarczanie przez LMTP i sprawdzanie haseł. Konfiguracja siedzi w katalogu /etc/dovecot/conf.d/, podzielona na pliki tematyczne:
10-mail.conf— ustawmail_location = maildir:/var/mail/vhosts/%d/%n, czyli osobny katalog na domenę (%d) i użytkownika (%n).10-auth.conf— zostawdisable_plaintext_auth = yes(to ustawienie zakazuje logowania hasłem bez TLS, czyli dokładnie to, czego chcesz) i włącz mechanizmyplainorazloginz bazą SQL jako źródłem haseł.10-master.conf— wystaw gniazdo LMTP dla Postfixa i gniazdoauthdla SASL, żeby Postfix mógł pytać Dovecota o hasła.10-ssl.conf—ssl = requiredplus ścieżki do tego samego certyfikatu Let’s Encrypt.dovecot-sql.conf.ext— zapytanie SQL, które pobiera hash hasła zvirtual_users.
Utwórz osobnego użytkownika systemowego na skrzynki (np. vmail z UID 5000), żeby cała poczta wirtualna miała jednego właściciela i przewidywalne uprawnienia. To standard, który trzyma porządek i bezpieczeństwo.
Po zmianach restartujesz oba serwisy i sprawdzasz, czy wstały bez błędów:
systemctl restart postfix dovecot
systemctl status postfix dovecot
Certyfikat TLS z Let’s Encrypt
Bez szyfrowania Twój serwer to relikt z lat 90. — hasła latałyby plaintextem, a nowoczesne serwery odrzucą połączenie. Certyfikat dla mail.twojadomena.pl wygenerujesz darmowo:
certbot certonly --standalone -d mail.twojadomena.pl
Certbot zapisze certyfikat w /etc/letsencrypt/live/mail.twojadomena.pl/. Tę samą parę plików (fullchain.pem i privkey.pem) wskazujesz w Postfiksie i Dovecocie. Certyfikat jest ważny 90 dni, ale Certbot dorzuca timer, który odnawia go automatycznie — sprawdzisz to przez certbot renew --dry-run.
Rekordy DNS: tu rozstrzyga się Twoja dostarczalność
To najważniejsza część, którą amatorskie poradniki traktują po macoszemu. Sam serwer może działać idealnie, a maile i tak będą lądować w spamie, jeśli DNS nie jest komplet. Ustaw u rejestratora domeny:
- Rekord A —
mail.twojadomena.plwskazujący na IP serwera. - Rekord MX —
twojadomena.plz priorytetem (np.10) namail.twojadomena.pl. Mówi światu, gdzie dostarczać pocztę. - SPF — rekord TXT typu
v=spf1 mx -all. Oznacza: pocztę z mojej domeny wolno wysyłać tylko serwerom z rekordu MX, reszta to podszywanie. - DKIM — podpis kryptograficzny każdej wysyłanej wiadomości. Klucz wygenerujesz narzędziem
OpenDKIM, a jego część publiczną publikujesz jako rekord TXT. To DKIM najmocniej buduje Twoją wiarygodność u Gmaila. - DMARC — rekord TXT typu
v=DMARC1; p=none; rua=mailto:[email protected]. Na start ustaw politykęp=none, żeby tylko zbierać raporty; dopiero gdy SPF i DKIM działają stabilnie, zaostrzasz doquarantinelubreject. - PTR (reverse DNS) — IP serwera ma rozwiązywać się z powrotem na
mail.twojadomena.pl. Brak PTR to niemal gwarantowane odrzucenie przez duże skrzynki. Ten rekord ustawiasz w panelu providera VPS.
Po skonfigurowaniu wyślij testowego maila na narzędzie typu mail-tester.com — pokaże Ci punktację (cel: 10/10) i wskaże, który element kuleje.
Bezpieczeństwo i antyspam
Otwarty serwer poczty zostanie zaatakowany w ciągu godzin — boty skanują port 25 i 587 non stop. Minimum, które musisz wdrożyć:
- Nigdy nie bądź open relayem — Postfix domyślnie nim nie jest, ale jeśli pomieszasz w
smtpd_recipient_restrictions, możesz to zepsuć. Przetestuj się publicznym testerem open relay. fail2ban— blokuje IP po serii nieudanych logowań SASL. Instalacja:apt install fail2bani włączenie jailapostfix-sasl.SpamAssassinlubRspamd— filtruje pocztę przychodzącą i ocenia jej „spamowość”. Rspamd jest dziś popularniejszy i wydajniejszy.- Firewall — przez
ufwotwórz tylko porty, których faktycznie używasz:25,587,993(IMAPS) i22(SSH).
Testowanie i webmail
Zanim podłączysz Thunderbirda, sprawdź każdą warstwę osobno — łatwiej zlokalizować błąd.
Wysyłka z linii poleceń:
echo "Test treści" | mail -s "Temat testowy" [email protected]
Podgląd kolejki (jeśli mail utknął, zobaczysz go tu wraz z przyczyną):
mailq
Surowy test SMTP/IMAP zrobisz przez telnet albo openssl s_client na porty 25 i 143/993. Logi to Twój najlepszy przyjaciel — trzymaj otwarty tail -f /var/log/mail.log podczas każdego testu.
Do logowania klientem ustaw w Thunderbirdzie: serwer poczty wychodzącej mail.twojadomena.pl port 587 (STARTTLS), przychodzącej IMAP port 993 (SSL/TLS), logowanie pełnym adresem e-mail. Jeśli wolisz dostęp przez przeglądarkę, dorzuć webmaila Roundcube na serwerze WWW.
Czy warto stawiać własny serwer poczty?
Jako projekt edukacyjny — zdecydowanie tak. Nauczysz się SMTP, IMAP, DNS-u, TLS-u i myślenia o bezpieczeństwie w jednym przebiegu. Żaden inny serwis nie spina tylu tematów naraz.
Jako produkcyjna poczta dla firmy — przemyśl to. Utrzymanie dostarczalności (blacklisty, reputacja IP, aktualizacje, backupy skrzynek) to realna, ciągła robota. Jeśli stawkę stanowi biznesowa korespondencja, gotowe usługi bywają tańsze w przeliczeniu na Twój czas. Świetny kompromis to gotowy stack typu Mailcow albo iRedMail — pakują Postfixa, Dovecota, antyspam i webmaila w jeden zestaw, ale i tak warto najpierw zrozumieć, co dzieje się pod spodem. A to zrozumienie właśnie sobie zbudowałeś.
FAQ
Czy mogę postawić serwer poczty na domowym komputerze?
Technicznie tak, w praktyce odradzam. Dostawcy internetu domowego prawie zawsze blokują port 25, IP jest dynamiczne i nie da się ustawić rekordu PTR, a adresy z pul domowych trafiają na czarne listy. Do nauki użyj taniego VPS-a z odblokowanym portem 25.
Dlaczego moje maile trafiają do spamu mimo działającego serwera?
Niemal zawsze to wina DNS-u. Sprawdź po kolei: czy masz poprawny PTR, czy SPF zawiera mx, czy DKIM podpisuje wiadomości i czy DMARC jest opublikowany. Wyślij testa na mail-tester.com — pokaże dokładnie, czego brakuje. Reputacja świeżego IP też potrzebuje czasu, by się zbudować.
Postfix czy Dovecot — który do czego służy?
Postfix to MTA: wysyła i przyjmuje pocztę przez SMTP, rozmawia z innymi serwerami. Dovecot udostępnia Twoje skrzynki klientom przez IMAP/POP3 i sprawdza hasła. W typowej instalacji potrzebujesz obu i pracują razem.
Konta systemowe czy wirtualne w bazie?
Dla pojedynczej skrzynki konta systemowe wystarczą, ale przy wielu adresach i domenach konta wirtualne w MariaDB/MySQL są wygodniejsze. Dodanie skrzynki to wtedy jeden wpis w tabeli, bez tworzenia użytkownika Linuksa, a zarządzanie aliasami robisz w SQL-u.
Ile czasu zajmuje postawienie takiego serwera?
Pierwsze działające wysyłanie i odbieranie ogarniesz w 2–4 godziny. Dopracowanie dostarczalności (SPF, DKIM, DMARC, reputacja IP) i bezpieczeństwa to kolejny dzień lub dwa eksperymentów. Realnie zaplanuj sobie weekend i traktuj to jak projekt, a nie szybki tutorial.

