[Dovecot] dovecot imap cluster
Hello, i'm using postfix like smtp server, i need to choose an imap server with a special features.
I have a customer with 3 different geographic locations.
Every locations have a mail server for the same domain (example.com).
If user1@example.com receive mail form external this mail going on every locations server.
I've a problem now, is it possible to syncronize the state (mail flag) of user1 imap folder mails on every mail locations server?
Example, if user1 read a mail on server one is it possible to change flag of the same mail file on server 2 and server 3?
Is it possible to use dsync for it?
I need something like imap cluster.
Or an action in post processing imap mail read.
I can't use distribuited file system.
Thank's a lot
-- Rispetta l'ambiente: se non ti รจ necessario, non stampare questa mail.
Ing. Matteo Cazzador Email: mcazzador@gmail.com
On 27/01/2012 17:48, Matteo Cazzador wrote:
Hello, i'm using postfix like smtp server, i need to choose an imap server with a special features.
I have a customer with 3 different geographic locations.
Every locations have a mail server for the same domain (example.com).
If user1@example.com receive mail form external this mail going on every locations server.
I've a problem now, is it possible to syncronize the state (mail flag) of user1 imap folder mails on every mail locations server?
Example, if user1 read a mail on server one is it possible to change flag of the same mail file on server 2 and server 3?
Is it possible to use dsync for it?
I need something like imap cluster.
Or an action in post processing imap mail read.
I can't use distribuited file system.
Thank's a lot
Syncronize your storage with DRBD, (or async replica like rsync) and use dovecot director for connection persistence.
-- Simone Caruso
On 27.1.2012, at 20.11, Simone Caruso wrote:
I have a customer with 3 different geographic locations.
Every locations have a mail server for the same domain (example.com).
If user1@example.com receive mail form external this mail going on every locations server.
I've a problem now, is it possible to syncronize the state (mail flag) of user1 imap folder mails on every mail locations server?
Syncronize your storage with DRBD, (or async replica like rsync) and use dovecot director for connection persistence.
There are a couple of problems with DRBD and most (all?) other filesystem based solutions when doing multi-master replication across wide geographic locations:
Multi-master requires synchronous replication -> latency may be very high -> performance probably is bad enough that the system is unusable.
Network outages are still common -> you can't handle split brain situations in filesystem level without either a) loss of availability (everyone's email down) or b) data loss/corruption (what do you do when multiple sites have modified the same file?)
With dsync-based replication it's possible to avoid both of these problems, because application-level replication can intelligently handle situations where asynchronous replication results in data conflicts. (This kind of conflict resolution is also what I hope to do with some nosql database in future when Dovecot supports them.) I've been working on dsync-based easy-to-use replication recently, and it's almost in a condition where I'm going to start using it myself (maybe this weekend).
On 1/27/2012 2:57 PM, Timo Sirainen wrote:
On 27.1.2012, at 20.11, Simone Caruso wrote:
I have a customer with 3 different geographic locations.
Every locations have a mail server for the same domain (example.com).
If user1@example.com receive mail form external this mail going on every locations server.
I've a problem now, is it possible to syncronize the state (mail flag) of user1 imap folder mails on every mail locations server?
Syncronize your storage with DRBD, (or async replica like rsync) and use dovecot director for connection persistence.
There are a couple of problems with DRBD and most (all?) other filesystem based solutions when doing multi-master replication across wide geographic locations:
Multi-master requires synchronous replication -> latency may be very high -> performance probably is bad enough that the system is unusable.
Network outages are still common -> you can't handle split brain situations in filesystem level without either a) loss of availability (everyone's email down) or b) data loss/corruption (what do you do when multiple sites have modified the same file?)
With dsync-based replication it's possible to avoid both of these problems, because application-level replication can intelligently handle situations where asynchronous replication results in data conflicts. (This kind of conflict resolution is also what I hope to do with some nosql database in future when Dovecot supports them.) I've been working on dsync-based easy-to-use replication recently, and it's almost in a condition where I'm going to start using it myself (maybe this weekend).
Can you provide a basic diagram/high level description of how this dsync replication would be configured to work over a 2 node wide area network?
Are we looking at something like period scripts, something more automatic, a replication daemon?
-- Stan
On 28.1.2012, at 2.23, Stan Hoeppner wrote:
With dsync-based replication it's possible to avoid both of these problems, because application-level replication can intelligently handle situations where asynchronous replication results in data conflicts. (This kind of conflict resolution is also what I hope to do with some nosql database in future when Dovecot supports them.) I've been working on dsync-based easy-to-use replication recently, and it's almost in a condition where I'm going to start using it myself (maybe this weekend).
Can you provide a basic diagram/high level description of how this dsync replication would be configured to work over a 2 node wide area network?
I'll write a description at some point.. It's anyway meant to be more scalable than just 2 nodes, so the idea is to have userdb lookup return the 2 (or more) replicas.
Are we looking at something like period scripts, something more automatic, a replication daemon?
It's a replication daemon that basically calls "doveadm sync" when needed (via doveadm server connection). Initially it's not as optimal from performance point of view as it could, but should get better. :)
participants (4)
-
Matteo Cazzador
-
Simone Caruso
-
Stan Hoeppner
-
Timo Sirainen