Postfix (programvara)

Postfix
Originalförfattare Wietse Venema vid IBM Thomas J. Watson Research Center
Utvecklare Venema och många andra
Initial release 14 december 1998 ; 24 år sedan ( 1998-12-14 )
Stabil frisättning
3.7.4 / 21 januari 2023 ; 47 dagar sedan ( 2023-01-21 )
Förhandsgranska release
3.8-20230308 / 8 mars 2023 ; 1 dag sedan ( 2023-03-08 )
Förvar
Skrivet i C
Operativ system Cross-plattform
Typ E-postöverföringsagent
Licens IBM Public License eller Eclipse Public License
Hemsida www .postfix .org

Postfix är en gratis och öppen källkodspostöverföringsagent ( MTA) som dirigerar och levererar elektronisk post .

Den släpps under IBM Public License 1.0 som är en fri mjukvarulicens . Alternativt, från och med version 3.2.5, är den tillgänglig under Eclipse Public License 2.0 efter användarens val.

Ursprungligen skriven 1997 av Wietse Venema vid IBM Thomas J. Watson Research Center i New York , och släpptes först i december 1998, Postfix fortsätter från och med 2022 att aktivt utvecklas av dess skapare och andra bidragsgivare. Programvaran är också känd under sina tidigare namn VMailer och IBM Secure Mailer . Namnet Postfix är en sammansättning av "post" (vilket är ett annat ord för "mail") och "fix" [ citat behövs ] (vilket är för annan programvara som inspirerat Postfix-utveckling).

I en studie publicerad den 1 juni 2022 av E-Soft, Inc., körde ungefär 34 % av de allmänt tillgängliga e-postservrarna på Internet Postfix, vilket gör den till den näst mest populära e-postservern bakom Exim . Notera: den här undersökningen täcker mindre än 25 % av de 4+ miljoner [ citat behövs ] som kan nås SMTP-servrar på Internet.

Typisk utplacering

Som en SMTP- server implementerar Postfix ett första lager av försvar mot spambots och skadlig programvara . Administratörer kan kombinera Postfix med annan programvara som tillhandahåller spam-/virusfiltrering (t.ex. Amavisd-new ), meddelandebutiksåtkomst (t.ex. Dovecot ) eller komplexa SMTP -nivåaccesspolicyer (t.ex. postfwd , milter-regex , policyd- vikt ).

Som en SMTP- klient implementerar Postfix en högpresterande parallelliserad postleveransmotor. Postfix kombineras ofta med e-postlistmjukvara (som Mailman ).

Operativsystem

Postfix körs (eller har körts) på AIX , BSD , HP-UX , Linux , macOS , Solaris och generellt sett på alla Unix-liknande operativsystem som levereras med en C- kompilator och levererar en standard POSIX -utvecklingsmiljö. Det är standard- MTA för operativsystemen macOS , NetBSD , RedHat / CentOS och Ubuntu .

Arkitektur

Postfix består av en kombination av serverprogram som körs i bakgrunden och klientprogram som anropas av användarprogram eller av systemadministratörer.

Postfix-kärnan består av flera dussin serverprogram som körs i bakgrunden, var och en hanterar en specifik aspekt av e-postleverans. Exempel är SMTP- servern, schemaläggaren , adressomskrivaren och den lokala leveransservern. För skadekontrollsyften körs de flesta serverprogram med fasta reducerade privilegier och avslutas frivilligt efter att ha bearbetat ett begränsat antal förfrågningar. För att spara systemresurser avslutas de flesta serverprogram när de blir inaktiva.

Klientprogram körs utanför Postfix-kärnan. De interagerar med Postfix-serverprogram genom e-postleveransinstruktioner i användarens ~/.forward- fil och genom små "gate"-program för att skicka e-post eller för att begära information om köstatus.

Andra program tillhandahåller administrativt stöd för att starta eller stoppa Postfix, fråga statusinformation, manipulera kön eller för att undersöka eller uppdatera dess konfigurationsfiler.

