Sendmail to jeden z najtrwalszych i najbardziej wpływowych agentów transferu poczty (MTA) w historii infrastruktury e‑mail, obecny w systemach od początku lat 80. Pomimo licznych alternatyw, wciąż pozostaje ważny w dużych wdrożeniach korporacyjnych, edukacyjnych i administracji publicznej. Niniejszy materiał omawia architekturę, mechanizmy działania, metody konfiguracji i aktualną rolę Sendmaila w nowoczesnych środowiskach, łącząc wiedzę teoretyczną z praktycznymi wskazówkami wdrożeniowymi.

Historia i pochodzenie Sendmail

Rozwój Sendmaila zaczyna się od pracy Erica Allmana, który około 1979 r. stworzył Delivermail dla ARPANET, później dołączony do BSD 4.0/4.1. Na początku lat 80. na Uniwersytecie Kalifornijskim w Berkeley opracował on Sendmail jako następcę Delivermail. Pierwsza wersja Sendmaila trafiła do BSD 4.1c w 1983 r., równolegle z natywnym wsparciem TCP/IP, co ugruntowało pozycję Sendmaila jako domyślnego MTA na systemach Unix w latach 80. i 90.

W 1996 r. około 80% publicznych serwerów e‑mail działało na Sendmailu. Popularność zapewniły: standardowa obecność w systemach Unix, elastyczność routingu i szeroka kompatybilność. Z czasem udział malał z powodu kwestii bezpieczeństwa i złożoności konfiguracji, co sprzyjało przejściu na Postfix czy Exim. W sierpniu 2019 r. E‑Soft Inc. szacował udział Sendmaila na ok. 4,18% publicznych serwerów e‑mail.

Ewolucja projektu obejmuje liczne rewizje bezpieczeństwa i funkcjonalności: 8.9.0 (1998) wprowadziła uwierzytelnianie i poprawki bezpieczeństwa, a wydania 8.10, 8.11, 8.12 dodały m.in. TLS i SMTP AUTH. Sendmail wciąż otrzymuje poprawki utrzymaniowe i bezpieczeństwa, co utrzymuje jego użyteczność w środowiskach legacy.

Fundamentalne koncepcje i architektura Sendmail

Aby właściwie zrozumieć Sendmaila, warto umieścić go w ekosystemie pocztowym obok MUA (klient), MDA (dostarczanie do skrzynek) oraz protokołów i usług pomocniczych. MTA przyjmuje wiadomości, przetwarza adresację, wyznacza trasę i przekazuje je do serwerów docelowych lub MDA.

Architektura Sendmaila opiera się na modelu klient–serwer. Demon nasłuchuje SMTP, a następnie przetwarza wiadomości zgodnie z regułami w konfiguracji. Modułowe podejście obejmuje parsowanie i walidację adresów, przepisywanie nagłówków, routing i wybór mechanizmu dostarczenia. Ogromna elastyczność idzie w parze ze zwiększoną złożonością administracyjną.

Typowy przebieg obejmuje: weryfikację adresata (błąd w razie nieprawidłowości), wybór metody dostarczenia na podstawie konfiguracji i zapytań DNS, a następnie transmisję SMTP do serwera docelowego.

Porównanie Sendmail z alternatywnymi agentami transferu poczty

Zrozumienie pozycji Sendmaila wymaga odniesienia do Postfix i Exim. W nowoczesnych wdrożeniach częściej wybiera się rozwiązania prostsze w administracji, bezpieczniejsze i bardziej efektywne operacyjnie.

Najważniejsze różnice pomiędzy popularnymi MTA przedstawia poniższe zestawienie:

MTA Architektura Bezpieczeństwo Konfiguracja Wydajność Kompatybilność
Sendmail bardziej monolityczna; duża elastyczność historyczne CVE; wymaga ostrożnej konfiguracji złożona; preferowany workflow m4 (sendmail.mc → sendmail.cf) stabilna, lecz ustępuje nowym projektom w testach przepustowości wysoka; często preinstalowany w systemach Unix
Postfix modułowa z separacją uprawnień projektowany „security by design” bardziej przystępna; klarowne parametry często wyższa przepustowość i sprawny manager kolejek drop‑in replacement dla Sendmaila (CLI/filtry)
Exim bliżej modelu monolitycznego elastyczny, lecz złożony; zależny od jakości konfiguracji bardzo elastyczna logika routingu/skryptowania wydajność dobra, zależna od konfiguracji pełna otwartość (GNU GPL)

W nowych wdrożeniach rzadko istnieje twarde uzasadnienie wyboru Sendmaila, jednak jego pozycję utrzymują: preinstalowanie na Unixach, duża przenośność, dziedziczone środowiska oraz wymogi kompatybilności CLI w aplikacjach specjalistycznych.

