Przejdź do treści

Serwer poczty na FreeBSD 13 (cz. 1): architektura i komponenty

Ten cykl to praktyczny przewodnik budowy własnego serwera poczty elektronicznej od zera na FreeBSD 13 — z pełnym stosem: Postfix (SMTP), Dovecot (POP3/IMAP), MySQL, Apache + PHP, Let’s Encrypt, PostfixAdmin, antyspam/antywirus, Roundcube i Fail2Ban. W pierwszej części omawiam, jak w ogóle działa poczta i z jakich komponentów zbudujemy system.

📅 Wersje z epoki (2021). Seria odtwarza projekt z 2021 r. — wersje oprogramowania (FreeBSD 13, PHP 7.4, itd.) są zgodne z tamtym stanem. Zasady i architektura są nadal aktualne, ale przy wdrożeniu sprawdź najnowsze wydania. Nową serię z aktualnym stackiem szykuję osobno.

Jak działa poczta elektroniczna

System poczty składa się z kilku współpracujących usług. Główną jest przesyłanie listów z komputera użytkownika na serwer i z serwera na serwer docelowy — realizuje to protokół SMTP (Simple Mail Transfer Protocol). Po dostarczeniu listu na serwer docelowy potrzebna jest usługa pobierania wiadomości przez użytkownika — robi to protokół POP3 (Post Office Protocol). POP3 ma jednak ograniczenia (m.in. brak zarządzania wiadomościami na serwerze), dlatego powstał IMAP (Internet Message Access Protocol), który pozwala zarządzać pocztą bezpośrednio na serwerze.

Użytkownikuser@domena.plSerwerdomena.plSerwerdomena.comAdresatuser@domena.comSMTPSMTPPOP3/IMAP
Schemat dostarczania poczty elektronicznej — od nadawcy, przez serwery (SMTP), po odbiór przez adresata (POP3/IMAP).

Do obsługi powyższych usług potrzebna jest też baza danych (MySQL) przechowująca konta i domeny. Dodatkowo postawimy webmail Roundcube wraz z serwerem Apache i SSL dla HTTP, a na koniec zabezpieczymy system przed atakami brute force narzędziem Fail2Ban.

Komponenty i wersje (stan na 2021)

KomponentRolaWersja / licencjaPort
FreeBSDsystem operacyjny13 (BSD)
OpenSSHzdalny, szyfrowany dostępBSD22/TCP
MySQLbaza danych (konta, domeny)GPL3306/TCP
PostfixMTA / serwer SMTPIBM Public License25, 587; SSL 465
Dovecotserwer POP3 / IMAPLGPL110/995, 143/993
Apacheserwer HTTP80; HTTPS 443
PHPjęzyk aplikacji webowych7.4.20, open source
Let’s Encryptcertyfikaty SSL/TLSdarmowe CA
phpMyAdminzarządzanie bazą przez WWWGPL
PostfixAdminzarządzanie skrzynkami/domenami
SpamAssassin + ClamAV + Maia-Mailguardantyspam i antywirusopen source
Roundcubewebmail (klient pocztowy w przeglądarce)GPL
Fail2Banochrona przed brute forceGPL

Krótko o najważniejszych elementach

FreeBSD 13 — system z rodziny Unix oparty na BSD. Łatwa instalacja pakietów (pkg) i kompilacja z portów z własnymi ustawieniami, świetna zapora IPFW i kontrola pasma dummynet. Hasło projektu: The power to serve.

OpenSSH — otwarta implementacja SSH (następcy Telnetu) z pełnym szyfrowaniem komunikacji klient‑serwer; obejmuje też SCP/SFTP.

MySQL — relacyjna baza danych; tu trzyma konta pocztowe, domeny i aliasy wykorzystywane przez Postfix i Dovecot.

Postfix (MTA) — serwer SMTP odpowiedzialny za przekazywanie i dostarczanie poczty. Obsługuje TLS, SASL, skrzynki Maildir/mbox, domeny wirtualne i bazy danych z kontami.

Dovecot — serwer POP3/IMAP pisany pod kątem bezpieczeństwa; współpracuje z Postfixem, obsługuje Maildir, TLS/SSL i uwierzytelnianie z baz SQL.

Apache + PHP + Let’s Encrypt — serwer WWW potrzebny dla narzędzi webowych (phpMyAdmin, PostfixAdmin, Roundcube), z bezpłatnym certyfikatem SSL i HTTPS.

PostfixAdmin + Roundcube — wygodne zarządzanie skrzynkami/domenami oraz webmail dla użytkowników.

SpamAssassin + ClamAV + Maia‑Mailguard — filtr antyspamowy i antywirusowy z webowym panelem kwarantanny.

Fail2Ban — monitoruje próby logowania i blokuje adresy IP podejrzane o ataki brute force.

Co dalej

W części 2 instalujemy FreeBSD 13, konfigurujemy DNS/revDNS oraz SSH — czyli fundament pod resztę usług.

Wpis powstał na bazie mojego projektu „Instalacja i konfiguracja Poczty elektronicznej” (Serwerowe Systemy Operacyjne). Skrót z możliwością pobrania pełnego PDF znajdziesz we wpisie: Instalacja i konfiguracja serwera pocztowego.