I'm going to configure fault tolerance mail system by using Postfix+Dovecot (iRedMail solution). I haven't worked with Postfix&Dovecot before. Here is my scheme: And there are many-many other regional servers.
Configure Dovecot's dsync to replicate mails between the regional and central server. By doing so, you can switch over at any time (master-master replication), and you can have all mail delivered to any of the servers (central server or the regional equivalent). You can receive all mail on any of them, for example the central server to keep things simple. Which server is used to send mail is not an issue anyway.
What has to be solved is how to perform the fail-over. Which method to choose depends on what your network setup and requirements allow:
- Simplest solution: (automatically) changing DNS records, maximum downtime is the DNS time to live
- Running a proxy server/load balancer performing the failover (which of course might also get unavailable)
- If the network in-between the sites is switched (and not routed, as I'd expect): switch a service IP to the central server
- If the network is routed and you control routing: Change routing for a fail-over IP address/subnet
- Some nasty routing/firewall hacks that redirect traffic to the central server to local servers instead, as long those are available
- Likely there are more ways, depending on your network setup
Anyway: if you don't have a very large userbase (far beyond 10.000 active users) or very small bandwith, consider hosting a central, highly-available cluster of two servers instead the more complicated setup considering three locations.