Zarafa Exchange Server replacement and Postfix Integration for multiple domains with unique users
So, I’ve spent some time recently working with Zarafa. It’s an exchange replacement that has a completely open source version as well as a version with licenses for outlook if you want that level of integration. It’s web interface looks good and is an improvement on Exchange server’s capabilities with a non-IE browser. Anyway it can install on a linux server and integrate with several different MTA’s. Our choice was postfix since that was already installed for the purposes of processing forms on a webserver on the same host. Outgoing mail “just worked”, but postfix needed a bit of configuration to make the incoming mail work.
Our system is Ubuntu 8.04 and the original postfix setup had been a system that only sends mail and doesn’t receive. SO, instead of tinkering with the configuration files I moved them out of the way (backed them up as our working config actually.) Then I ran dpkg-reconfigure postfix to change our operating profile to that of an internet station (meaning that we would be sending and receiving mail directly.) This server is a VPS server hosted at slicehost. Anyway, the trick was configuring postfix for delivery to zarafa. I found a few conflicting suggestions, but finally settled on the following line being added to main.cf
mailbox_transport = zarafa: zarafa_destination_recipient_limit = 1
Of course, you also need to specify your domain and which domains you are receiving mail for. In this case we were going to be receiving mail for multiple domains and the following suggested addition to master.cf wasn’t going to work for us.
zarafa unix – n n – 10 pipe flags= user=vmail argv=/usr/bin/zarafa-dagent ${user}
You see, our goal was two domains with the same email frontend ….. i.e. mail@domain1.com and mail@domain2.com to be seperate accounts. By default the “user” string above was going to take our address and crop the email address before the @ sign as user… so both of those accounts would look the same… they would both be the user mail.
SO, I did a bit of digging on what variables postfix takes in it’s master.cf file. I found a bit of advice to do a “man 8 pipe” since that’s the utility that makes postfix’s delivery happen. So, finally I found a good reference in the pipe manual to do what I thought would work. We could use ${recipient} the only question was if zarafa-dagent could use that…
So as root I ran zarafa-dagent without options and got some good information including….
-R Resolve the primary email address passed in
Woohoo…
So, I added this line to master.cf in place of the one suggested above…
zarafa unix – n n – 10 pipe
flags= user=vmail argv=/usr/bin/zarafa-dagent -R ${recipient}
Tested and all seems to be working well.
So, now we have abstraction of usernames and email addresses. You could have a username velma and the address jinkies@mydomain.com and delivery will still work. You can also have the username scooby and address jinkies@thisotherdomain.com and they will have unique mail stores (in spite of the first part of the address being the same.)
There are certainly situations where you would want user@domain1.com and user@domain2.com to be the same, but this is a good fix for those situations where you want to manage discrete accounts for multiple domains. From what I’ve seen thus far out of zarafa I’m liking it. Our next project will likely be imap integration