Dopo quasi un anno di sviluppo, è stato rilasciato un nuovo ramo stabile del server di posta Postfix — 3.9.0. Allo stesso tempo, è stata annunciata la fine del supporto per il ramo Postfix 3.5, rilasciato all'inizio del 2020. Postfix è uno dei rari progetti che combina alta sicurezza, affidabilità e prestazioni, ottenuta grazie a un'architettura ben concepita e a una politica piuttosto rigorosa per la gestione del codice e l'audit delle patch. Il codice del progetto è scritto in C e distribuito con le licenze EPL 2.0 (Eclipse Public License) e IPL 1.0 (IBM Public License).
Secondo un sondaggio automatizzato di gennaio, circa 400.000 server di posta server, Postfix è utilizzato nel 36,81% (un anno fa 33,18%) dei server di posta, Exim detiene il 56,61% (un anno fa 60,27%), 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%).

Novità principali:
- È stato aggiunto un client per MongoDB, che consente di memorizzare in questo DBMS un database di utenti virtuali, alias, elenchi di corrispondenza degli indirizzi e varie tabelle di verifica. Per configurare l'accesso a MongoDB è stato aggiunto il tipo di tabelle «mongodb». Ad esempio, «alias_maps = proxy:mongodb:/etc/postfix/mongo.cf», dove mongo.cf è il file con le impostazioni di connessione a MongoDB e il filtro delle query.
- Nel delivery agent locale è stata aggiunta l'esportazione dell'identificatore di inoltro, trasmesso durante la sessione SMTP tramite il parametro ENVID (Envelope ID) nel comando ESMTP MAIL (RFC 3461). L'identificatore è registrato nella variabile d'ambiente ENVID e viene passato all'agente di consegna pipe tramite il parametro della riga di comando «${envid}».
- Nei client per la memorizzazione dei dati in MySQL («mysql:») e PostgreSQL («pgsql:») sono stati aggiunti i parametri: «idle_interval» per definire il tempo di inattività prima della chiusura della connessione e «retry_interval» per impostare il timer per il ripetuto invio di richieste. Per impostazione predefinita, ai parametri è assegnato un valore di 60 secondi. Il valore di «retry_interval» può essere ridotto, ad esempio, per accorciare il tempo di recupero dopo errori, nel caso in cui venga utilizzato solo un server nell'attributo «hosts».
- Nel client per MySQL è stata aggiunta l'impostazione «charset» per specificare la codifica dei caratteri predefiniti. Per impostazione predefinita, viene utilizzato il valore «utf8mb4», corrispondente alle impostazioni predefinite in MySQL 8.0 (nelle versioni precedenti veniva utilizzato il valore «latin1»). È stata interrotta la compatibilità con le versioni precedenti a MySQL 4.0 (cioè versioni rilasciate prima del 2003).
- È stata fornita la possibilità opzionale di richiedere una chiave pubblica auto-firmata (raw) per TLS, non vincolata a un'autorità di certificazione, al posto di un certificato X.509. L'uso di chiavi raw per l'autenticazione di client e server si attiva tramite le impostazioni "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 raw nell'implementazione locale di TLS (vedere la documentazione).
- È stato aggiunto il supporto iniziale per i file di configurazione OpenSSL. Per indicare un percorso a un file di impostazioni TLS è stata proposta l'impostazione tls_config_file, e per specificare il nome della sezione con le impostazioni dal file di configurazione, l'impostazione "tls_config_name". È possibile utilizzare il legame con i file di configurazione OpenSSL per ridurre la dipendenza dalle impostazioni delle distribuzioni, il cui cambiamento del livello di sicurezza può portare a un aumento della percentuale di messaggi inviati senza crittografia.
- Nelle intestazioni dei messaggi è stato modificato il formato dei numeri dei giorni nelle date: i giorni da 1 a 9 ora sono preceduti da uno zero anziché da uno spazio (ad es. "01", "02" ecc.). Questa modifica è stata apportata in quanto la RFC 5322 raccomanda di utilizzare spazi singoli come delimitatori nelle date.
- È stata aggiunta una protezione contro alcuni tipi di attacchi "Blind" (attacchi SSRF sui web client, mirati a invocare il server tramite SMTP), che si applica quando l'impostazione "smtpd_forbid_unauth_pipelining = yes" è attivata (di default).
- Di default è attivata l'impostazione "smtpd_forbid_bare_newline = normalize", che offre protezione al server contro attacchi di tipo "SMTP smuggling", permettendo di suddividere un singolo messaggio in più messaggi diversi tramite l'uso di sequenze non standard per separare le email. È stata aggiunta anche una protezione contro attacchi di smuggling SMTP in uscita, in cui l'attaccante utilizza un server basato su Postfix per attaccare un altro server SMTP. Di default è abilitata l'impostazione "cleanup_replace_stray_cr_lf = yes", che sostituisce i caratteri extra e con uno spazio.
- Nell'implementazione del client DNS, la dimensione dei risultati restituiti dalle query DNS è ora limitata a 100 record, il che è 20 volte superiore al numero massimo supportato dal client SMTP. indirizzi IP per un singolo server.
- Sono stati declassati gli parametri "disable_dns_lookup" e "permit_mx_backup", così come alcuni parametri di configurazione TLS.
- Supporto per le impostazioni annunciate come obsolete circa 20 anni fa è stato interrotto: «permit_naked_ip_address», «check_relay_domains» e «reject_maps_rbl».
Fonte: opennet.ru
