Roundcube

Материал из ALT Linux Wiki

Очень быстрое КакСде по подъёму веб-почты из пакета roundcube по состоянию на версию 1.2.3 и выше.

Пакеты

apt-get install roundcube roundcube-apache2 apache2-mod_php5 php5-mbstring php5-sockets php5-fileinfo php5-intl php5-mysql MySQL-server postfix-dovecot dovecot
control postfix server
for i in dovecot httpd2 mysqld postfix; do chkconfig $i on && service $i start; done

Аутентификация

При непустом username_domain не пустит ни user, ни user@localhost, т.к. dovecot идёт в pam с "user@localhost" в обоих случаях — http://www.roundcubeforum.net/index.php/topic,10917.msg56250.html#msg56250:

echo "auth_username_format = %n" >> /etc/dovecot/conf.d/10-auth.conf
service dovecot restart

(ну или «не делайте так»)

Дамп базы

В пакете есть, но как документация; делаем симлинк туда, где ожидает инсталятор:

mkdir -p /usr/share/roundcube/SQL
ln -s /usr/share/doc/roundcube-0.7.1/SQL/mysql.initial.sql /usr/share/roundcube/SQL/mysql.initial.sql

Создаём базу (возможно, инсталер и сам справится при изначально беспарольном mysql root, не проверял; пароль ставьте свой, разумеется):

mysqladmin create roundcubemail
echo "grant all on roundcubemail.* to roundcube@localhost identified by '123456'" | mysql

Настройка

Выставляем временной пояс: в файле /etc/php/*/apache2-mod_php/php.ini

date.timezone = 'Europe/Moscow'

и выполняем

# service httpd2 reload

Включаем конфигурационный файл apache2 для rouncube:

# a2enextra roundcube
# systemctl restart httpd2

Для того чтобы разрешить доступ к web-инсталятору, приведите файл /usr/share/roundcube/installer/.htaccess к следующему виду, указав IP-адрес компьютера с которого Вы будете настраивать (опасно! не забудьте отключить!):

<ifModule mod_authz_core.c>
    Require ip 192.168.135.190
</ifModule>
<ifModule !mod_authz_core.c>
    Order Allow,Deny
    Allow from 192.168.135.190
</ifModule>

Переходим на http://192.168.135.190/roundcube/installer/, результат настройки загружаем в /etc/roundcube/config.inc.php и прикрываем правами:

chgrp _webserver /etc/roundcube/config.inc.php
chmod 640 /usr/share/roundcube/config/config.inc.php

Переходим в web-инсталяторе на вкладку 3.Test config и инициализируем базу данных. Для того чтобы запретить доступ к web-инсталятору, приведите файл /usr/share/roundcube/installer/.htaccess к следующему виду:

<ifModule mod_authz_core.c>
    Require all denied
</ifModule>
<ifModule !mod_authz_core.c>
    Order Allow,Deny
    Deny from all
</ifModule>

И запретите доступ к каталогу:

# chmod 0 /usr/share/roundcube/installer

Проверка

Заходим на http://localhost/roundcube/ тестовым локальным пользователем, пишем письмо второму тестовому пользователю, выходим, заходим тем, проверяем. УМВР. :)

AD SSO

Для работы прозрачной аутентификации необходимо настроить прозрачную аутентификацию на web-сервере Apache2/AD-auth и на imap сервере Dovecot/AD-auth. Так же необходимо включить нужный плагин и указать SPN в файле config.inc.php:

$config['plugins'] = array('krb_authentication');
$config['krb_authentication_context'] = 'imap/rcserver.dome.teste@DOME.TESTE';

Адресная книга AD

Для возможности формирования адресной книги на основе данных о пользователях из Active Directory необходимо обеспечить прозрачную аутентификацию на LDAP сервере домена. Для этого необходимо установить следующий пакет:

# apt-get install pear-Net_LDAP3

И добавить настройки адресной книги в config.inc.php:

$config['ldap_public'] = array(
    'MyAdLdap' =>array (
        'name' => 'Big Company, Inc',
        'hosts' => array('dce.dome.teste'),
        'sizelimit' => 6000,
	'port' => 389,
        'use_tls' => false,
	'user_specific' => false,
        'base_dn' => 'CN=Users,DC=dome,DC=teste',
	'bind_dn' => '',
	'bind_pass' => '',
	'bind_user' => '',
        'writable' => false,
        'ldap_version' => 3,
        'search_fields' => array(
           'mail',
           'cn',
        ),
        'auth_method' => 'GSSAPI',
        'name_field' => 'cn',
        'email_field' => 'mail',
        'surname_field' => 'sn',
        'firstname_field' => 'givenName',
        'sort' => 'sn',
        'scope' => 'list',
        'filter' => '(&(mail=*)(|(&(objectClass=user)(!(objectClass=computer)))(objectClass=group)))',
        'global_search' => true,
        'fuzzy_search' => true
    ),
);