Roundcube | Courier-imap, Postfix

Есть задача – поставить веб интерфейс к почтовому серваку. Самым популярным наверное будет roundcube (в обзорах на самаге его хвалят, как ставить все рассказывают, к тому же уже стоял у нас roundcube на старом нашем почтовике)…
Итак ставим roundcube.
Первое что необходимо осознать – для работы roundcube необходим настроенный и рабочий IMAP. По сути roundcube – это веб IMAP клиент.

Поэтому начнём с настройки imap сервера.
Традиционно будем ставить courier-imap сервер. Идем в usr/ports/mail/courier-imap делаем make install clean. В опциях выбираем тип аутентификации который будем использовать. У меня MTA (postfix) настроен на mysql в качестве хранилища данных о пользователях, поэтому при установке courier-imap выбираем поддержку mysql.
После установки courier-imap получаем в usr/local/etc/rc.d/ четыре скрипта для управления демонами courier-imap:

# cd /usr/local/etc/rc.d
# ls | grep couri
courier-authdaemond
courier-imap-imapd
courier-imap-imapd-ssl
courier-imap-pop3d
courier-imap-pop3d-ssl

Плюс демон authdaemond для авторизации.

Зачем так много. Каждый демон позволяет забирать почту по определенному протоколу (pop3 и imap), плюс вариант с поддержкой ssl. Порты на которых будет слушать courier-imap соответсвенно: 25, 143, 465, 993. Какой запускать и использовать – зависит от ваших задач.

Добавляем строки rc.conf

courier_imap_imapd_enable="YES"
courier_imap_imapd_ssl_enable="YES"
courier_authdaemond_enable="YES"

Правим /usr/local/etc/courier-imap/imapd.conf и /usr/local/etc/courier-imap/imapd-ssl.conf – прописываем путь где хранятся почтовые базы.

MAILDIRPATH=/var/mail

Можно привязать imap сервер к loopback если использоваться он будет только для веб интерфейса и крутиться всё будет на одном серваке:

ADDRESS=127.0.0.1

Если связка roundcube и imap будут работать с поддержкой ssl на 993 порту – прописываем путь к ssl сертификату (можно использовать тот же что используется постфиксом, к примеру):

TLSCERTFILE=/usr/local/etc/postfix/ssl/smtp.pem

Authdaemond правим authmysqlrc если ещё не настроили (если настраивали pop3 то уже всё наверняка работает) – там прописываем имя, пароль, базу постфикса откуда брать информацию о учётных записях и т.д.

Настраиваем логгирование imap и authdaemond:

!authdaemond
*.* /var/log/authdaemond.log
!imapd
*.* /var/log/imapd.log
!-authdaemond,imapd

Не забываем файлы логов создать:

#touch /var/log/authdaemond.log
#touch /var/log/imapd.log

Запускаем, проверяем работу IMAP клиентом типа thunderbird если всё ок идем дальше.

Теперь можно ставить Roundcube. Ставить можно из портов но поскольку это просто веб морда то проще скачать дистрибутив, настроить под него окружение (apache, php, php-extensions, mysql) и воспользоваться установочным скриптом который лежит в папке /installer.

Итак ставим если ещё не ставили mysql 4.1>, php5, php5-extensions (pcre, dom, sessions, XML, JSON, fileinfo, libiconv, multibyte, openssl, mcrypt, mysql), apache.

Создаем базу для Roundcube:

mysql>create database round;

Копируем php.ini в /usr/local/etc/ и выставляем переменные:

file_uploads = On
session.auto_start = 0
zend.ze1_compatibility_mode = Off
mbstring.func_overload = 0
upload_max_size = 8M

Настраиваем, распаковываем архив с Roundcube в нужную нам директорию апача, выставляем права на папки /temp /logs (см. инструкцию к установке roundcube INSTALL).

В браузере запускаем инсталлер:

http://server.ru/installer

Смотрим что скрипт нашёл все нужные модули и переменные. Указываем логин пароль и базу.
Указываем имя imap сервера – можно FQDN сервера, можно 127.0.0.1 порт – 143 или 993.
SMTP сервер оставляем пустым и порт выставляем 25.
Получаем конфиги копируем их содержимое в файлы в директории /conf

После этого если Imap у нас был настроен и работал проблем быть не должно. Если мы хотим работать по 993 порту то переменную $rcmail_config['default_host'] указываем с префиксом ssl://

$rcmail_config['default_host'] = 'ssl://localhost:993';

Иначе в логах Roundcube (лежать будут в директории roundcube /temp) получим ошибку:

IMAP Error: Empty startup greeting (127.0.0.1:993)

При работе без ssl на 143 порту можно обойтись без префикса ssl://

Для русской локали выставляем переменную ru

$rcmail_config['locale_string'] = 'ru';

Поскольку если мы оставили во время установки в настройках SMTP сервера поле пустым и указали 25 порт то слать почту Roundcube будет посредством php mail с соответсвующим адресом отправителя. Имя отпрвителя правится через переменную. Не забываем что имя должно нормально резовиться, иначе письм могут до большинства серверов не дойти.

$rcmail_config['smtp_server'] = 'server.ru';

В итоге не плохо упрятать Roundcube в запароленную папку апача с ssl поскольку roundcube периодически ломают.