Over the past few weeks, I’ve been diving into the idea of running my own mail server. While I’ve had some experience with email servers, I’d never set one up from scratch. The main motivation was to move away from third-party providers and gain more control over my email infrastructure. Running a full mail server can be quite complex, but setting up my own SMTP server for sending emails felt like a solid, manageable first step.
This setup gives me a lot of flexibility. I can now use my SMTP server for various tasks like sending bulk newsletters, transactional emails from my WordPress sites, or even as an external relay for my inboxes or Enhance-hosted domains.
I recently put together a comprehensive guide based on everything I’ve learned and published it today. The Postal documentation left a lot to be desired, so it took a lot of trial and error to get everything working smoothly but it was worth it.
One standout feature that made me choose Postal is its support for IP pools.
Postal lets you configure multiple IP pools, allowing emails to be sent from different IP addresses instead of being tied to the server’s primary IPs. This is incredibly useful for managing email reputation and keeping things cleanly separated.
For example, rather than using the same IP set (IPv4 and IPv6) where Postal is installed, I created a separate pool and assigned a different IP set specifically for sending. At the moment, I’ve got my primary server IPs, plus two distinct pools: one for dedicated use and another for shared purposes. Each pool contains three IP sets, ready to send emails based on their specific priority. I’m really happy with how it’s turned out!
I’ve even gone the extra mile with naming my IP pools. My dedicated sending pool is called Espresso (because it’s fast and delivers strong), and the shared sending pool is named Brew (since it’s where all the emails come together and get brewed for delivery). Gotta have a little fun with it, right?
Right now, I’m working on scaling this setup further by running Postal behind a load balancer, which, from what I’ve read, is definitely possible with the right configuration. This could make it even more robust and scalable as my needs grow.
I’m also working on setting up a full backup system to make sure I can recover everything quickly if something ever goes wrong. One of the best things about using Hetzner is that they let me retain my IPs even if a server crashes or gets wiped. That means I can spin up a fresh server and keep all my existing IP addresses intact, which is a huge win for maintaining sender reputation and continuity.
Next up: inbox setup on Enhance, relaying all outbound mail through my Postal SMTP server, and warming up the IPs even more. So far, everything’s looking solid.
Link: https://ivansalloum.com/setting-up-postal-as-an-smtp-server/