Instalacja Sendmail na systemach Linux i Unix

Aby szybko rozpocząć instalację w najpopularniejszych dystrybucjach, zwróć uwagę na podstawowe polecenia:

  • RHEL/CentOS/AlmaLinuxyum install sendmail lub dnf install sendmail;
  • Debian/Ubuntuapt-get install sendmail lub apt install sendmail;
  • sendmail-cf – dodatkowe makra i pliki do generowania konfiguracji (sendmail.mc → sendmail.cf);
  • aktualizacja pakietów – przed wdrożeniem produkcyjnym wykonaj aktualizacje bezpieczeństwa systemu i MTA.

W środowiskach produkcyjnych często instaluje się komponenty uzupełniające: Dovecot dla IMAP/POP3 (np. aptitude install dovecot-common dovecot-imapd dovecot-pop3d) oraz Squirrelmail jako webmail (np. aptitude install squirrelmail i konfiguracja w Apache). Domyślna konfiguracja Dovecota zwykle wystarcza do startu.

Przed konfiguracją Sendmaila skonfiguruj tożsamość sieciową hosta. Wykonaj następujące kroki:

  • hostname – w pliku /etc/hostname umieść nazwę hosta bez domeny;
  • hosts – w /etc/hosts dodaj mapowanie IP na FQDN, np. 192.168.1.x mail.example.com mail;
  • weryfikacja – sprawdź wynik poleceniem hostname, aby potwierdzić zgodność z oczekiwanym FQDN.

Poprawna identyfikacja hosta jest kluczowa dla reputacji SMTP i prawidłowego działania serwera poczty.

Konfiguracja Sendmail – plik sendmail.mc i plik sendmail.cf

Konfigurację prowadzi się w trybie m4: edytujesz czytelny sendmail.mc, a następnie generujesz docelowy sendmail.cf. To podejście znacząco upraszcza pracę i ogranicza błędy.

Podstawowe elementy sendmail.mc to dyrektywa include(.../cf.m4) i makro OSTYPE (np. OSTYPE(debian), OSTYPE(linux)). Poniżej wymieniono kluczowe makra FEATURE często spotykane w praktyce:

  • FEATURE(virtusertable) – obsługa wirtualnych domen/użytkowników i mapowanie na skrzynki docelowe;
  • FEATURE(dnsbl) – sprawdzanie adresów w listach RBL, ograniczające spam na etapie SMTP;
  • FEATURE(accept_unresolvable_domains) – akceptacja poczty z nierozwiązywalnych domen (zwykle wyłączone w produkcji).

Po edycji sendmail.mc wygeneruj sendmail.cf za pomocą m4 lub Makefile. Przykładowo:

make all -C /etc/mail/

lub:

cd /etc/mail/
make

W środowiskach produkcyjnych szczególnie ważne są następujące parametry:

  • HOSTNAME/FQDN – zgodność nazwy hosta z rekordami DNS i banerem SMTP;
  • MASQUERADE_AS – ujednolicenie domeny w poczcie wychodzącej;
  • SMART_HOST – przekazywanie (relay) przez wskazany serwer pośredniczący;
  • EXPOSED_USER – konta wyłączone z przepisywania adresów.

Prawidłowe ustawienie tych parametrów decyduje o spójności adresacji i niezawodnym trasowaniu.

Zarządzanie aliasami i użytkownikami pocztowymi

Plik /etc/aliases mapuje aliasy na konta docelowe lub listy. W większości wdrożeń warto zdefiniować aliasy: postmaster, mailer-daemon, root, mail, www. Przykładowa zawartość pliku wygląda następująco:

postmaster: [email protected]
root: [email protected]
mailer-daemon: /dev/null
mail: [email protected]
www: [email protected]
nobody: /dev/null

Po każdej modyfikacji uruchom kompilację aliasów poleceniem: newaliases. Bez tego Sendmail będzie używał starych mapowań.

Wirtualne domeny i użytkownicy pozwalają precyzyjnie sterować routingiem. Włącz FEATURE(virtusertable), uzupełnij /etc/mail/local-host-names i skonfiguruj mapy w /etc/mail/virtusertable. Przykładowe wpisy:

[email protected] user1
[email protected] [email protected]
@example.com [email protected]

Po edycji zbuduj bazę: makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable. Bez kompilacji makemap nowe reguły nie będą widoczne.

Protokoły SMTP i konfiguracja portów

Dobór i konfiguracja portów wpływa na kompatybilność, bezpieczeństwo i dostarczalność. Zestawienie najczęściej używanych portów znajdziesz poniżej:

