Postfix nasce con l'intento di sostituire Sendmail come server di posta. E' stato concepito quindi con un occhio di riguardo alla compatibilità con questo sistema di modo da facilitarne la migrazione.
Inoltre è studiato con molta attenzione nei riguardi della sicurezza tanto da venire considerato da molti il più sicuro mailer in circolazione.
Questo sistema di posta anzichè essere costituito da un unico grosso programma che effettua la maggior parte delle azioni è suddiviso in diversi programmi che svolgono una azione specifica e un programma principale che si occupa di chiamare il programma giusto quando necessario e di gestire le varie azioni. Solo il programma master necessita di privilegi elevati e va infatti lanciato da root, gli altri invece possono girare con privilegi molto bassi, ad esempio usando un utente creato appositamente, inoltre possono essere eseguiti in un ambiente "gabbia" chroot.
In questo modo si ha un isolamento dei singoli processi con un maggior controllo sulle singole azioni eseguite dal server. Inoltre è pensato per resistere a condizioni di lavoro con carichi di traffico elevati e utilizza particolari routines per evitare che un eventuale crash possa compromettere il comportamento dell'intera macchina. Oltre a non avere nessun programma SUID, Postfix non "crede" al contenuto delle code e in se non conosce il contenuto dei file in coda. I programmi che si occupano di un passaggio dell'elaborazione dati effettuano i controlli degli stessi allo scopo di indirizzarli verso il programma o la coda giusta.
Ogni programma che compone questo complesso sistema agisce in modo autonomo senza avere processi "figli" e in questo modo si cerca di evitare relazioni tra i processi che potrebbero condizionare il comportamento dei child in caso il processo "genitore" sia compromesso.
I dati che vengono ricevuti dalla rete vengono opportunamente filtrati e subiscono controlli diversi dai singoli programmi che si occupano della loro elaborazione, inoltre si evita di salvare tali dati sul disco ma vengono processati in primis dal programma e susseguentemente passati al programma successivo.
Postfix si avvale principalmente di quattro importanti code:
maildrop, incoming, active, deferred
La posta viene innanzitutto depositata in maildrop da dove dopo alcune elaborazioni passa alla coda incoming, questa coda è per la posta che è appena arrivata e che non è ancora stata elaborata dal manager delle code. La coda active invece è una piccola zona in cui la posta al suo interno è aperta dal manager ed è in attesa di essere instradata. Quella posta che non può, per vari motivi, essere instradata viene mandata alla coda deferred.
Il gestore delle code mantiene in memoria solo i dati presenti nella coda active in questo modo si evita che il processo si intasi in caso di una grossa mole di traffico.
Oltre a queste code Postfix mantiene due spazi "parcheggio" una si chiama hold e contiene tutti quei messaggi che sono congelati nella coda e per i quali non viene attuato nessun tentativo di smistamento. L'unico modo di rilasciare questi messaggi è con il comando postsuper. Il secondo parcheggio invece si chiama corrupt e al suo interno vengono salvati quei file che non sono riconosciuti validi, e vengono lasciati lì per permettere all'amministratore di controllarli.