3 Tips When Migrating to Bird from Postfix, Sendmail or Exim
Tom Mairs
3 Aug 2018
1 min read

Key Takeaways
Migrating from Postfix, Sendmail, or Exim to Bird is simple and low-lift—you can route email via SMTP with minimal configuration changes.
Bird supports both SMTP and REST API injection, letting you choose between traditional relay-based sending and modern JSON-based transmissions.
The REST API offloads template generation and mass mail delivery from local servers, improving scalability and delivery speed.
Bird’s event and metrics APIs provide JSON-formatted delivery data, making it easier to track bounces, opens, clicks, and complaints compared to Postfix logs.
You can integrate webhooks for real-time feedback or pull metrics on demand—ideal for analytics dashboards and compliance workflows.
Bird’s architecture ensures secure TLS communication over port 587 and supports easy migration without complex infrastructure changes.
Q&A Highlights
What’s the easiest way to migrate from Postfix or Sendmail to Bird?
Simply point your existing SMTP configuration to Bird’s secure relay endpoint on port 587 and enable TLS—no major code changes required.
Does Bird support REST-based email sending instead of SMTP?
Yes. Bird’s REST API accepts JSON payloads with templates and recipient lists, automatically generating and sending personalized messages at scale.
How can I monitor message delivery and performance after migration?
Use Bird’s event webhooks or the message_events and metrics APIs to track delivery, bounces, opens, and complaints in real time or via scheduled queries.
Can I replace Postfix logs with Bird’s reporting tools?
Absolutely. Bird’s JSON event model is structured for automation and easy integration with analytics tools—no log parsing needed.
What about compatibility with existing on-premises systems?
Bird supports hybrid and secure setups using S/MIME and TLS, allowing you to connect on-prem systems or management code directly to Bird’s platform.
Why migrate from legacy MTAs to Bird?
Bird centralizes deliverability, analytics, and scalability, removing maintenance overhead while giving developers and marketers unified insight into performance.
This document outlines common ways our customers use Bird for general integration. These integrations cover essential topics like “how do I send email?” and “how do I know what happened to the email?” For organizations maintaining hybrid on-premises and cloud setups with security requirements, our S/MIME implementation guide for on-premises platforms covers PowerMTA and Momentum configurations for secure email delivery. If you are transitioning from Postfix, Sendmail, or Exim, this document should explain everything you need to know about the basics of sending and reporting on email. The rest of this document assumes you have an existing SparkPost account.
How do I send email?
Bird will accept mail for transfer in a couple of ways. By far, the most common is SMTP (Simple Mail Transfer Protocol) and Bird presents itself precisely as any other secure email agent on port 587. If you currently have generation or mail merge software that creates an email for delivery, Bird will accept it as a standard SMTP message and attempt to deliver it. You will need a system that with a valid TLS certificate that can generate SMTP messages and send them over port 587. Postfix, Sendmail, and Exim all have this capability natively.
Example 1:
You have a web server that generates a merged message for email delivery through Postfix.
· Adjust the web server’s generation software to send SMTP message to your assigned SparkPost server instead of the Postfix server
· Yes it really is that easy
Example 2:
You have some management code that needs to use the local server’s “Mail” function.
· If you are using Sendmail, edit the /etc/mail/sendmail.mc file to add a “smart-host” definition.
IE: define(`SMART_HOST’,`smtp.MyMessageBirdServer.com’)
· If you are using Postfix, edit the /etc/postfix/transport file to add an smtp relay definition.
IE: * smtp:MyMessageBirdServer.com
· Make sure you enable TLS and set your outbound port to 587.
· Apply the changes and restart the local mail services
· Execute the management code as, and the mail will route to MessageBird for delivery
What about REST injection?
How do I get delivery information?
Bird collects copious amounts of delivery information and makes that available to you in JSON format that can be “pushed” as a webhook or “pulled” with an API call. The data for a delivery looks something like this:
That is probably much more data than you are used to seeing in a Postfix log and it is already in a format that is easily consumable. It is relatively trivial to convert that JSON data to Postfix logging format if needed. Delivery, bounce, reject, spam_complaint, open, click, and delay data can be read the same way.
Examples:
1) You usually export Postfix logs out to Excel so you can sort and analyze.
A) Execute a message_events API call and run the resulting JSON data through JSON2CSV.
2) You like to convert your Postfix logs to JSON, then pull them into a web service for reading and analysis.
A) Use the MessageBird metrics API to poll SparkPost for the data you need, and it is automatically exported as JSON
3) You have a separate process that tails and parses the logs in real-time and updates a separate recipient database.
A) SparkPost can provide a real-time webhook that can feed your process spam_complaintants and unsubscribes specifically for this purpose. Implementation is trivial.
-Tom



