This documentation is for Dovecot v1.x, see wiki2 for v2.x documentation.

Small, simple setup.

Requires Xcode to build from source, Darwin Ports isn't required.

NetInfo needs to contain a dovecot user, although it apparently is created automatically by release candidates of Dovecot. To create the dovecot user, use Applications/Utilities/NetInfo Manager and in the users section, duplicate one of the existing users (I chose to copy cyrusimap, but any daemon should be fine). You can also add the user from the commandline like this:

sudo niutil -create / /users/dovecot
sudo niutil -createprop / /users/dovecot uid 300
sudo niutil -createprop / /users/dovecot name dovecot
sudo niutil -createprop / /users/dovecot passwd '*'
sudo niutil -createprop / /users/dovecot _writers_passwd dovecot
sudo niutil -createprop / /users/dovecot shell /usr/bin/false
sudo niutil -createprop / /users/dovecot expire 0
sudo niutil -createprop / /users/dovecot change 0

Use pam for authentication. Create the file /etc/pam.d/dovecot as follows (you can copy over the file 'login' in the same directory):

# dovecot: auth account password session
auth       required
auth       sufficient
auth       sufficient
auth       required
account    required
password   required
session    required

Use launchd to start the server at boot time. Create /Library/LaunchDaemons/dovecot.plist as follows:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
<plist version="1.0">

To start the server without rebooting, sudo launchctl load /Library/LaunchDaemons/dovecot.plist

To fix the access problem to /var/mail, you may need to set mail_privileged_group = mail  in dovecot.conf, as described in MailLocation/Mbox.

Enabling SSL worked as described and didn't require anything different on OS X.