Roundcube: различия между версиями

Материал из ALT Linux Wiki
м (→‎Настройка: date.timezone)
Нет описания правки
 
(не показано 14 промежуточных версий 7 участников)
Строка 1: Строка 1:
Очень быстрое КакСде по подъёму веб-почты из пакета {{pkg|roundcube}} по состоянию на версию 0.7.1-alt2.
Очень быстрое КакСде по подъёму веб-почты из пакета {{pkg|roundcube}} по состоянию на версию 1.2.3 и выше.


== Пакеты ==
== Пакеты ==


  apt-get install roundcube roundcube-apache apache-mod_php5 php5-mbstring php5-sockets php5-fileinfo php5-intl php5-mysql MySQL-server postfix-dovecot dovecot
  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
  control postfix server
  for i in dovecot httpd mysqld; do chkconfig $i on && service $i start; done
  for i in dovecot httpd2 mysqld postfix; do chkconfig $i on && service $i start; done


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


Не пускает ни user, ни user@localhost, т.к. dovecot идёт в pam с "user@localhost"  в обоих случаях — http://www.roundcubeforum.net/index.php/topic,10917.msg56250.html#msg56250:
При ''непустом'' <tt>username_domain</tt> не пустит ни 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
  echo "auth_username_format = %n" >> /etc/dovecot/conf.d/10-auth.conf
  service dovecot restart
  service dovecot restart
(ну или «не делайте так»)


== Дамп базы ==
== Дамп базы ==
Строка 28: Строка 30:
== Настройка ==
== Настройка ==


Выставляем временной пояс:
Выставляем временной пояс: в файле /etc/php/*/apache2-mod_php/php.ini
 
  date.timezone = 'Europe/Moscow'
echo 'date.timezone = MSK' > /etc/php/5.5/apache-mod_php/php.d/tz.ini
 
Разрешаем доступ к инструменту первоначальной настройки (опасно! не забыть отключить!):
 
sed -i 's,^Deny,Allow,' /usr/share/roundcube/installer/.htaccess


Идём на http://localhost/roundcube/installer/, результат настройки загружаем в /usr/share/roundcube/config/ и прикрываем правами:
<!-- echo 'date.timezone = MSK' > /etc/php/5.5/apache-mod_php/php.d/tz.ini
-->
и выполняем
# service httpd2 reload


chgrp _webserver /usr/share/roundcube/config/{db,main}.inc.php
Включаем конфигурационный файл apache2 для rouncube:
chmod 640 /usr/share/roundcube/config/{db,main}.inc.php
<pre># a2enextra roundcube
# systemctl restart httpd2</pre>


Прикрываем инсталер:
Для того чтобы разрешить доступ к web-инсталятору, приведите файл {{path|/usr/share/roundcube/installer/.htaccess}} к следующему виду, указав IP-адрес компьютера с которого Вы будете настраивать (опасно! не забудьте отключить!):
 
<pre><ifModule mod_authz_core.c>
sed -i 's,^Allow,Deny,' /usr/share/roundcube/installer/.htaccess
    Require ip 192.168.135.190
chmod 0 /usr/share/roundcube/installer
</ifModule>
<ifModule !mod_authz_core.c>
    Order Allow,Deny
    Allow from 192.168.135.190
</ifModule></pre>
Переходим на http://192.168.135.190/roundcube/installer/, результат настройки загружаем в {{path|/etc/roundcube/config.inc.php}} и прикрываем правами:
<pre>chgrp _webserver /etc/roundcube/config.inc.php
chmod 640 /usr/share/roundcube/config/config.inc.php</pre>
Переходим в web-инсталяторе на вкладку '''3.Test config''' и инициализируем базу данных.
Для того чтобы запретить доступ к web-инсталятору, приведите файл {{path|/usr/share/roundcube/installer/.htaccess}} к следующему виду:
<pre><ifModule mod_authz_core.c>
    Require all denied
</ifModule>
<ifModule !mod_authz_core.c>
    Order Allow,Deny
    Deny from all
</ifModule></pre>
И запретите доступ к каталогу:
<pre># chmod 0 /usr/share/roundcube/installer</pre>


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


[[Категория:Admin]]
== AD SSO ==
[[Категория:HOWTO]]
Для работы прозрачной аутентификации необходимо настроить прозрачную аутентификацию на web-сервере [[Apache2/AD-auth]] и на imap сервере [[Dovecot/AD-auth]]. Так же необходимо включить нужный плагин и указать SPN в файле {{path|config.inc.php}}:
<pre>$config['plugins'] = array('krb_authentication');
$config['krb_authentication_context'] = 'imap/rcserver.dome.teste@DOME.TESTE';</pre>
== Адресная книга AD ==
Для возможности формирования адресной книги на основе данных о пользователях из Active Directory необходимо обеспечить прозрачную аутентификацию на LDAP сервере домена. Для этого необходимо установить следующий пакет:
<pre># apt-get install pear-Net_LDAP3</pre>
И добавить настройки адресной книги в {{path|config.inc.php}}:
<pre>$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
    ),
);</pre>
 
[[Категория:Mail]]
[[Категория:Mail]]
{{Category navigation|title=Системному администратору|category=Admin|sortkey={{SUBPAGENAME}}}}
{{Category navigation|title=HOWTO|category=HOWTO|sortkey={{SUBPAGENAME}}}}

Текущая версия от 21:10, 13 июля 2017

Очень быстрое КакСде по подъёму веб-почты из пакета 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
    ),
);