Port Rola Szyfrowanie Uwierzytelnianie Uwagi
25 serwer–serwer (relay) opcjonalne STARTTLS zwykle brak często blokowany przez ISP ze względu na spam
587 submission (klienci) STARTTLS wymagany lub rekomendowany wymagane zalecany port dla klientów e‑mail
465 SMTPS (historyczny) implicit TLS wymagane utrzymywany dla zgodności wstecznej

Nasłuch demonów ustawisz przez DAEMON_OPTIONS w sendmail.mc. Możesz uruchomić wiele instancji na różnych portach i interfejsach, dopasowując polityki bezpieczeństwa do kanału ruchu.

Bezpieczeństwo Sendmail i uwierzytelnianie poczty

SMTP natywnie nie zapewnia szyfrowania ani uwierzytelniania, więc konieczna jest integracja z dodatkowymi mechanizmami. TLS/SSL szyfruje transmisję; komenda STARTTLS podnosi połączenie z plaintext do TLS. W Sendmail wskaż odpowiednie certyfikaty i klucze (np. wygenerowane przez OpenSSL) w sendmail.mc. Szyfrowanie chroni treść i dane logowania przed podsłuchem.

Podstawowe protokoły uwierzytelniania nadawcy i ich rola są następujące:

  • SPF – rekordy DNS określające autoryzowane serwery wysyłające dla domeny;
  • DKIM – podpisy kryptograficzne potwierdzające integralność wiadomości i pochodzenie;
  • DMARC – polityka dla wyników SPF/DKIM oraz mechanizm raportowania nadużyć.

Open relay to krytyczne zagrożenie: błędna konfiguracja relaysuje pocztę „dla każdego, dokądkolwiek”. Zadbaj o właściwe listy kontroli dostępu SMTP i filtry antyspamowe. Dzięki dobrym praktykom odsetek otwartych relayów spadł do poniżej 1%.

Przed atakami DoS chronią limity zasobów. Najważniejsze parametry:

  • confMAX_DAEMON_CHILDREN – maksymalna liczba procesów potomnych demona;
  • confQUEUE_LA – próg obciążenia load average dla kolejkowania nowych wiadomości;
  • confREFUSE_LA – próg obciążenia, przy którym odmawia się nowych połączeń;
  • confCONNECTION_RATE_THROTTLE – ograniczenie szybkości nowych połączeń SMTP;
  • confMIN_FREE_BLOCKS – minimalna wolna przestrzeń dyskowa wymagana do pracy.

Właściwe strojenie powyższych parametrów stabilizuje pracę pod dużym obciążeniem.

Rozwiązywanie problemów i monitorowanie Sendmail

Najczęściej używane narzędzia diagnostyczne i ich zastosowania to:

  • -v (verbose) – podgląd dialogu SMTP, np. echo "test" | sendmail -v [email protected];
  • -bv – weryfikacja adresu bez wysyłki: /usr/sbin/sendmail -bv [email protected];
  • -bt – tryb testowy reguł przepisywania adresów: /usr/sbin/sendmail -bt;
  • mailq – podgląd kolejki (nadawca, odbiorca, rozmiar, czas);
  • syslog – logi facility „mail” (np. /var/log/mail.log) do analizy błędów i uwierzytelnień.

Kiedy kolejka rośnie, sprawdź logi i rozważ tymczasową zmianę ścieżki kolejki (-oQ) w celu kontrolowanego przetworzenia zaległości.

Utrzymanie i zarządzanie operacyjne Sendmail

W operacjach produkcyjnych sprawdza się powtarzalna „lista kontrolna” zadań:

  • monitorowanie kolejki – identyfikacja i czyszczenie wiadomości niedostarczalnych;
  • aktualizacja map – po zmianach w /etc/aliases uruchom newaliases, a po modyfikacji map wirtualnych – makemap;
  • zmiany konfiguracyjne – po edycji sendmail.mc wygeneruj sendmail.cf i zrestartuj usługę (systemctl restart sendmail);
  • strojenie wydajności – limity połączeń/procesów oraz częstotliwość przetwarzania kolejek parametrem -q.

Najlepszą praktyką jest testowanie zmian w środowisku nieprodukcyjnym przed wdrożeniem na produkcję.

Przyszłość Sendmail w ekosystemie poczty elektronicznej

Mimo spadku udziału rynkowego Sendmail pozostaje istotny w kontekstach wymagających zgodności, stabilności i utrzymania systemów legacy. Projekt nadal rozwijany jest w zakresie bezpieczeństwa i zgodności, co pozwala spełniać współczesne standardy przy właściwej integracji (np. z OpenDKIM i OpenDMARC).

W nowych wdrożeniach jego rola zwykle jest ograniczona względem bardziej modularnych MTA, ale preinstalowanie na Unixach, obecność w infrastrukturach instytucjonalnych i specyficzne wymagania kompatybilności zapewniają mu dalszą obecność w krajobrazie pocztowym.