Architecture of the software Postfix (Mail Transfer Agent).png
Gula ellipser
En av Postfix många demoner som tjänar exakt ett syfte. Denna uppdelning i många mindre programvaror anses vara en av anledningarna till att Postfix är säkert och stabilt.
Blå rutor
De blå rutor representerar så kallade uppslagstabeller . En uppslagstabell består av två kolumner (nyckel och värde) som innehåller information som används för åtkomstkontroll, e-postdirigering etc.
Orange rutor
De orangea rutor är antingen postköer eller filer. I båda fallen lagras e-postmeddelanden på beständiga media (t.ex. en hårddisk).
Vita moln
Molnen står för punkter där e-post kommer in eller lämnar Postfix. Till exempel smtpd emot e-post från andra e-postservrar eller användare medan smtp vidarebefordrar e-post till andra MTA:er.

Genomförande

Postfix-implementeringen använder säkra delmängder av C -språket och POSIX -systemets API . Dessa delmängder är begravda under ett abstraktionslager som innehåller cirka 50 % av all Postfix-källkod, och som utgör grunden på vilken alla Postfix-program är byggda. Till exempel gör "vstring"-primitiven Postfix-kod resistent mot buffertspillsattacker , och "safe open"-primitiven gör Postfix-koden resistent mot rastillståndsattacker på system som implementerar POSIX- filsystemets API. Detta abstraktionsskikt påverkar inte attackmotståndet för kod som inte är postfix, såsom kod i systembibliotek eller i tredjepartsbibliotek.

Robusthet

Konceptuellt hanterar Postfix pipelines av processer som överför ansvaret för meddelandeleverans och felmeddelanden från en process till nästa. All meddelande och meddelande "state" information finns kvar i filsystemet. Processerna i en pipeline fungerar för det mesta utan centraliserad kontroll; denna relativa autonomi förenklar felåterställning. När en process misslyckas innan den har slutfört sin del av en fil- eller protokolltransaktion, backar dess föregångare i pipelinen och försöker om begäran senare, och dess efterföljare i pipelinen kasserar oavslutat arbete. Många Postfix-demoner kan helt enkelt "dö" när de stöter på ett problem; de startas om automatiskt när nästa serviceförfrågan kommer. Detta tillvägagångssätt gör Postfix mycket motståndskraftigt, så länge som operativsystemet eller hårdvaran inte misslyckas katastrofalt.

Prestanda

En enda Postfix-instans har klockats till ~300 meddelandeleveranser/sekund över Internet, körd på råvaruhårdvara (ett årgångs-2003 Dell 1850-system med batteristödd MegaRAID-kontroller och två SCSI -diskar). Denna leveranshastighet är en storleksordning under den "inneboende" gränsen på 2500 meddelandeleveranser/sekund som uppnåddes med e-postkön på en RAM-disk vid leverans till transporten " kassera " (med ett dubbelkärnigt Opteron -system 2007) .

Mailsystem som Postfix och Qmail uppnår hög prestanda genom att leverera post i parallella sessioner. Med postsystem som Sendmail och Exim som gör en anslutning i taget kan hög prestanda uppnås genom att skicka in begränsade partier av post parallellt, så att varje batch levereras med en annan process. Postfix och Qmail kräver parallell inlämning till olika MTA-instanser när de når sin inneboende prestandagräns, eller prestandagränserna för hårdvaran eller operativsystemet.

De leveranshastigheter som nämns ovan är till stor del teoretiska. Med bulkpostleverans bestäms den verkliga leveranshastigheten i första hand av mottagarens policy för mottagning av post och av avsändarens rykte.

Baskonfiguration

Main.cf- filen lagrar platsspecifika Postfix-konfigurationsparametrar medan master.cf definierar demonprocesser. Handledningen Postfix Basic Configuration täcker kärninställningarna som varje webbplats måste överväga, och dokumentet Postfix Standard Configuration Exempel diskuterar konfigurationsinställningar för några vanliga miljöer. Dokumentet Postfix Address Rewriting täcker adressomskrivning och e-postdirigering. Hela dokumentationssamlingen finns på Postfix Documentation

