Dopo un anno di sviluppo, è stata rilasciata una nuova versione stabile del server di posta Postfix — 3.6.0. Allo stesso tempo, è stata annunciata la cessazione del supporto per la versione Postfix 3.2, rilasciata all'inizio del 2017. Postfix è uno dei rari progetti che combina alta sicurezza, affidabilità e prestazioni, cosa che è stata ottenuta grazie a un'architettura ben studiata e a una politica rigorosa di scrittura del codice e audit delle patch. Il codice del progetto è distribuito sotto le licenze EPL 2.0 (Eclipse Public License) e IPL 1.0 (IBM Public License).
In base a un sondaggio automatizzato di aprile su circa 600.000 server di posta, serverPostfix è utilizzato nel 33,66% (34,29% un anno fa) dei server di posta, la quota di Exim è del 59,14% (57,77%), Sendmail è al 3,6% (3,83%), MailEnable al 2,02% (2,12%), MDaemon allo 0,60% (0,77%), Microsoft Exchange allo 0,32% (0,47%).
Novità principali:
- A causa della modifica dei protocolli interni utilizzati per l'interazione tra i componenti di Postfix, è necessario fermare il server di posta prima dell'aggiornamento server con il comando «postfix stop». In caso contrario, potrebbero verificarsi errori durante l'interazione con i processi pickup, qmgr, verify, tlsproxy e postscreen, causando ritardi nell'invio delle email fino al riavvio di Postfix.
- È stata effettuata una pulizia dei termini «white» e «black», percepiti da alcuni membri della comunità come discriminazione razziale. Invece di «whitelist» e «blacklist», ora dovrebbero essere usati «allowlist» e «denylist» (ad esempio, i parametri postscreen_allowlist_interfaces, postscreen_denylist_action e postscreen_dnsbl_allowlist_threshold). Le modifiche riguardano la documentazione, le impostazioni del processo postscreen (firewall integrato) e la registrazione delle informazioni nei log. postfix/postscreen[pid]: ALLOWLIST VETO [address]:port postfix/postscreen[pid]: ALLOWLISTED [address]:port postfix/postscreen[pid]: DENYLISTED [address]:port
Per mantenere i termini precedenti nei log, è previsto il parametro «respectful_logging = no», che deve essere specificato in main.cf prima di «compatibility_level = 3.6». Il supporto per i vecchi nomi delle impostazioni postscreen è stato mantenuto per garantire la compatibilità retroattiva. Anche il file di configurazione «master.cf» rimane invariato.
- In modalità «compatibility_level = 3.6», è stato attivato per impostazione predefinita l'uso della funzione di hash SHA256 invece di MD5. Se viene impostata una versione precedente nel parametro compatibility_level, continua ad essere utilizzato MD5, ma per le impostazioni relative all'uso degli hash, in cui l'algoritmo non è stato specificato esplicitamente, verrà visualizzato un avviso nel log. È stata interrotta la supporto per la variante di esportazione del protocollo di scambio delle chiavi di Diffie-Hellman (il valore del parametro tlsproxy_tls_dh512_param_file è ora ignorato).
- Semplificata la diagnosi dei problemi legati all'indicazione di un programma di gestione errato in master.cf. Per identificare tali errori, ogni servizio interno, incluso postdrop, ora annuncia il nome del protocollo prima dell'inizio dello scambio di dati, e ogni processo client, incluso sendmail, verifica la corrispondenza del nome del protocollo dichiarato con la versione supportata.
- È stato aggiunto un nuovo tipo di mappatura «local_login_sender_maps» per una gestione flessibile della destinazione dell'indirizzo envelope del mittente (fornito nel comando «MAIL FROM» durante la sessione SMTP) nei processi sendmail e postdrop. Ad esempio, per consentire agli utenti locali, escluse le entità root e postfix, di indicare solo i propri logins in sendmail, utilizzando il legame UID al nome, si possono utilizzare le seguenti impostazioni: /etc/postfix/main.cf: local_login_sender_maps = inline:{ { root = *}, { postfix = * } }, pcre:/etc/postfix/login_senders /etc/postfix/login_senders: # Consentita l'indicazione sia di logins che della forma login@dominio. /(.+)/ $1 $1…@example.com
- È stata aggiunta e attivata per impostazione predefinita la configurazione «smtpd_relay_before_recipient_restrictions=yes», per la quale il server SMTP verificherà le restrizioni smtpd_relay_restrictions prima delle smtpd_recipient_restrictions, e non viceversa come in precedenza.
- È stato aggiunto il parametro «smtpd_sasl_mechanism_list», impostato per impostazione predefinita su «!external, static:rest» per prevenire errori confusi, nel caso in cui il backend SASL dichiari di supportare la modalità «EXTERNAL», che non è supportata in Postfix.
- Nella risoluzione dei nomi in DNS viene utilizzato per impostazione predefinita un nuovo API che supporta la multithreading (threadsafe). Per costruire con il vecchio API, è necessario specificare al momento della costruzione «make makefiles CCARGS=»-DNO_RES_NCALLS…».
- È stata aggiunta l'opzione «enable_threaded_bounces = yes» per l'inserimento delle notifiche sui problemi di consegna, sulle consegne in ritardo o sulla conferma della consegna con lo stesso identificativo della discussione (la notifica sarà mostrata dal client di posta nella stessa conversazione, insieme agli altri messaggi scambiati).
- Per impostazione predefinita, è stata interrotta l'uso del database di sistema /etc/services per determinare i numeri di porta TCP per SMTP e LMTP. Invece, i numeri di porta vengono configurati tramite il parametro known_tcp_ports (di default lmtp=24, smtp=25, smtps=submissions=465, submission=587). Nel caso in cui un servizio non sia presente in known_tcp_ports, continuerà ad essere utilizzato /etc/services.
- Il livello di compatibilità («compatibility_level») è stato aumentato a «3.6» (in passato, il parametro è stato modificato due volte; oltre a 3.6 sono supportati i valori 0 (predefinito), 1 e 2). Da ora in poi, il «compatibility_level» cambierà al numero di versione in cui sono state apportate modifiche che compromettono la compatibilità. Sono stati aggiunti operatori di confronto separati per verificare i livelli di compatibilità in main.cf e master.cf, come «<=level» e «< level» (gli operatori di confronto standard non possono essere utilizzati, poiché considerano 3.10 minore di 3.9).
Fonte: opennet.ru
