Na bijna een jaar van ontwikkeling is de nieuwe stabiele tak van de mailserver Postfix - 3.9.0 - uitgebracht. Tegelijkertijd is aangekondigd dat de ondersteuning voor de Postfix 3.5-tak, die begin 2020 werd uitgebracht, wordt stopgezet. Postfix is een van de zeldzame projecten die tegelijkertijd hoge beveiliging, betrouwbaarheid en prestaties combineren, wat is bereikt dankzij een doordachte architectuur en een vrij strikte code- en patchauditbeleid. De code van het project is geschreven in C en wordt verspreid onder de EPL 2.0 (Eclipse Public License) en IPL 1.0 (IBM Public License).
Volgens een geautomatiseerde enquête van januari onder ongeveer 400.000 mailservers, serverswordt Postfix gebruikt op 36,81% (een jaar geleden 33,18%) van de mailservers, terwijl Exim 56,61% (een jaar geleden 60,27%) in bezit heeft, 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%).

Belangrijkste vernieuwingen:
- Er is een client toegevoegd voor MongoDB, waarmee een database van virtuele gebruikers, aliassen, adressen en verschillende controletabellen kan worden opgeslagen in deze DBMS. Voor de configuratie van de toegang tot MongoDB is een nieuw type tabellen 'mongodb' toegevoegd. Bijvoorbeeld, 'alias_maps = proxy:mongodb:/etc/postfix/mongo.cf', waar mongo.cf het bestand is met de verbindingsinstellingen voor MongoDB en de filter voor aanvragen.
- De lokale afleverdienstagent heeft de export van de doorgegeven doorstuur-ID, die tijdens de SMTP-sessie via de ENVID-parameter (Envelope ID) in het ESMTP MAIL-commando (RFC 3461) is overgedragen, toegevoegd. De ID wordt opgeslagen in de omgevingsvariabele ENVID en wordt doorgegeven aan de pijpafleveringagent via de opdrachtregelparameter '${envid}'.
- In de clients voor gegevensopslag in MySQL ('mysql:') en PostgreSQL ('pgsql:') zijn parameters toegevoegd: 'idle_interval' om de tijdsduur van inactiviteit voor het sluiten van de verbinding te bepalen en 'retry_interval' om een timer voor het opnieuw verzenden van aanvragen in te stellen. Standaard zijn deze parameters ingesteld op 60 seconden. De waarde van 'retry_interval' kan worden verlaagd, bijvoorbeeld om de hersteltijd na fouten te verkorten als slechts één server in de 'hosts'-attribuut wordt gebruikt.
- In de MySQL-client is de instelling 'charset' toegevoegd om de standaard tekencodering op te geven. Standaard wordt de waarde 'utf8mb4' gebruikt, die overeenkomt met de standaardinstellingen in MySQL 8.0 (in eerdere versies werd 'latin1' gebruikt). De ondersteuning voor versies ouder dan MySQL 4.0 (d.w.z. versies uitgegeven voor 2003) is beëindigd.
- Er is een optionele mogelijkheid toegevoegd om een zelfondertekende (raw) openbare sleutel voor TLS op te vragen, die niet aan een certificeringsinstantie is gebonden, in plaats van een X.509-certificaat. Het gebruik van raw-sleutels voor de authenticatie van clients en servers kan worden ingeschakeld via de parameters «smtpd_tls_enable_rpk = yes» en «smtp_tls_enable_rpk = yes», maar het gedrag bij verificatie hangt sterk af van het ingestelde beveiligingsniveau en de ondersteuning voor raw-sleutels in de lokale TLS-implementatie (zie documentatie).
- Er is initiële ondersteuning toegevoegd voor OpenSSL-configuratiebestanden. De parameter tls_config_file wordt voorgesteld om een verwijzing naar het bestand met TLS-instellingen op te geven, en om de naam van de sectie met instellingen uit het configuratiebestand op te geven, is de parameter «tls_config_name» geïntroduceerd. De binding aan OpenSSL-configuratiebestanden kan worden gebruikt om de afhankelijkheid van distributie-instellingen te verminderen, waarvan het beveiligingsniveau kan leiden tot een toename van het aantal berichten dat zonder encryptie wordt verzonden.
- In de headers van berichten is de opmaak van de dagnummers in datums gewijzigd — dagen van 1 tot 9 worden nu voorafgegaan door een nul in plaats van een spatie (d.w.z. «01», «02» enz.). Deze wijziging is doorgevoerd omdat RFC 5322 aanbeveelt om enkele spaties als scheidingsteken in datums te gebruiken.
- Er is bescherming toegevoegd tegen verschillende soorten «Blind»-aanvallen (SSRF-aanvallen op webclients, gericht op toegang tot de server via SMTP), die van toepassing is wanneer de instelling «smtpd_forbid_unauth_pipelining = yes» (standaard) is ingesteld.
- De instelling «smtpd_forbid_bare_newline = normalize» is standaard ingeschakeld, wat ervoor zorgt dat de server wordt beschermd tegen «SMTP smuggling»-aanvallen, waarbij één bericht in verschillende berichten kan worden opgesplitst door gebruik te maken van een niet-standaard volgorde voor het scheiden van e-mails. Ook is er bescherming toegevoegd tegen uitgaande SMTP smuggling-aanvallen, waarbij een aanvaller een Postfix-server gebruikt om een andere SMTP-server aan te vallen. Standaard is de instelling «cleanup_replace_stray_cr_lf = yes» ingeschakeld, die overbodige en tekens vervangt door een spatie.
- In de implementatie van de DNS-client is de grootte van de teruggegeven resultaten van DNS-zoekopdrachten nu beperkt tot 100 records, wat 20 keer meer is dan het maximale aantal records dat door de SMTP-client wordt ondersteund. IP-adressen voor één server.
- De parameters «disable_dns_lookup» en «permit_mx_backup» zijn als verouderd gemarkeerd, evenals enkele parameters voor TLS-configuraties.
- De ondersteuning voor instellingen, die ongeveer 20 jaar geleden als verouderd zijn verklaard, is beëindigd: «permit_naked_ip_address», «check_relay_domains» en «reject_maps_rbl».
Bron: opennet.ru
