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.

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:

# 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

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