Mer komplexa Postfix-implementeringar kan inkludera: integration med andra applikationer som SpamAssassin ; stöd för flera virtuella domännamn - och använd databaser som MySQL för att styra komplexa konfigurationer.

Releasehistorik

Version Utgivningsdatum Betydande förändringar
Större Mindre
Gammal version, underhålls inte längre: 0.8 0.8.0 6 september 1999
0.8.1 6 september 1999
0.8.2 6 september 1999
0.8.3 21 september 1999
0.8.4 22 september 1999
0.8.5 22 september 1999
0.8.6 6 november 1999
0.8.7 12 november 1999
0.8.8 21 november 1999
0.8.9 10 december 1999
Gammal version, underhålls inte längre: 0.9 0.9.0 31 december 1999
0.9.1 1 januari 2000
0.9.2 3 januari 2000
0.9.3 26 januari 2000
0.9.4 29 januari 2000
0.9.5 8 mars 2000
0.9.6 29 mars 2000
0.9.7 11 maj 2000
0.9.8 30 maj 2000
0.9.9 17 september 2000
0.9.10 29 oktober 2000
0.9.11 21 november 2000
0.9.12 7 december 2000
0.9.13 9 december 2000
Gammal version, underhålls inte längre: 1.0 1.0.0 28 februari 2001
1.0.1 28 mars 2001
1.0.2 29 april 2001
1.0.3 25 maj 2001
1.0.4 30 juli 2001
1.0.5 16 september 2001
1.0.6 3 november 2001
1.0.7 13 november 2001
1.0.8 14 november 2001
Gammal version, underhålls inte längre: 1.1 1.1.0 17 januari 2002
1.1.1 21 januari 2002
1.1.2 24 januari 2002
1.1.3 1 februari 2002
1.1.4 25 februari 2002
1.1.5 10 mars 2002
1.1.6 25 mars 2002
1.1.7 30 mars 2002
1.1.8 4 maj 2002
1.1.9 12 maj 2002
1.1.10 13 maj 2002
1.1.11 27 maj 2002
1.1.12 21 november 2002
1.1.13 27 juli 2003
Gammal version, underhålls inte längre: 2.0 2.0.0 22 december 2002
2.0.1 23 februari 2003
2.0.2 23 februari 2003
2.0.3 23 februari 2003
2.0.4 23 februari 2003
2.0.5 2 mars 2003
2.0.6 4 mars 2003
2.0.7 18 mars 2003
2.0.8 14 april 2003
2.0.9 17 april 2003
2.0.10 20 maj 2003
2.0.11 8 juni 2003
2.0.12 10 juni 2003
2.0.13 28 juni 2003
2.0.14 11 augusti 2003
2.0.15 4 september 2003
2.0.16 21 januari 2004
2.0.17 21 januari 2004
2.0.18 24 januari 2004
2.0.19 11 mars 2004
2.0.20 21 april 2004
Gammal version, underhålls inte längre: 2.1 2.1.0 22 april 2004
2.1.1 2 maj 2004
2.1.2 14 juni 2004
2.1.3 17 juni 2004
2.1.4 29 juni 2004
2.1.5 14 september 2004
2.1.6 8 maj 2005
Gammal version, underhålls inte längre: 2.2 2.2.0 9 mars 2005
2.2.1 14 mars 2005
2.2.2 31 mars 2005
2.2.3 28 april 2005
2.2.4 20 juni 2005
2.2.5 18 juli 2005
2.2.6 28 november 2005
2.2.7 7 december 2005
2.2.8 2 januari 2006
2.2.9 20 februari 2006
2.2.10 5 april 2006
2.2.11 23 juli 2006
2.2.12 20 oktober 2007
Gammal version, underhålls inte längre: 2.3 2.3.0 10 juli 2006
2.3.1 23 juli 2006
2.3.2 26 juli 2006
2.3.3 24 augusti 2006
2.3.4 31 oktober 2006
2.3.5 10 december 2006
2.3.6 31 december 2006
2.3.7 29 januari 2007
2.3.8 1 mars 2007
2.3.9 22 april 2007
2.3.10 29 maj 2007
2.3.11 30 maj 2007
2.3.12 30 juli 2007
2.3.13 16 oktober 2007
2.3.14 30 januari 2008
2.3.15 4 augusti 2008
2.3.16 3 januari 2009
2.3.17 11 maj 2009
2.3.18 25 augusti 2009
2.3.19 27 augusti 2009
Gammal version, underhålls inte längre: 2.4 2.4.0 22 april 2007
2.4.1 29 maj 2007
2.4.2 30 maj 2007
2.4.3 30 juni 2007
2.4.4 30 juli 2007
2.4.5 30 juli 2007
2.4.6 16 oktober 2007
2.4.7 30 januari 2008
2.4.8 4 augusti 2008
2.4.9 30 augusti 2008
2.4.10 3 januari 2009
2.4.11 11 maj 2009
2.4.12 25 augusti 2009
2.4.13 27 augusti 2009
2.4.14 21 mars 2010
2.4.15 22 november 2010
2.4.16 28 februari 2011
Gammal version, underhålls inte längre: 2.5 2.5.0 24 januari 2008
2.5.1 15 februari 2008
2.5.2 7 maj 2008
2.5.3 26 juli 2008
2.5.4 13 augusti 2008
2.5.5 30 augusti 2008
2.5.6 3 januari 2008
2.5.7 11 maj 2009
2.5.8 28 augusti 2009 Återkallat frisläppande.
2.5.9 28 augusti 2009
2.5.10 21 mars 2010
2.5.11 22 november 2010
2.5.12 28 februari 2011
2.5.13 18 april 2011
2.5.14 6 juli 2011
2.5.15 1 september 2011
2.5.16 22 oktober 2011
2.5.17 6 februari 2012 EOL 2.5
Gammal version, underhålls inte längre: 2.6 2.6.0 11 maj 2009
2.6.1 19 maj 2009
2.6.2 3 juni 2009
2.6.3 2 augusti 2009 Oannonserad release.
2.6.4 25 augusti 2009 Återkallat frisläppande.
2.6.5 28 augusti 2009
2.6.6 19 mars 2010
2.6.7 8 juni 2010
2.6.8 23 november 2010
2.6.9 3 mars 2011
2.6.10 9 maj 2011
2.6.11 7 juli 2011
2.6.12 2 september 2011
2.6.13 24 oktober 2011
2.6.14 4 februari 2012
2.6.15 24 april 2012
2.6.16 20 maj 2012
2.6.17 1 augusti 2012
2.6.18 13 december 2012
2.6.19 3 februari 2013 EOL 2.6
Gammal version, underhålls inte längre: 2.7 2.7.0 13 februari 2010
2.7.1 8 juni 2010
2.7.2 23 november 2010
2.7.3 3 mars 2011
2.7.4 9 maj 2011
2.7.5 7 juli 2011
2.7.6 2 september 2011
2.7.7 24 oktober 2011
2.7.8 4 februari 2012
2.7.9 24 april 2012
2.7.10 20 maj 2012
2.7.11 1 augusti 2012
2.7.12 13 december 2012
2.7.13 3 februari 2013
2.7.14 22 juni 2013
2.7.15 5 september 2013
2.7.16 16 januari 2014 EOL 2.7
Gammal version, underhålls inte längre: 2.8 2.8.0 20 januari 2011 Introduktion av postscreen-demon som sitter före huvudpostfixet och fungerar som en zombieblockerare. Dessutom: DNS-vitlista, SQLite-stöd
2.8.1 22 februari 2011
2.8.2 21 mars 2011
2.8.3 9 maj 2011
2.8.4 7 juli 2011
2.8.5 3 september 2011
2.8.6 24 oktober 2011
2.8.7 7 november 2011
2.8.8 1 februari 2012
2.8.9 5 mars 2012
2.8.10 24 april 2012
2.8.11 20 maj 2012
2.8.12 1 augusti 2012
2.8.13 13 december 2012
2.8.14 4 februari 2013
2.8.15 22 juni 2013
2.8.16 5 september 2013
2.8.17 16 januari 2014
2.8.18 13 oktober 2014
2.8.19 19 oktober 2014
2.8.20 8 februari 2015 EOL 2.8
Gammal version, underhålls inte längre: 2.9 2.9.0 1 februari 2012 Memcache-stöd, gradvis nedbrytning
2.9.1 18 februari 2012
2.9.2 24 april 2012
2.9.3 20 maj 2012
2.9.4 1 augusti 2012
2.9.5 13 december 2012
2.9.6 4 februari 2013
2.9.7 22 juni 2013
2.9.8 5 september 2013
2.9.9 16 januari 2014
2.9.10 13 oktober 2014
2.9.11 19 oktober 2014
2.9.12 8 februari 2015
2.9.13 12 april 2015
2.9.14 20 juli 2015
2.9.15 10 oktober 2015 EOL 2.9
Gammal version, underhålls inte längre: 2.10 2.10.0 11 februari 2013 Stöd för TLSv1.1 och TLSv1.2
2.10.1 22 juni 2013
2.10.2 5 september 2013
2.10.3 16 januari 2014
2.10.4 13 oktober 2014
2.10.5 19 oktober 2014
2.10.6 8 februari 2015
2.10.7 12 april 2015
2.10.8 20 juli 2015
2.10.9 10 oktober 2015
2.10.10 15 maj 2016 EOL 2.10
Gammal version, underhålls inte längre: 2.11 2.11.0 15 januari 2014 Stöd för DANE
2.11.1 7 maj 2014
2.11.2 13 oktober 2014
2.11.3 19 oktober 2014
2.11.4 8 februari 2015
2.11.5 12 april 2015
2.11.6 20 juli 2015
2.11.7 10 oktober 2015
2.11.8 15 maj 2016
2.11.9 1 januari 2017
2.11.10 13 juni 2017
2.11.11 27 januari 2018
Gammal version, underhålls inte längre: 3.0 3.0.0 8 februari 2015 Stöd för internationaliserade domännamn och lokala adressdelar enligt definitionen i RFC 6530 och relaterade dokument, Postfix dynamiskt länkade bibliotek och databasplugin, operationer på flera uppslagstabeller, pseudotabeller som gör enkla saker lätta att implementera och mer.
3.0.1 12 april 2015
3.0.2 20 juli 2015
3.0.3 10 oktober 2015
3.0.4 21 februari 2016
3.0.5 15 maj 2016
3.0.6 28 augusti 2016
3.0.7 1 oktober 2016
3.0.8 1 januari 2017
3.0.10 13 juni 2017
3.0.11 28 oktober 2017
3.0.12 27 januari 2018
3.0.13 20 maj 2018
3.0.14 24 november 2018
3.0.15 26 februari 2019
Gammal version, underhålls inte längre: 3.1 3.1.0 24 februari 2016 Förenklad installation av opportunistisk TLS- och SMTP-servernyckel/certifikathantering, positivt och negativt DNS-svar TTL-stöd i postscreen, SASL AUTH-hastighetsgräns i SMTP-servern, säkerhetsgräns för antalet adressverifieringsförfrågningar, JSON-kölistning, destinationsoberoende leverans räntefördröjning, bl.a.
3.1.1 15 maj 2016
3.1.2 28 augusti 2016
3.1.3 1 oktober 2016
3.1.4 1 januari 2017
3.1.6 13 juni 2017
3.1.7 28 oktober 2017
3.1.8 27 januari 2018
3.1.9 20 maj 2018
3.1.10 24 november 2018
3.1.11 26 februari 2019
3.1.12 30 mars 2019
3.1.13 29 juni 2019
3.1.14 22 september 2019
3.1.15 3 februari 2020
Gammal version, underhålls inte längre: 3.2 3.2.0 28 februari 2017 Elliptisk kurvförhandling med OpenSSL ≥ 1.0.2 , stöd för lagrad procedur för MySQL-databaser, cidr: tabellstöd för if/endif och negation, stöd för per-klient Milter -konfiguration, "PASS" och "STRIP"-åtgärder i header/body_checks, och mer.
3.2.1 10 juni 2017
3.2.2 13 juni 2017
3.2.3 24 september 2017
3.2.4 28 oktober 2017
3.2.5 27 januari 2018
3.2.6 19 maj 2018
3.2.7 24 november 2018
3.2.8 26 februari 2019
3.2.9 30 mars 2019
3.2.10 29 juni 2019
3.2.11 21 september 2019
3.2.12 3 februari 2020
3.2.13 12 mars 2020
3.2.14 18 april 2020
3.2.15 16 maj 2020
3.2.16 14 juni 2020
3.2.17 27 juni 2020
3.2.18 24 juli 2020
3.2.19 26 juli 2020
3.2.20 7 november 2020
3.2.21 17 januari 2021
3.2.22 11 april 2021
Gammal version, underhålls inte längre: 3.3 3.3.0 21 februari 2018 Stöd för äldre version Postfix 2.11 upphörde
3.3.1 19 maj 2018
3.3.2 24 november 2018
3.3.3 26 februari 2019
3.3.4 30 mars 2019
3.3.5 29 juni 2019
3.3.6 21 september 2019
3.3.7 3 februari 2020
3.3.8 12 mars 2020
3.3.9 18 april 2020
3.3.10 16 maj 2020
3.3.11 14 juni 2020
3.3.12 27 juni 2020
3.3.13 24 juli 2020
3.3.14 26 juli 2020
3.3.15 7 november 2020
3.3.16 17 januari 2021
3.3.17 11 april 2021
3.3.18 13 juni 2021
3.3.19 24 juli 2021
3.3.20 7 november 2021
3.3.21 14 januari 2022
3.3.22 5 februari 2022
Äldre version, men fortfarande bibehållen: 3.4 3.4.0 27 februari 2019 Stödet för äldre version av Postfix 3.0 upphörde
3.4.1 07 mars 2019
3.4.2 10 mars 2019
3.4.3 10 mars 2019
3.4.4 14 mars 2019
3.4.5 30 mars 2019
3.4.6 29 juni 2019
3.4.7 21 september 2019
3.4.8 24 november 2019
3.4.9 3 februari 2020
3.4.10 12 mars 2020
3.4.11 18 april 2020
3.4.12 16 maj 2020
3.4.13 14 juni 2020
3.4.14 27 juni 2020
3.4.15 24 juli 2020
3.4.16 26 juli 2020
3.4.17 30 augusti 2020
3.4.18 7 november 2020
3.4.19 17 januari 2021
3.4.20 11 april 2021
3.4.21 13 juni 2021
3.4.22 24 juli 2021
3.4.23 7 november 2021
3.4.24 14 januari 2022
3.4.25 5 februari 2022
Äldre version, men fortfarande underhållen: 3.5 3.5.0 16 mars 2020 Stöd för äldre version av Postfix 3.1 upphörde
3.5.1 18 april 2020
3.5.2 16 maj 2020
3.5.3 14 juni 2020
3.5.4 27 juni 2020
3.5.5 24 juli 2020
3.5.6 26 juli 2020
3.5.7 30 augusti 2020
3.5.8 7 november 2020
3.5.9 17 januari 2021
3.5.10 11 april 2021
3.5.11 13 juni 2021
3.5.12 24 juli 2021
3.5.13 7 november 2021
3.5.14 14 januari 2022
3.5.15 5 februari 2022
Äldre version, men fortfarande bibehållen: 3.6 3.6.0 29 april 2021 Stöd för äldre version av Postfix 3.2 upphörde
3.6.1 13 juni 2021
3.6.2 24 juli 2021
3.6.3 7 november 2021
3.6.4 14 januari 2022
3.6.5 5 februari 2022
Aktuell stabil version: 3.7 3.7.0 5 februari 2022 Stöd för äldre version av Postfix 3.3 upphörde
Senaste förhandsversionen av en framtida version: 3.8 25 mars 2022
Legend:
Gammal version
Äldre version, fortfarande underhållen
Senaste versionen
Senaste förhandsversionen
Framtida release

Se även

Vidare läsning

externa länkar