Après presque un an de développement, la nouvelle branche stable du serveur de messagerie Postfix — 3.9.0 a été publiée. Parallèlement, le support de la branche Postfix 3.5, sortie au début de 2020, a été arrêté. Postfix est l'un des rares projets qui allie à la fois haute sécurité, fiabilité et performance, ce qui a été réalisé grâce à une architecture bien pensée et à une politique assez stricte concernant la rédaction du code et l'audit des patchs. Le code du projet est écrit en C et est distribué sous les licences EPL 2.0 (licence publique Eclipse) et IPL 1.0 (licence publique IBM).
Selon une enquête automatisée de janvier portant sur environ 400 000 serveurs de messagerie, serveurs, Postfix est utilisé sur 36,81 % (contre 33,18 % l'année dernière) des serveurs de messagerie, la part d'Exim s'élève à 56,61 % (contre 60,27 % l'année dernière), 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 %).

Les principales nouveautés :
- Un client pour MongoDB a été ajouté, permettant de stocker dans cette SGBD une base d'utilisateurs virtuels, des alias, des listes de correspondance d'adresses et divers tableaux de vérification. Pour configurer l'accès à MongoDB, un type de table « mongodb » a été ajouté. Par exemple, « alias_maps = proxy:mongodb:/etc/postfix/mongo.cf », où mongo.cf est le fichier de configuration de connexion à MongoDB et de filtrage des requêtes.
- Dans l'agent de livraison locale, l'exportation de l'identifiant de redirection, transmise lors de la session SMTP via le paramètre ENVID (Envelope ID) dans la commande ESMTP MAIL (RFC 3461), a été ajoutée. L'identifiant est enregistré dans la variable d'environnement ENVID et est transmis à l'agent de livraison pipe via le paramètre de ligne de commande « ${envid} ».
- Des paramètres ont été ajoutés aux clients pour le stockage des données dans MySQL (« mysql: ») et PostgreSQL (« pgsql: ») : « idle_interval » pour définir le temps d'inactivité avant la fermeture de la connexion et « retry_interval » pour définir le minuteur de réessai des requêtes. Par défaut, ces paramètres sont définis à 60 secondes. La valeur de « retry_interval » peut être réduite, par exemple, pour diminuer le temps de récupération après des erreurs, si un seul serveur est utilisé dans l'attribut « hosts ».
- Dans le client pour MySQL, une configuration « charset » a été ajoutée pour spécifier l'encodage des caractères par défaut. Par défaut, la valeur « utf8mb4 » est utilisée, correspondant aux paramètres par défaut dans MySQL 8.0 (des versions antérieures utilisaient la valeur « latin1 »). Le support des versions antérieures à MySQL 4.0 (c'est-à-dire des versions sorties avant 2003) a été arrêté.
- Il est maintenant possible de demander une clé publique auto-signée (raw) pour TLS, qui n'est pas liée à une autorité de certification, au lieu d'un certificat X.509. L'utilisation des clés raw pour l'authentification des clients et des serveurs est activée via les paramètres « smtpd_tls_enable_rpk = yes » et « smtp_tls_enable_rpk = yes », mais le comportement lors de la vérification dépend fortement du niveau de sécurité défini et de la prise en charge des clés raw dans l'implémentation locale de TLS (voir la documentation).
- Un support initial pour les fichiers de configuration OpenSSL a été ajouté. Pour spécifier le lien vers un fichier contenant les paramètres TLS, le paramètre tls_config_file est proposé, et pour indiquer le nom de la section avec les paramètres du fichier de configuration, le paramètre « tls_config_name » est utilisé. La liaison aux fichiers de configuration OpenSSL peut réduire la dépendance aux paramètres des distributions, dont le changement du niveau de sécurité peut entraîner une augmentation de la proportion de messages envoyés sans chiffrement.
- Le formatage des numéros de jours dans les dates a été modifié dans les en-têtes de messages — les jours de 1 à 9 sont maintenant complétés par des zéros au lieu d'espaces (c'est-à-dire « 01 », « 02 », etc.). Ce changement a été effectué car la RFC 5322 recommande d'utiliser des espaces simples comme séparateurs dans les dates.
- Une protection contre certains types d'attaques « Blind » (attaques SSRF sur des clients web visant à accéder au serveur via SMTP) a été ajoutée, qui s'applique lorsque le paramètre « smtpd_forbid_unauth_pipelining = yes » est activé (par défaut).
- Par défaut, le paramètre « smtpd_forbid_bare_newline = normalize » est activé, protégeant le serveur contre les attaques de type « SMTP smuggling », qui permettent de fragmenter un message en plusieurs messages différents en utilisant une séquence non standard pour séparer les courriers. Une protection contre les attaques SMT smuggling sortantes a également été ajoutée, où l'attaquant utilise le serveur basé sur Postfix pour attaquer un autre serveur SMTP. Par défaut, le paramètre « cleanup_replace_stray_cr_lf = yes » est activé, remplaçant les caractères supplémentaires et par des espaces.
- Dans l'implémentation du client DNS, la taille des résultats retournés des requêtes DNS est maintenant limitée à 100 enregistrements, soit 20 fois plus que le nombre maximal pris en charge dans le client SMTP. adresses IP pour un seul serveur.
- Les paramètres « disable_dns_lookup » et « permit_mx_backup » ainsi que certains paramètres de configuration TLS ont été déclarés obsolètes.
- La prise en charge des paramètres qui ont été déclarés obsolètes il y a environ 20 ans a été interrompue : « permit_naked_ip_address », « check_relay_domains » et « reject_maps_rbl ».
Source : opennet.ru
