OK, к IMAP серверу Dovecat из прошлого поста прикручиваем web-interface. Из всех web-mail систем мне известны IlohaMail, SquirrelMail и RoundCube. Будем ставить последний, потому что он красивый.
Делается допущение, что IMAP и SMTP серверы, MySQL сервер, а также сам RoundCube работают на одной машине с именем mail.ungrund.org. Разнести эти сервисы в разные места не составит большого труда, но тогда конфигурацию нужно будет соответствующим образом изменить.
Installation
В репозитарии Debian Lenny находится последняя стабильная версия RoundCube, 0.1.1. В следующей за ней 0.2alpha новшеств много, но они некритичны, плюс статус alpha как бы намекает на некоторую нестабильность продукта в целом.
Устанавливается весь “круглый квадрат” из трех пакетов, roundcube (кусочек документации и конфигурационных файлов), roundcube-core (основные файлы) и roundcube-*sql* (один из БД бэкендов для хранения информации о пользователях, кэша и прочей служебной информации, вытаскивающий по зависимостей соответствующую БД). У меня уже была инсталляция MySQL, поэтому, в качестве бэкенда я выбрал roundcube-mysql.
Во время установки зададут несколько вопросов:
- Актуальный IMAP-сервер:
mail.ungrund.orgssl://mail.ungrund.org:993; - Поддерживаемые Web-серверы:
apacheonly (no lighttpd); - Язык по умолчанию:
ru; - Создать и настроить БД с помощью
dbconfig-common: говорим “нет”, потому что БД настроим руками для лучшего понимания процесса. Ну, на самом деле, потому что я не смог подсунуть имя и пароль рутаMySQLиз/etc/mysql/debian.cnf^^.
Кстати говоря, пакет roundcube-core собран достаточно грамотно: изменяемые файлы собраны в /var, там же созданы симлинки на статические файлы и php-скрипты в /usr, а также на конфиги в /etc. Респект майнтенерам! Check this out:
[/var/lib/roundcube] $ ll итого 12K lrwxrwxrwx 1 root root 24 Авг 12 19:28 bin -> /usr/share/roundcube/bin drwxr-xr-x 2 root root 4,0K Авг 12 19:28 config lrwxrwxrwx 1 root root 30 Авг 12 19:28 index.php -> /usr/share/roundcube/index.php lrwxrwxrwx 1 root root 19 Авг 12 19:28 logs -> ../../log/roundcube lrwxrwxrwx 1 root root 28 Авг 12 19:28 program -> /usr/share/roundcube/program drwxr-xr-x 3 www-data adm 4,0K Авг 12 19:28 skins drwxr-x--- 2 www-data www-data 4,0K Авг 12 19:28 temp [/var/lib/roundcube] $ ll config/ итого 0 lrwxrwxrwx 1 root root 25 Авг 12 19:28 db.inc.php -> /etc/roundcube/db.inc.php lrwxrwxrwx 1 root root 27 Авг 12 19:28 main.inc.php -> /etc/roundcube/main.inc.php
[/usr/share/roundcube] $ ll итого 36K drwxr-xr-x 2 root root 4,0K Авг 12 19:28 bin lrwxrwxrwx 1 root root 25 Авг 12 19:28 config -> /var/lib/roundcube/config -rw-r--r-- 1 root root 13K Июн 22 14:38 index.php lrwxrwxrwx 1 root root 23 Авг 12 19:28 logs -> /var/lib/roundcube/logs -rw-r--r-- 1 root root 11K Июн 22 14:39 main.inc.php.dist drwxr-xr-x 7 root root 4,0K Авг 12 19:28 program lrwxrwxrwx 1 root root 24 Авг 12 19:28 skins -> /var/lib/roundcube/skins lrwxrwxrwx 1 root root 23 Авг 12 19:28 temp -> /var/lib/roundcube/temp
Официальная документация достаточно скромно описывает процесс настройки, что повышает ценность этой заметки
Также можно пошерстить по мэйл-архивам: http://lists.roundcube.net/users/
Configuration
Нужно настроить 3 вещи:
- Apache Virtual Host;
- RoundCube DB;
- Ну и сам RoundCube.
Apache
Пакетом roundcube-core был заботливо установлен файл /etc/roundcube/apache.conf, на который ссылается /etc/apache2/conf.d/roundcube. Я предпочитаю “вхост-специфичные” настройки хранить в файле самого вхоста, поэтому /etc/roundcube/apache.conf смело целиком комментируем, а в /etc/apache2/sites-available/mail.ungrund.org пишем следующее:
/etc/apache2/sites-available/mail.ungrund.org
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | <VirtualHost *:80> ServerName mail.ungrund.org #ServerAlias *.ungrund.org ServerAdmin webmaster@ungrund.org ErrorLog /var/log/apache2/mail.ungrund.org/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/mail.ungrund.org/access.log combined # Controlled by ServerTokens ServerSignature On # -------------------------------------------------------------------- #Alias /roundcube/program/js/tiny_mce/ /usr/share/tinymce2/www/ #Alias /roundcube /var/lib/roundcube Alias /program/js/tiny_mce/ /usr/share/tinymce2/www/ DocumentRoot /var/lib/roundcube # Access to tinymce2 files <Directory "/usr/share/tinymce2/www/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order allow,deny allow from all </Directory> <Directory /var/lib/roundcube/> Options +FollowSymLinks AllowOverride All order allow,deny allow from all </Directory> # Protecting basic directories: <Directory /var/lib/roundcube/config> Options -FollowSymLinks AllowOverride None </Directory> # Also Deny from all in .htaccess <Directory /var/lib/roundcube/temp> Options -FollowSymLinks AllowOverride None Order allow,deny Deny from all </Directory> <Directory /var/lib/roundcube/logs> Options -FollowSymLinks AllowOverride None Order allow,deny Deny from all </Directory> </VirtualHost> |
Тут, по-моему, все понятно. Права доступа на директории в /var/lib/roundcube были предусмотрительно скопированы из /etc/apache2/conf.d/roundcube.
Не забываем выполнить a2ensite mail.ungrund.org, создать соответствующую директорию в /var/log/apache2 и перезагрузить апач.
MySQL
У нас будет БД ‘roundcube‘ и пользователь с таким же именем, имеющий к этой базе достаточно привелегий.
Запускаем mysql от рута:
mysql --defaults-extra-file=/etc/mysql/debian.cnf
Затем:
CREATE DATABASE roundcube; GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER on roundcube.* to 'roundcube'@'localhost' identified BY 'blah'; quit;
Пароль свой вместо ‘blah‘, его нужно запомнить.
Поскольку мы от автоматической настройки БД отказались, придется выполнить все необходимые действия самим. Инициализация базы осуществляется при помощи sql-скрипта mysql.initial.sql, который распространяется в дистрибутиве roundcube и который можно вытащить из SVN по адресу: https://svn.roundcube.net/tags/roundcubemail/v0.1.1/SQL/mysql5.initial.sql
Скачали, инициализируем:
mysql -u roundcube roundcube -p < mysql5.initial.sql
Конфигуация БД roundcube хранится в /etc/roundcube/db.inc.php, который включает файл /etc/roundcube/debian-db.php, который, в свою очередь, генерится из /etc/dbconfig-common/roundcube.conf программкой /usr/sbin/dbconfig-generate-include. Из /etc/dbconfig-common/roundcube.conf нас интересует:
/etc/dbconfig-common/roundcube.conf
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | # dbc_dbtype: type of underlying database to use # this exists primarily to let dbconfig-common know what database # type to use when a package supports multiple database types. # don't change this value unless you know for certain that this # package supports multiple database types dbc_dbtype='mysql' # dbc_dbuser: database user # the name of the user who we will use to connect to the database. dbc_dbuser='roundcube' # dbc_dbpass: database user password # the password to use with the above username when connecting # to a database, if one is required dbc_dbpass='blah' # dbc_dbserver: database host. # leave unset to use localhost (or a more efficient local method # if it exists). dbc_dbserver='' # dbc_dbport: remote database port # leave unset to use the default. only applicable if you are # using a remote database. dbc_dbport='' # dbc_dbname: name of database # this is the name of your application's database. dbc_dbname='roundcube' |
Пароль заменить на свой, все остальное, скорее всего, будет таким же.
“Регенерируем” конфиг /etc/roundcube/debian-db.php:
/usr/sbin/dbconfig-generate-include /etc/dbconfig-common/roundcube.conf /etc/roundcube/debian-db.php
Последний шаг: разрешить roundcube читать debian-db.php, поскольку по умолчанию он имеет права 600 root:root:
[/etc/roundcube] # chmod g+r debian-db.php [/etc/roundcube] # chgrp www-data debian-db.php
С базой все.
Roundcube
Помимо /var/lib/roundcube/config/db.inc.php, roundcube также читает файл /var/lib/roundcube/config/main.inc.php, являющийся главным конфиг файлом. Как должно быть ясно, оба суть симлинки в /etc/roundcube.
Настраиваем /etc/roundcube/main.inc.php. Часть изменений уже была сделана во время установки, кое-что поправим сейчас:
Отображать красивые названия IMAP-серверов при логине.
34 35 36 37 38 39 40 41 | // the mail host chosen to perform the log-in // leave blank to show a textbox at login, give a list of hosts // to display a pulldown menu or set one host as string. // To use SSL connection, enter ssl://hostname:993 $rcmail_config['default_host'] = array( "mail.ungrund.org" => "Ungrund mail server", "ssl://mail.ungrund.org:993" => "Secure(SSL/TLS) Ungrund mail server" ); |
Использовать корректное имя домена в envelope’ах и в поле ‘From‘ вместо адреса IMAP-сервера:
51 52 53 54 55 | // This domain will be used to form e-mail addresses of new users // Specify an array with 'host' => 'domain' values to support multiple hosts $rcmail_config['mail_domain'] = array( "mail.ungrund.org" => "ungrund.org" ); |
Использовать услуги указанного SMTP-сервера для отправки писем. Не показанные здесь переменные smtp user, pass и auth_type настроить по вкусу:
65 66 67 68 | // use this host for sending mails. // to use SSL connection, set ssl://smtp.host.com // if left blank, the PHP mail() function is used $rcmail_config['smtp_server'] = 'mail.ungrund.org'; |
Чарсет по умолчанию: горячо любимый cp1251. Также, отключить спелл-чекалку, которая для проверки орфографии отправляет тело письма в гугл (!).
188 189 190 191 192 193 194 | // Use this charset as fallback for message decoding $rcmail_config['default_charset'] = 'CP1251'; // Make use of the built-in spell checker. It is based on GoogieSpell. // Since Google only accepts connections over https your PHP installatation // requires to be compiled with Open SSL support $rcmail_config['enable_spellcheck'] = FALSE; |
С этим файлом все.
Из других настроек может понадобиться вот это, выдрано откуда-то из офдоков:
You can also modify the default .htaccess file. This is necessary to
increase the allowed size of file attachments, for example:
php_value upload_max_filesize 2M
Fin
Идем на http://mail.ungrund.org, логинимся. RoundCube должен автоматически создать запись в БД для соответствующего пользователя. Кстати, структуры этой БД можно посмотреть по адресу: http://trac.roundcube.net/attachment/wiki/Dev_Docs/db_schema.png.
В целом, RoundCube порадовал логичностью архитектуры (с точки зрения системного администратора), внятными конфигами и элегантным интерфейсом.
That’s it!
Post a Comment