{"id":538,"date":"2026-09-06T00:55:26","date_gmt":"2026-09-06T03:55:26","guid":{"rendered":"https:\/\/www.linuxpro.com.br\/2026\/09\/a-historia-do-postfix\/"},"modified":"2026-09-08T09:03:57","modified_gmt":"2026-09-08T12:03:57","slug":"a-historia-do-postfix","status":"publish","type":"post","link":"https:\/\/www.linuxpro.com.br\/en\/2026\/09\/a-historia-do-postfix\/","title":{"rendered":"The history of Postfix: the mail system born at IBM"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" alt=\"Mascote do LinuxPro carimbando um envelope na triagem, com o ratinho carteiro entregando a correspond\u00eancia\" src=\"\/wp-content\/uploads\/2026\/09\/postfix-historia-v3.webp\" width=\"1486\" height=\"856\" \/><\/p>\n<p>In 1997, Wietse Venema, at the IBM Thomas J. Watson Research Center, began writing an MTA so he would not have to live with Sendmail. On December 14, 1998, the code became open. It was called VMailer, then IBM Secure Mailer, then Postfix \u2014 \u201cpost\u201d for mail, \u201cfix\u201d for repair. Twenty-eight years later, Postfix 3.11.6 (August 10, 2026) still delivers mail on more Shodan-visible servers than Exim, and remains the default in many distros, including Ubuntu.<\/p>\n<p><!-- more --><\/p>\n<h2>Watson, Sendmail, and a stubborn Dutchman<\/h2>\n<p>Wietse Venema was already well known before Postfix. TCP Wrapper (<code data-no-translation=\"\">hosts.allow<\/code> \/ <code data-no-translation=\"\">hosts.deny<\/code>), SATAN, security work at Eindhoven University of Technology and later IBM. Eric Allman's Sendmail was the Unix world's MTA: a monolith, configuration that looks like an alien urinal (<code data-no-translation=\"\">sendmail.cf<\/code>), a history of holes. Venema wanted three things Sendmail did not provide for free: security by design, performance under load, and administration a human could read.<\/p>\n<p>IBM allowed the code to be opened. The first name, VMailer, ran into a trademark. IBM Secure Mailer was a laboratory name. Postfix stuck: mail, and the bugfix. IBM Public License 1.0 \u2014 OSI-approved, but with a patent clause some projects avoid. Starting with 3.2.5, the code is also available under Eclipse Public License 2.0, at the distributor's choice. Dual licensing, the same \u201cuse it without a lawsuit\u201d spirit.<\/p>\n<h2>The design: one master and many pieces<\/h2>\n<p>Postfix's trick is not a fat daemon. It is a <code data-no-translation=\"\">master<\/code> process that spawns children with minimal privileges, each with one job. The one speaking SMTP on port 25 is <code data-no-translation=\"\">smtpd<\/code>. The one delivering to the local mailbox is <code data-no-translation=\"\">local<\/code> (or <code data-no-translation=\"\">virtual<\/code>). The one managing the queue is <code data-no-translation=\"\">qmgr<\/code>. The one rewriting addresses is <code data-no-translation=\"\">trivial-rewrite<\/code>. The one sending to another MX is <code data-no-translation=\"\">smtp<\/code>. There is <code data-no-translation=\"\">pickup<\/code>, <code data-no-translation=\"\">cleanup<\/code>, <code data-no-translation=\"\">bounce<\/code>, <code data-no-translation=\"\">defer<\/code>, <code data-no-translation=\"\">error<\/code>, <code data-no-translation=\"\">flush<\/code>, <code data-no-translation=\"\">proxymap<\/code>, <code data-no-translation=\"\">verify<\/code>, <code data-no-translation=\"\">anvil<\/code>, <code data-no-translation=\"\">scache<\/code>, <code data-no-translation=\"\">tlsproxy<\/code>, <code data-no-translation=\"\">postscreen<\/code>, <code data-no-translation=\"\">dnsblog<\/code>.<\/p>\n<p>If <code data-no-translation=\"\">smtpd<\/code> suffers an overflow, the rest of the queue does not go down with it. Each service has optional chroot, its own UID, and memory and time limits. This is what Venema designed in 1997, when Sendmail advisories still appeared weekly. The queue lives in <code data-no-translation=\"\">\/var\/spool\/postfix<\/code> \u2014 <code data-no-translation=\"\">incoming<\/code>, <code data-no-translation=\"\">active<\/code>, <code data-no-translation=\"\">deferred<\/code>, <code data-no-translation=\"\">hold<\/code>, <code data-no-translation=\"\">corrupt<\/code>. <code data-no-translation=\"\">postqueue -p<\/code> and <code data-no-translation=\"\">postsuper<\/code> are the daily routine. <code data-no-translation=\"\">main.cf<\/code> fits on one screen; <code data-no-translation=\"\">master.cf<\/code> lists the services.<\/p>\n<h2>Why it beat Sendmail (and ties with Exim)<\/h2>\n<p>During the 2000 decade, Sendmail was still the default in many distros. Postfix came in through Ubuntu, Fedora, and administrators who had run a real server and no longer wanted <code data-no-translation=\"\">m4<\/code>. Dan Bernstein's Qmail had the same security obsession \u2014 and a license that held distros back. Cambridge's Exim became strong in shared hosting (cPanel). OpenSMTPD is OpenBSD's. Postfix landed in the middle: modular like Qmail, configurable like a serious tool, with a license Debian could accept.<\/p>\n<p>A small survey (E-Soft, February 2025) still put Exim ahead. A broad Shodan scan in mid-August 2026: Postfix ~2,1 million detections, Exim ~1,9 million. Some sites block Shodan; even so, the order reversed. Default on Ubuntu Server. Present in appliances, underneath Zimbra, on mailing lists, in corporate relays that do not want Exchange.<\/p>\n<h2>TLS, milter, postscreen: the grown-up MTA<\/h2>\n<p>The Postfix of 1998 spoke classic SMTP. The one of 2026 speaks everything else mail needed to avoid becoming junk:<\/p>\n<ul>\n<li>TLS (STARTTLS and port 465), DANE\/TLSA, PFS, SNI.<\/li>\n<li>Milter \u2014 the same API Sendmail invented \u2014 for SpamAssassin, OpenDKIM, OpenDMARC, rspamd.<\/li>\n<li><code data-no-translation=\"\">postscreen<\/code> in front of <code data-no-translation=\"\">smtpd<\/code>: inexpensive greylisting, dropping bots that do not speak SMTP properly before spending a heavyweight process.<\/li>\n<li>SASL (SMTP AUTH), submission 587, filter <code data-no-translation=\"\">header_checks<\/code> \/ <code data-no-translation=\"\">body_checks<\/code>, policy daemon in <code data-no-translation=\"\">smtpd_recipient_restrictions<\/code>.<\/li>\n<li>MySQL, PostgreSQL, LDAP, SQLite as maps. Virtual mailboxes without Unix accounts.<\/li>\n<\/ul>\n<p>Anyone building a mail stack on this blog still goes through Zimbra \u2014 which uses Postfix underneath \u2014 in <a href=\"\/en\/2017\/04\/install-zimbra-8\/\">Installing Zimbra 8.7.1 on Ubuntu<\/a>. The classic virtual mailbox panel is covered in <a href=\"\/en\/2026\/09\/a-historia-do-postfixadmin\/\">The history of PostfixAdmin<\/a>; its Go successor, in <a href=\"\/en\/2026\/09\/go-postfixadmin\/\">go-postfixadmin<\/a>. The hosting panel born around the same time is covered in <a href=\"\/en\/2017\/01\/a-historia-do-ispconfig\/\">The History of the ISPConfig Project<\/a>.<\/p>\n<h2>2026: 3.11.6, Qualys, and the mouse that will not retire<\/h2>\n<p>Stable 3.11.0 came out on March 5, 2026. Version 3.11.6, on August 10, brought a medium-impact fix: remote DoS and policy bypass. Qualys, with help from Claude Mythos Preview, and OpenAI's security team found most of them \u2014 more than half the defects were twenty years old or older. Venema was direct in the announcement: when he implemented Postfix, he already knew there would be errors; hence the architecture and safety nets. One hundred and fifty thousand lines, a defect rate below what he had designed it to withstand.<\/p>\n<p>The supported stable versions in September 2026 are 3.11, 3.10, 3.9, and 3.8. Version 3.7 reached end of life on March 6, 2026. Experimental 3.12 snapshots are already circulating. The gray mouse with the yellow bag labeled MAIL \u2014 Andrzej Adam Filip's mysza \u2014 remains the official mascot.<\/p>\n<p>And the author? Wietse Venema left IBM in <strong>2015<\/strong>, after eighteen years at Watson, and in the same year joined <strong>Google<\/strong>, where he stayed for eight years \u2014 leaving in <strong>2023<\/strong> and continues to this day as Postfix's maintainer. Development is public: the code is on GitHub, <a href=\"https:\/\/github.com\/vdukhovni\/postfix\" rel=\"noopener\" target=\"_blank\">github.com\/vdukhovni\/postfix<\/a> (maintained with Viktor Dukhovni); the canonical site remains at <a href=\"https:\/\/www.postfix.org\/\" rel=\"noopener\" target=\"_blank\">postfix.org<\/a>.<\/p>\n<h2>Timeline<\/h2>\n<ul>\n<li><strong>11\/1996<\/strong> \u2014 Wietse Venema arrives at the IBM Thomas J. Watson Research Center;<\/li>\n<li><strong>1997<\/strong> \u2014 starts writing the MTA that would replace Sendmail in his life;<\/li>\n<li><strong>14\/12\/1998<\/strong> \u2014 public beta of IBM Secure Mailer (later Postfix);<\/li>\n<li><strong>2005-2011<\/strong> \u2014 the MTA matures: TLS and IPv6 in the core, Milter, <code data-no-translation=\"\">postscreen<\/code>;<\/li>\n<li><strong>2015<\/strong> \u2014 Postfix 3.0; Venema leaves IBM and joins Google;<\/li>\n<li><strong>01\/2018<\/strong> \u2014 dual IPL 1.0 \/ EPL 2.0 licensing starting with 3.2.5;<\/li>\n<li><strong>2023<\/strong> \u2014 Venema leaves Google after eight years; remains the project's maintainer;<\/li>\n<li><strong>10\/08\/2026<\/strong> \u2014 audits by Qualys (with AI) and OpenAI's security team result in 3.11.6;<\/li>\n<li><strong>09\/2026<\/strong> \u2014 snapshots of the upcoming 3.12 in public testing.<\/li>\n<\/ul>\n<h2>Version and release timeline<\/h2>\n<ul>\n<li><strong>12\/1998<\/strong> \u2014 first public version (still as IBM Secure Mailer);<\/li>\n<li><strong>2002<\/strong> \u2014 Postfix 1.1 and, at year's end, 2.0: the modern foundation for the queue and configuration;<\/li>\n<li><strong>03\/2005<\/strong> \u2014 2.2: TLS and IPv6 integrated into the main code;<\/li>\n<li><strong>07\/2006<\/strong> \u2014 2.3: support arrives for <strong>Milter<\/strong>, opening the door to DKIM\/DMARC and antispam;<\/li>\n<li><strong>01\/2011<\/strong> \u2014 2.8: <code data-no-translation=\"\">postscreen<\/code> starts blocking bots before <code data-no-translation=\"\">smtpd<\/code>;<\/li>\n<li><strong>01\/2014<\/strong> \u2014 2.11: support for <strong>DANE\/TLSA<\/strong>;<\/li>\n<li><strong>02\/2015<\/strong> \u2014 <strong>3.0<\/strong>: dynamic maps and SMTPUTF8 (internationalized email);<\/li>\n<li><strong>28\/02\/2017<\/strong> \u2014 3.2.0;<\/li>\n<li><strong>28\/01\/2018<\/strong> \u2014 3.2.5: dual IPL 1.0 \/ EPL 2.0 licensing;<\/li>\n<li><strong>27\/02\/2019<\/strong> \u2014 3.4.0: SNI in the TLS server;<\/li>\n<li><strong>2020-2025<\/strong> \u2014 annual cadence at the end of the American winter: 3.5 (16\/03\/2020), 3.6 (29\/04\/2021), 3.7 (05\/02\/2022), 3.8 (17\/04\/2023), 3.9 (06\/03\/2024), 3.10 (16\/02\/2025);<\/li>\n<li><strong>05\/03\/2026<\/strong> \u2014 <strong>3.11.0<\/strong>, the current stable version; 3.11.6 (10\/08\/2026) brought the Qualys\/OpenAI audit fixes;<\/li>\n<li><strong>Today<\/strong> \u2014 supported: 3.11, 3.10, 3.9, and 3.8 (the four latest stable versions, as usual); 3.7 retired on 06\/03\/2026.<\/li>\n<\/ul>\n<h2>Wrap-up<\/h2>\n<p>A Dutch researcher at IBM, a monolith everyone feared, and a design based on small processes. Sendmail did not die on day one; it was gradually uninstalled. Postfix is not \u201cmodern\u201d in the sense of Go and YAML. It is C, <code data-no-translation=\"\">main.cf<\/code> and a <code data-no-translation=\"\">master<\/code> that does not trust its children. That is why it is still on port 25.<\/p>\n<p>The broader Unix\/Linux history on this blog is in <a href=\"\/en\/2017\/06\/a-historia-dos-sistemas-operacionais\/\">The History of Operating Systems<\/a>, <a href=\"\/en\/2017\/08\/a-historia-do-unix\/\">UNIX \u2014 The Origin of Systems<\/a> and <a href=\"\/en\/2026\/09\/linux-35-anos\/\">Linux turns 35<\/a>. The hypervisor many people use to virtualize their MX is covered in <a href=\"\/en\/2026\/09\/a-historia-do-proxmox\/\">Proxmox<\/a>.<\/p>\n<p>From Watson to 3.11.6: the mail system Sendmail did not provide. IPL or EPL 2.0, on-disk queue, mouse with a yellow bag. Twenty-eight years, and the <code data-no-translation=\"\">mailq<\/code> still responds.<\/p>","protected":false},"excerpt":{"rendered":"<p>In 1997, Wietse Venema at the IBM Thomas J. Watson Research Center began writing an MTA so he would not have to live with Sendmail. On December 14, 1998, the code was released. It was called VMailer, then IBM Secure Mailer, then Postfix \u2014 \u201cpost\u201d for mail, \u201cfix\u201d for repair. Twenty-eight years later, Postfix \u2026 <a title=\"The history of Postfix: the mail system born at IBM\" class=\"read-more\" href=\"https:\/\/www.linuxpro.com.br\/en\/2026\/09\/a-historia-do-postfix\/\" aria-label=\"Read more about A hist\u00f3ria do Postfix: o correio que nasceu na IBM\">Read more<\/a><\/p>","protected":false},"author":0,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[78,2,111,120],"tags":[79,235,233,234,236],"class_list":["post-538","post","type-post","status-publish","format-standard","hentry","category-email","category-linux","category-opensource","category-servidores","tag-email","tag-mta","tag-postfix","tag-sendmail","tag-smtp"],"_links":{"self":[{"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/posts\/538","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/comments?post=538"}],"version-history":[{"count":6,"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/posts\/538\/revisions"}],"predecessor-version":[{"id":1210,"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/posts\/538\/revisions\/1210"}],"wp:attachment":[{"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/media?parent=538"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/categories?post=538"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/tags?post=538"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}