Postfix är en serverprogramvara för e-post (SMTP) som utvecklats av IBM-anställde Wietse Venema. Den är fri programvara och fungerar under de flesta varianter av Unix, däribland AIX, Solaris, Linux, IRIX, HP-UX, FreeBSD, NetBSD och OpenBSD. Programmet lanserades först som VMailer, därefter i december 1998 under namnet IBM Secure Mailer, och har därefter hetat Postfix. Fördelar med Postfix är att den är snabb, säker, samt lätt att använda och konfigurera. Den har ett sendmail-liknande gränssnitt utåt (till exempel programmen sendmail(8), newaliases(1) och mailq(1)), så ett byte därifrån bör inte ge några större problem.
Kännetecknande för Postfix är att den, liksom qmail, är uppbyggd av ett antal separata processer i stället för ett stort program. Processerna kommunicerar via domain sockets eller pipes och körs i de flesta fall under ett icke-privilegierat konto. Flera av dem kan även köras i en chroot-miljö för ökad säkerhet. Alla Postfix-processer skapas och övervakas av master-processen.
En viktig egenskap i Postfix är att den använder generella uppslagstabeller, lookup tables, för mängder av olika uppgifter. En uppslagstabell motsvarar ungefär en hashtabell och ger en viss sträng tillbaka givet en viss uppslagsnyckel. Tabeller kan vara i många olika format, bl.a. dbm, reguljära uttryck (både vanliga och PCRE), LDAP, MySQL och PostgreSQL. Man kan till exempel använda uppslagstabeller för att reglera vilka klienter och/eller avsändaradresser som ska tillåtas, eller bestämma vilka adressomskrivningar som ska göras.
Postfix är inte lika flexibel som sendmail när det gäller adressomskrivningar, men är i övrigt rik på finesser -- till exempel TLS, SMTP-autentisering via SASL, samt VERP. Postfix tillhandahåller också många metoder för att motarbeta spam, och har ett flexibelt gränssnitt för att integrera produkter från tredje part.
Postfix vidareutvecklas nästan helt av Wietse Venema själv. Två parallella utvecklingsspår finns; den stabila versionen och den experimentella. Alla nya funktioner introduceras i den experimentella versionen, och när programkoden och användargränssnittet har stabiliserat sig så hamnar funktionen även i den stabila utgåvan. Den experimentella versionen är också stabil på så vis att den är fullt användbar i produktionsmiljöer, men den är naturligtvis mindre beprövad än den stabila versionen och kan få inkompatibla förändringar i användargränssnittet.