Po roku prac rozwojowych opublikowano nową stabilną wersję serwera pocztowego Postfix — 3.12.0. Jednocześnie ogłoszono zakończenie wsparcia dla wersji Postfix 3.7, wydanej na początku 2022 roku. Kod projektu napisany jest w języku C i rozpowszechniany na licencjach EPL 2.0 (Eclipse Public License) i IPL 1.0 (IBM Public License).
Postfix jest jednym z nielicznych projektów, które jednocześnie łączą wysokie bezpieczeństwo, niezawodność i wydajność, co udało się osiągnąć dzięki architekturze wieloprocesowej, która izoluje poszczególne procesory, a także rygorystycznej polityce formatowania kodu i audytu poprawek. W celu ochrony przed błędami związanymi z pamięcią projekt korzysta z zabezpieczonych wariantów funkcji do alokacji i zwalniania pamięci, a także z zestawu abstrakcyjnych funkcji-wiązaczy do pracy z buforami (sprawdzane są przekroczenia granic bufora oraz odwołania do zwolnionej pamięci), operacjami plikowymi, formatowaniem wyjścia, buforowanym wejściem/wyjściem oraz manipulacjami na łańcuchach (w tym możliwości pracy z łańcuchami o dowolnym rozmiarze i automatycznego dostosowywania rozmiarów łańcuchów).
Zgodnie z końcowym zautomatyzowanym badaniem około 500 tysięcy serwerów pocztowych, serwerów (po lipcu 2025 roku publikacja raportów zostanie wstrzymana), Postfix jest używany na 37,88% (rok temu 36,81%) serwerów pocztowych, udział Exim wynosi 55,59% (rok temu 56,61%), Sendmail — 3,55% (3,60%), Mail Enable — 1,81% (1,82%), MDaemon — 0,40% (0,40%), Microsoft Exchange — 0,20% (0,19%), OpenSMTPD — 0,12% (0,09%).
Główne nowości:
- Przeprowadzono prace nad uproszczeniem migracji z tabel haszowych „hash:” i „btree:” na „lmdb:” lub „cdb:” w związku z zaprzestaniem dostarczania w niektórych dystrybucjach Linux bibliotek BerkeleyDB. Aby zachować kompatybilność z narzędziem Mailman, które uruchamia polecenie „postmap hash:/path/to/file” podczas dodawania lub usuwania list dystrybucyjnych, w Postfix dodano wsparcie dla automatycznego przekierowywania takich poleceń na warianty z obsługiwanymi typami baz danych.
- Domyślnie włączone jest łączenie z serwerami SMTP z wykorzystaniem szyfrowania TLS. W ustawieniach klienta SMTP parametr smtp_tls_security_level ustawiony jest na „may”, jeśli Postfix został skompilowany z obsługą TLS. Wartość „may” umożliwia korzystanie z TLS dla serwerów z obsługą szyfrowania, ale dopuszcza powrót do przesyłania danych w otwartym trybie, jeśli serwer nie obsługuje TLS.
- W ESMTP wdrożono obsługę rozszerzenia „REQUIRETLS” (RFC 8689), pozwalającego nadawcy żądać zapewnienia szyfrowania TLS na całej drodze dostawy wiadomości. W tym trybie każdy serwer SMTP i LMTP uczestniczący w przekazywaniu wiadomości musi obsługiwać REQUIRETLS oraz ścisłą autoryzację przez DANE lub STS, a przy przesyłaniu wiadomości przez inne serwery również korzystać z REQUIRETLS.
- Zapewniono rejestrowanie w logach poziomu bezpieczeństwa TLS, tzn. jeśli do przesyłania wiadomości żądany jest poziom REQUIRETLS, informacja o użyciu REQUIRETLS będzie teraz zapisywana w logu.
- Dodano parametr smtp_tls_enforce_sts_mx_patterns, który włącza tryb zgodności między klientem SMTP Postfix a wtyczkami MTA-STS (MTA Strict Transport Security), wymagającymi włączenia obsługi TLSRPT do przekazywania atrybutów STS. Przy ustawieniu tego parametru, domyślnie aktywnego, klient SMTP Postfix połączy się z serwerem MX tylko wtedy, gdy jego nazwa będzie zgodna z wzorcem podanym w politykach STS. W przeciwnym razie będzie używane stare zachowanie — możliwość połączenia z serwerami MX na podstawie rekordów MX w DNS przy zgodności certyfikatu serwera z politykami STS. Mechanizm MTA-STS pozwala informować klienta, który nawiązał połączenie przez niezabezpieczony kanał, o możliwościach i parametrach ustanowienia zabezpieczonego połączenia TLS. Obsługa parametru została również dodana do narzędzi postfix-tlspol i postfix-mta-sts-resolver.
- Dodano wsparcie dla algorytmów szyfrowania odpornych na ataki z wykorzystaniem komputerów kwantowych, przy budowie z OpenSSL 3.5 i nowszymi wersjami.
- Szesnaście parametrów konfiguracyjnych zostało oznaczonych jako przestarzałe, przy użyciu których w logach pojawi się ostrzeżenie o ich usunięciu w jednej z przyszłych wersji. Wśród przestarzałych parametrów znajdują się m.in. „virtual_maps”, „fallback_relay”, „postscreen_whitelist_interfaces” i „smtpd_client_connection_limit_exceptions”.
- Dodano wsparcie do wyprowadzania danych w formacie JSON dla poleceń: „postconf -j|-jM|-jF|-jP”, „postalias -jq|-js”, „postmap -jq|-js” oraz „postmulti -jl”.
- Zoptymalizowano obsługę błędów w filtrach Milter, które występują podczas przetwarzania wiadomości otrzymanych przez już ustalone połączenia SMTP. Wartość parametru #milter_default_action zmieniono z „tempfail” na „shutdown”, co sugeruje zamknięcie połączenia z klientem.
Źródło: opennet.ru
