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 периодически ломают.