Après un an de développement, la nouvelle branche stable du serveur de messagerie Postfix - 3.6.0 - est sortie. En même temps, il a été annoncé que le support de la branche Postfix 3.2, sortie au début de 2017, allait cesser. Postfix est l'un des rares projets combinant à la fois une haute sécurité, une fiabilité et des performances, ce qui a été possible grâce à une architecture bien pensée et à une politique suffisamment stricte de mise en forme du code et d'audit des patches. Le code du projet est distribué sous les licences EPL 2.0 (Eclipse Public License) et IPL 1.0 (IBM Public License).
Selon une enquête automatisée d'avril auprès d'environ 600 000 serveurs de messagerie, serveursPostfix est utilisé sur 33.66 % (34.29 % l'année dernière) des serveurs de messagerie, Exim représente 59.14 % (57.77 %), Sendmail — 3.6 % (3.83 %), MailEnable — 2.02 % (2.12 %), MDaemon — 0.60 % (0.77 %), Microsoft Exchange — 0.32 % (0.47 %).
Les principales nouveautés :
- En raison de changements dans les protocoles internes utilisés pour l'interaction entre les composants de Postfix, il est impératif d'arrêter le serveur de messagerie avant la mise à jour de serveurs avec la commande «postfix stop». Sinon, des défaillances peuvent être observées lors de l'interaction avec les processus pickup, qmgr, verify, tlsproxy et postscreen, ce qui peut entraîner des retards dans l'envoi des e-mails jusqu'au redémarrage de Postfix.
- Il a été procédé à un nettoyage des mentions des termes «white» et «black», perçus par certains membres de la communauté comme une discrimination raciale. Au lieu de «whitelist» et «blacklist», il convient désormais d'utiliser «allowlist» et «denylist» (par exemple, les paramètres postscreen_allowlist_interfaces, postscreen_denylist_action et postscreen_dnsbl_allowlist_threshold). Ces changements concernent la documentation, les paramètres du processus postscreen (pare-feu intégré) et l'affichage des informations dans les journaux. postfix/postscreen[pid]: ALLOWLIST VETO [address]:port postfix/postscreen[pid]: ALLOWLISTED [address]:port postfix/postscreen[pid]: DENYLISTED [address]:port
Pour conserver les anciens termes dans les journaux, un paramètre «respectful_logging = no» est prévu, qui doit être spécifié dans main.cf avant «compatibility_level = 3.6». Le support des anciens noms de paramètres postscreen a été maintenu pour assurer la compatibilité rétroactive. Le fichier de configuration «master.cf» reste également inchangé.
- Dans le mode « compatibility_level = 3.6 », un passage par défaut à l'utilisation de la fonction de hachage SHA256 au lieu de MD5 a été effectué. Lors de la définition d'une version antérieure dans le paramètre compatibility_level, MD5 continue d'être appliqué, mais pour les paramètres liés à l'utilisation des hachages, où l'algorithme n'est pas explicitement défini, un avertissement sera enregistré dans le journal. La prise en charge de la version d'exportation du protocole d'échange de clés de Diffie-Hellman a été interrompue (la valeur du paramètre tlsproxy_tls_dh512_param_file est maintenant ignorée).
- Le diagnostic des problèmes liés à l'indication d'un programme de traitement incorrect dans master.cf a été simplifié. Pour identifier de telles erreurs, chaque service interne, y compris postdrop, annonce désormais le nom du protocole avant de commencer l'échange de données, et chaque processus client, y compris sendmail, vérifie la correspondance du nom du protocole annoncé avec la variante prise en charge.
- Un nouveau type de correspondance « local_login_sender_maps » a été ajouté pour une gestion flexible de l'attribution de l'adresse envelope de l'expéditeur (transmise dans la commande « MAIL FROM » lors de la session SMTP) dans les processus sendmail et postdrop. Par exemple, pour autoriser les utilisateurs locaux, à l'exception de root et postfix, à spécifier uniquement leurs identifiants dans sendmail en utilisant la liaison UID au nom, les paramètres suivants peuvent être utilisés : /etc/postfix/main.cf: local_login_sender_maps = inline:{ { root = *}, { postfix = * } }, pcre:/etc/postfix/login_senders /etc/postfix/login_senders: # Il est permis de spécifier à la fois les identifiants et les formes identifiant@domaine. /(.+)$/ $1 $1…@example.com
- Un paramètre a été ajouté et activé par défaut : « smtpd_relay_before_recipient_restrictions=yes », dans lequel le serveur SMTP vérifiera les restrictions smtpd_relay_restrictions avant les restrictions smtpd_recipient_restrictions, et non l'inverse, comme auparavant.
- Un paramètre « smtpd_sasl_mechanism_list » a été ajouté, par défaut défini sur « !external, static:rest » pour éviter les erreurs déroutantes, lorsque le backend SASL déclare prendre en charge le mode « EXTERNAL », qui n'est pas pris en charge dans Postfix.
- Lors de la résolution des noms dans DNS, une nouvelle API prenant en charge le multithreading (threadsafe) est utilisée par défaut. Pour compiler avec l'ancienne API, il faut spécifier lors de la compilation « make makefiles CCARGS=»-DNO_RES_NCALLS… ».
- Le mode « enable_threaded_bounces = yes » a été ajouté pour intégrer les notifications sur les problèmes de livraison, les retards de livraison ou la confirmation de livraison avec le même identifiant de discussion (la notification sera affichée par le client de messagerie dans le même fil, avec les autres messages de la conversation).
- L'utilisation de la base de données système /etc/services pour définir les numéros de ports TCP pour SMTP et LMTP a été arrêtée par défaut. À la place, les numéros de ports sont configurés via le paramètre known_tcp_ports (par défaut, lmtp=24, smtp=25, smtps=submissions=465, submission=587). Si un service est omis dans known_tcp_ports, /etc/services continue d'être utilisé.
- Le niveau de compatibilité (« compatibility_level ») a été augmenté à la valeur « 3.6 » (dans le passé, ce paramètre a été modifié deux fois ; en plus de 3.6, les valeurs 0 (par défaut), 1 et 2 sont également prises en charge). À partir de maintenant, le « compatibility_level » changera en fonction du numéro de version dans laquelle des modifications ont été apportées, entraînant des ruptures de compatibilité. Des opérateurs de comparaison distincts tels que « <=level » et « < level » ont été ajoutés pour vérifier les niveaux de compatibilité dans main.cf et master.cf (les opérateurs de comparaison standard ne conviennent pas, car ils considèrent 3.10 comme inférieur à 3.9).
Source : opennet.ru
