Dopo quasi un anno di sviluppo, è stata rilasciata una nuova versione stabile del server di posta Postfix, la 3.9.0. Allo stesso tempo, ha annunciato la fine del supporto per il ramo Postfix 3.5, rilasciato all'inizio del 2020. Postfix è uno dei rari progetti che combina allo stesso tempo elevata sicurezza, affidabilità e prestazioni, ottenuto grazie a un'architettura ben congegnata e ad una politica abbastanza rigorosa per la progettazione del codice e il controllo delle patch. Il codice del progetto è scritto in linguaggio C e distribuito sotto EPL 2.0 (Eclipse Public License) e IPL 1.0 (IBM Public License).
Secondo un sondaggio automatizzato condotto a gennaio su circa 400 operatori postali server, Postfix è utilizzato sul 36.81% (33.18% un anno fa) dei server di posta, la quota di Exim è del 56.61% (60.27% un anno fa), Sendmail - 3.60% (3.62%), MailEnable - 1.82% (1.86%), MDaemon - 0.40% (0.39%), Microsoft Exchange - 0.19% (0.19%), OpenSMTPD - 0.09% (0.06%).

Principali innovazioni:
- È stato aggiunto un client per MongoDB che consente di archiviare in questo DBMS un database di utenti virtuali, alias, liste di corrispondenza indirizzi e varie tabelle di controllo. Per configurare l'accesso a MongoDB è stata aggiunta la tipologia di tabella “mongodb”. Ad esempio, "alias_maps = proxy:mongodb:/etc/postfix/mongo.cf", dove mongo.cf è un file con le impostazioni per la connessione a MongoDB e un filtro di query.
- Aggiunta l'esportazione al Local Delivery Agent dell'ID di inoltro passato durante una sessione SMTP tramite il parametro ENVID (Envelope ID) nel comando ESMTP MAIL (RFC 3461). L'identificatore viene scritto nella variabile di ambiente ENVID e passato all'agente di consegna della pipe tramite il parametro della riga di comando "${envid}".
- Ai client sono stati aggiunti i seguenti parametri per la memorizzazione dei dati in MySQL (“mysql:”) e PostgreSQL (“pgsql:”): “idle_interval” per determinare il tempo di inattività prima di chiudere la connessione e “retry_interval” per impostare il timer per il nuovo invio richieste. Per impostazione predefinita, i parametri sono impostati su 60 secondi. Il valore “retry_interval” può essere ridotto, ad esempio, per ridurre il tempo di ripristino dell'errore, nel caso di utilizzo di un solo server nell'attributo “hosts”.
- Un'impostazione "charset" è stata aggiunta al client MySQL per specificare la codifica dei caratteri predefinita. Il valore predefinito è "utf8mb4", corrispondente alle impostazioni predefinite in MySQL 8.0 (nelle versioni precedenti il valore era "latin1"). Il supporto per le versioni precedenti a MySQL 4.0 (ovvero le versioni rilasciate prima del 2003) è stato interrotto.
- È stata fornita un'opzione facoltativa per richiedere una chiave pubblica autofirmata (grezza) per TLS non legata a un'autorità di certificazione, invece di un certificato X.509. L’uso delle chiavi grezze per l’autenticazione di client e server è abilitato tramite i parametri “smtpd_tls_enable_rpk = yes” e “smtp_tls_enable_rpk = yes”, ma il comportamento durante la verifica dipende fortemente dal livello di sicurezza impostato e dal supporto delle chiavi grezze nell’implementazione TLS locale (vedi documentazione).
- Aggiunto il supporto iniziale per i file di configurazione OpenSSL. Per specificare un collegamento a un file con impostazioni TLS, viene proposto il parametro tls_config_file e per specificare il nome della sezione con impostazioni dal file di configurazione, viene proposto il parametro “tls_config_name”. Il collegamento ai file di configurazione OpenSSL può essere utilizzato per ridurre la dipendenza dalle impostazioni di distribuzione, dove la modifica del livello di sicurezza può portare ad un aumento della percentuale di messaggi inviati senza crittografia.
- Nelle intestazioni dei messaggi, la formattazione dei numeri dei giorni nelle date è stata modificata: i giorni da 1 a 9 ora sono riempiti con uno zero anziché con uno spazio (ad esempio "01", "02", ecc.). La modifica è stata apportata perché RFC 5322 consiglia di utilizzare singoli spazi come delimitatori nelle date.
- Aggiunta protezione contro alcune tipologie di attacchi “Blind” (attacchi SSRF su client web volti ad accedere al server tramite SMTP), che viene applicata quando è impostata l'impostazione “smtpd_forbid_unauth_pipelining = yes” (predefinita).
- Per impostazione predefinita, è abilitata l'impostazione "smtpd_forbid_bare_newline = normalize", che protegge il server dagli attacchi di "contrabbando SMTP", che consentono di dividere un messaggio in più messaggi diversi attraverso l'uso di una sequenza non standard per separare le lettere. È stata inoltre aggiunta la protezione contro gli attacchi di contrabbando SMTP in uscita, in cui un utente malintenzionato utilizza un server basato su Postfix per attaccare un altro server SMTP. Per impostazione predefinita, l'impostazione "cleanup_replace_stray_cr_lf = yes" è abilitata, sostituendo i caratteri extra E allo spazio.
- Nell'implementazione del client DNS, la dimensione dei risultati delle query DNS restituiti è ora limitata a 100 record, ovvero 20 volte maggiore del numero massimo supportato nel client SMTP. Indirizzi IP per un server.
- I parametri “disable_dns_lookup” e “permit_mx_backup”, così come alcuni parametri di configurazione TLS, sono stati deprecati.
- Il supporto per le impostazioni deprecate circa 20 anni fa è stato interrotto: "permit_naked_ip_address", "check_relay_domains" e "reject_maps_rbl".
Fonte: opennet.ru
