I do almost all of my development on Centos virtual machines. This allows me to keep my filesystem, databases, and server configurations contained in a separate environment without harming my host operating system (OSX). This morning, I encountered a problem with my email not being delivered properly. I'm assuming this happened because my virtual machine is not a full qualified email server. I figured the easiest solution would be to setup my virtual machine as an IMAP server instead of trying to fight with DNS, static IPs, spam filters, etc. When it comes down to it, all I need is for my emails sent from my web applications to end up in my email client inbox. Here's what I did to get this to work...
Ditch sendmail and install postfix. Postfix is much easier to configure; Sendmail is jibberish.
yum remove sendmail yum install postfix chkconfig --level 2345 postfix on
Install cyrus IMAP service. NOTE: SASL will be the authentication method service
yum install cyrus-imapd cyrus-sasl chkconfig --level 2345 cyrus-imapd on chkconfig --level 2345 saslauthd on
Configure Postfix service
# edit /etc/postfix/main.cf and change this line: mailbox_transport = cyrus # most importantly, I added a few domains (work, personal, etc) to the mydestination variable to ensure that mail sent from my server will be delivered locally, instead of leaving my virtual machine. Make sure you add all the corresponding aliases in /etc/aliases. For instance: If you want to receive email sent to email@example.com, you'll have to add blah.com to the list of domains in mydestination and add an alias for wee to redirect to your email account name.
# set sasl passwords saslpasswd2 cyrus saslpasswd2 eric # Use Cyrus admin tool to configure mailbox cyradm --user cyrus --server localhost > createmailbox user.eric > setaclmailbox user.eric eric all > quit
Add a new IMAP account in your favorite email client. For my setup, I used the IP address of my virtual machine as the incoming mail server address. Now, when mail is delivered from my virtual machines, it is delivered locally and my email client is used to fetch the new messages!
To ensure your setup is working properly, you can send a quick email from the command line (on your virtual machine)
date | mail firstname.lastname@example.org
I just tried to follow my own procedure to configure my new virtual machine and I could not authenticate using cyradm. I kept getting this error:
cyradm: cannot authenticate to server with as cyrus
Once I set the password for the cyrus user, It worked.
$ passwd cyrus