Zarafa

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

Инструкция по установке Zarafa Collaboration Platform

Для ALTLinux собирается Open Source & Community Version Zarafa с версии 7.0.0 rc1, в которую включены наши доработки.<br\> Git-репозиторий: http://git.altlinux.org/people/radik/packages/zarafa.git

Эта инструкция предназначена для описания настройки Zarafa-Server и сопутствующих сервисов почтового сервера и органайзера Zarafa. В качестве MTA (агента по передаче писем) принят postfix. Использование других MTA возможно, но в этом статье они рассмотрены не будут. Zarafa предполагается использовать как замена Microsoft Exchange. Дистрибутив Linux - AltLinux p6. Инструкция написана 04.11.2011, последнее обновление 28.03.2012, версии пакетов актуальны на этот момент с репозитория p6. Настройка проведена без ssl, для этого посвящена отдельная статья. Автор инструкции - Айнур Шакиров. На данный момент инструкция не закончена до конца.

Примечание: я как автор этой инструкции не могу дать 100% гарантии, что всё нижесказанное будет работать так, как я описал. Если вы нашли ошибку или недоработку, или считаете, что статью нужно дополнить, прошу оповестить меня об этом. Я с радостью приму Вашу помощь.

Примечание 1.5. Большинство операции выполняются из-под root.

Примечание 2. Если что-то не сработало, не паникуйте, перепроверьте все набранные данные, так же не будет лишним проверить багтрекер. В моей практике происходили самые разнообразные проблемы и, слава науке, все они успешно разрешились. Поэтому ваша проблема тоже, скорее всего, решаема. Еще один совет - всегда старайтесь использовать последние версии всех сервисов.

Итак, начнём менять жизнь к лучшему.

Предварительная настройка

Установка необходимых пакетов

Для последующей настройки нам необходимы следующие пакеты (некоторые пакеты опциональны, например, для TLS):

Apache:

apt-get install apache2 apache2-mod_php5 apache2-mod_tls

Postfix:

apt-get install postfix postfix-mysql postfix-ldap

Выбор mysql и ldap-модулями зависит от того, где в дальнейшем будут храниться ваши пользователи.

MySQL

apt-get install mysql

Zarafa

apt-get install zarafa

Zarafa Webaccess и WebApp

apt-get install zarafa-webaccess zarafa-webapp

Все остальные необходимые пакеты установятся (точнее, должны установиться) по зависимостям.

Думаю, особых комментариев по поводу пакетов делать не надо, по названиям пакетов понятно, какой пакет что делает и зачем нужен. Уточнение дам насчёт webaccess и webapp

1. Zarafa Webaccess - это классический веб-интерфейс Zarafa. Очень похож на Outlook 2003. На данный момент он уже устарел по технологиям построения интерактивных веб-интерфейсов (по сути, webaccess практически не интерактивен), но несмотря на это является довольно мощной и функциональной "мордой" для почты.Все остальные необходимые пакеты установятся (точнее, должны установиться) по зависимостям.

Думаю, особых комментариев по поводу пакетов делать не надо, по названиям пакетов понятно, какой пакет что делает и зачем нужен. Уточнение дам насчёт webaccess и webapp

1. Zarafa Webaccess - это классический веб-интерфейс Zarafa. Очень похож на Outlook 2003. На данный момент он уже устарел по технологиям построения интерактивных веб-интерфейсов (по сути, webaccess практически не интерактивен), но несмотря на это является довольно мощной и функциональной "мордой" для почты.

2. Zarafa WebApp. Предполагаемая замена Webaccess. Использует последние достижения в Web, такие как JS, продвинутый CSS и прочие навороты. На данный момент пока является недоработанным, но развивается очень быстро. Главная его цель - догнать и перегнать по функциям Webaccess и предложить удобный интерфейс. Пока получается хорошо, разработчикам - успехов.

О установке остальных пакетов будет сказано по мере повествования.

Настройка системы и служб

Теперь перейдем к настройке сервисов, которые пока прямо не относятся к почте.

Первый шаг - добавьте пользователя и группу vmail командой useradd -r vmail. Вы вольны указать любое другое имя (кроме системных), мы будем ориентироваться на vmail в качестве примера.

Второй шаг - в /etc/sysconfig/zarafa убедитесь, что во всех переменных указана системная локаль (обычно ru_RU.UTF-8). По умолчанию в Альте (да и не только в нём) указывается или просто UTF-8, или С, что является неправильной локалью, Zarafa-server упадет, жалуясь на нее.

Далее укажите, что postfix работал в режиме сервера:

control postfix server

Следующий шаг - настройте сетевой режим mysql. Для этого закомментируйте след. строчку в файле */var/lib/mysql/my.cnf*

#skip-networking

Дальнейшее действие - учитывая, что zarafa будет работать под пользователем vmail, для сервисов zarafa по умолчанию не будет доступен каталог /var/log/zarafa, предназначенная для журналов. Для исправления:

chown vmail:vmail /var/log/zarafa

Однако тут Вас может ждать напасть, если вы запустили zarafa с правами root, но далее поменяли пользователя vmail (далее об этом ниже). В этом случае удалите все логи в каталоге /var/log/zarafa и перезапустите zarafa уже с правами vmail или рекурсивно поменяйте их:

chown -R vmail:vmail /var/log/zarafa/

Последним шагом станет указание пароля root для mysql. Для этого можно выполнить след. последовательность шагов:

sudo /etc/init.d/mysqld start; sudo mysqladmin -u root password ваш_пароль

Командой mysql -u root -p и далее набором пароля проверьте параметры входа. Вошли - значит, предварительная настройка завершена до конца и успешно.

Дополнение по базе данных. В Альте по умолчанию запрещено входить в базу в качестве root, используя удалённый вход. О том, что делать в этом случае - смотрите в начале практической настройки.

Если вы хотите заняться оптимизацией mysql и zarafa, сделайте это заранее, до запуска соответствующих служб. Сами оптимизации описаны в конце статьи.

Также не забудьте добавить необходимые службы в автозапуск (просто выделите всю строку и разом выполните):

chkconfig mysqld on; chkconfig httpd2 on; chkconfig postfix on; chkconfig zarafa-server on;chkconfig zarafa-dagent on
chkconfig zarafa-gateway on; chkconfig zarafa-ical on; chkconfig zarafa-indexer on; chkconfig zarafa-monitor on
chkconfig zarafa-spooler on

Практическая часть настройки

Для того, чтобы не использовать root удалённо (обычно такой вход запрещён), с самого начала создадим необходимого пользователя с именем zarafa в mysql и дадим ему необходимые права:

[root@zarafa client] mysql -u root -p
mysql> create user zarafa identified by 'ваш_пароль';
mysql> grant all privileges on zarafa.* to 'zarafa'@'%' identified by 'ваш_пароль' with grant option;
mysql> flush privileges;

Настройка postfix. (/etc/postfix/)

Предусмотрено два сценария настройки postfix.

Если пользователи будут обитать в mysql (простой режим, подходит чисто на "поиграть")

В файл *main.cf* добавьте этот кусок конфигурации (для того, чтобы узнать имя доменное имя, наберите команду *host inet-ip* или *hostname -f*):

mydomain = example.com
myhostname = zarafa.example.com
myorigin = example.com
mailbox_command = /usr/bin/zarafa-dagent "$USER"
mailbox_transport = zarafa: zarafa_destination_recipient_limit = 1
smtp_helo_name = smtp.example.com
mydestination = localhost, example.com, zarafa.example.com
alias_maps = hash:/etc/postfix/aliases
alias_database = hash:/etc/postfix/aliases
virtual_alias_maps = mysql:/etc/postfix/mysql-aliases.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-aliases.cf
mynetworks = 127.0.0.0/8
inet_interfaces = all
biff = no
relayhost = 
recipient_delimiter = + 
message_size_limit = 33554432
smtpd_banner = $myhostname ESMTP $mail_name

############################################################
# Mail system restrictions (for SASL)
############################################################
smtpd_helo_restrictions = permit_mynetworks, permit_sasl_authenticated
smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated
smtpd_sender_restrictions = permit_mynetworks, permit_sasl_authenticated
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
############################################################

############################################################
# TLS parameters (port 25)
############################################################
smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem
smtpd_tls_cert_file=/etc/postfix/ssl/postfix_public_cert.pem
smtpd_tls_key_file=/etc/postfix/ssl/postfix_private_key.pem
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_use_tls = yes
tls_random_source = dev:/dev/urandom
smtp_tls_note_starttls_offer = yes
# Same as defaults
#smtpd_enforce_tls = no
#smtpd_tls_auth_only = no
#smtpd_tls_received_header = no
#smtpd_tls_session_cache_timeout = 3600s

В начале мы указываем параметры самой почтовой службы, далее настраиваем самые необходимые разрешения (для работы SASL) и настройки TLS для шифрования исходящей почты (дополнительно об этом в статье про шифрование). Остальные настройки postfix будут рассмотрены отдельно.

Теперь уточнения по представленной конфигурации. Во-первых, здесь далеко не все настройки postfix, которые теоретически могут вам пригодиться, представлена лишь минимальная конфигурация. Во-вторых, для начала закомментируйте все строчки, относящиеся к TLS, с ними потом разберётесь. Далее. Конфигурация дана в случае использования mysql в качестве хранилища для пользователей, но этот вариант нежелателен из-за малой гибкости решения и при если сервер будет "боевым", то настоятельно рекомендуем использовать LDAP (наш выбор - 389DS, о нём - в отдельном статье). Так же не забудьте поменять максимальный размер письма, если нужно, здесь он равен 32 MiB.

Отдельно скажу о relayhost. Он намеренно оставлен пустым. Данная настройка заставит использовать postfix relay почтового сервера, куда посылается письмо. Это решает тучу проблем с отправкой писем, поэтому я рекомендую оставить его так. Однако, в случае использования стороннего relay, вы его сможете спокойно менять, работоспособность самого postfix и zarafa не пострадает (если, конечно, relay рабочий).

Далее. В самый конец файла master.cf добавляем следующее:

zarafa     unix  -       n       n       -       10      pipe
   flags=DRhu user=vmail argv=/usr/bin/zarafa-dagent -R ${recipient}

Пробелы перед flags обязательны (необходим хотя бы один пробел)

Эти две строчки заставит "гнать" письма в Zarafa с определёнными атрибутами.

Последним шагом в настройке postfix будет указание на работу с mysql-базой. Для этого создайте файл /etc/postfix/mysql-aliases.cf (если в конфиге, в полях virtual* указан другой путь, создайте файл в соответствии с конфигом). Добавьте туда след.:

user = zarafa
password = ваш_пароль
hosts = 127.0.0.1
dbname = zarafa
query = select value from objectproperty where objectid=(select objectid from objectproperty where value='%s' limit 1) and propname='emailaddress';

Этот файл не нужен, Если вы намерены настроить интеграцию postfix и LDAP.

Если пользователи будут обитать в LDAP.

Некоторые уточнения уже были сделаны в части о MySQL.

В /etc/postfix/main.cf добавьте или измените след. параметры:

virtual_alias_maps = mysql:/etc/postfix/ldap-aliases.cf
virtual_mailbox_maps = mysql:/etc/postfix/ldap-users.cf
virtual_transport = lmtp:127.0.0.1:2003

Далее создайте эти файлы. Содержимое этих файлов почти совпадают:

ldap-users.cf:

server_host = 127.0.0.1:389
search_base = ou=Zarafa,dc=center,dc=ru
version = 3
scope = sub
query_filter = (mail=%s)
result_attribute = mail

ldap-aliases.cf:

server_host = 127.0.0.1:389
search_base = ou=Zarafa,dc=center,dc=ru
version = 3
scope = sub
query_filter = (zarafaAliases=%s)
result_attribute = mail

Порт в узле нужно указывать, если для LDAP используется нестандартный. По умолчанию postfix будет стучаться на порт 389.

В общем-то, на этом всё. Проверка всего этого хозяйства проделываете после настройки zarafa и отправки какого-нибудь письма пользователю, зарегистрированного в LDAP. Обычно основной проблемой является проблема ненахождения пользователя. Скорее всего, в этом случае вы неправильно укаали вы неправильно указали search_base.

Настройка zarafa. (/etc/zarafa/)

Настройка самой zarafa обычно сводится к указанию пользователя, под которым будет запущен сервер и настройка LDAP. Про последнее будет рассказано в отдельном разделе ниже. Также, в случае защищенных соединений, сюда входит включение оных и указание сертификата и приватного ключа.

Далее для каждого конфиг. файла будут указаны те строки, которые необходимо изменить. Все остальные настройки меняются из условий настройки.

Настройка /etc/zarafa/dagent.cfg

run_as_user = vmail
run_as_group = vmail

Настройка /etc/zarafa/gateway.cfg

run_as_user = vmail
run_as_group = vmail

Настройка /etc/zarafa/ical.cfg

run_as_user = vmail
run_as_group = vmail
server_timezone = Europe/Moscow

Настройка /etc/zarafa/indexer.cfg

run_as_user = vmail
run_as_group = vmail

О активизации работы индексации читайте в разделе "Оптимизации для повышения быстродействия" в настоящей статье.

Настройка /etc/zarafa/monitor.cfg

run_as_user = vmail
run_as_group = vmail

Настройка /etc/zarafa/server.cfg

local_admin_users = root vmail
run_as_user = vmail
run_as_group = vmail
system_email_address    = postmaster@example.com
mysql_host   = 127.0.0.1
mysql_user  = zarafa
mysql_password  = ваш_пароль_в_базе
user_plugin             = ldap
user_plugin_config      = /etc/zarafa/ldap.*.cfg
disabled_features = pop3

Настройка /etc/zarafa/spooler.cfg

run_as_user = vmail
run_as_group = vmail

Уточнение по файлу server.cfg. В этом примере в качестве user_plugin указан ldap. Этот параметр определяет, где zarafa должна хранить данные пользователей, в LDAP (ldap) или в Mysql (db). Поэтому вы должны выбрать плагин, который подходит вашей настройке.

user_plugin_config - путь к файлу настроек для LDAP. Может принимать два значения:

  1. /etc/zarafa/ldap.openldap.cfg (подходит для OpenLDAP и 389DS)
  2. /etc/zarafa/ldap.active-directory.cfg (понятно, что для AD)

Правильно указывайте этот файл. Часто причиной недоступности ldap для zarafa является кривой путь к конфиг. файлу.

Осталось запустить все службы (restart применяется по причине уже возможного запуска сервисов):

/etc/init.d/postfix restart; /etc/init.d/httpd2 restart; /etc/init.d/mysqld restart; /etc/init.d/zarafa-dagent restart; /etc/init.d/zarafa-gateway restart; /etc/init.d/zarafa-ical restart 
/etc/init.d/zarafa-indexer restart; /etc/init.d/zarafa-monitor restart; /etc/init.d/zarafa-server restart; /etc/init.d/zarafa-spooler restart

Эта команда запустит все сервисы последовательно. После запуска проверьте все логи zarafa и postfix/maillog на предмет ошибок. Из ненастроенных служб остался только zarafa-indexer, о нем ниже. Заметьте, что в списке нет zarafa-liсensed, о нем также написано ниже в настоящем статье.

Настройка интеграции с LDAP и Zarafa

Для более продуктивной работы с большой базой пользователей, а также для поддержки дополнительных атрибутов пользователя (напр., номера телефонов) есть большой смысл вместо mysql поднять и использовать сервер LDAP.

По умолчанию в zarafa предоставляются конфиги для Active Directory и OpenLDAP. Конфигурация OpenLDAP так же подходит для 389DS.

Никаких особых настроек по сути делать не надо. Для Active Directory (ldap.active-directory.cfg):

ldap_host = 10.10.19.213
ldap_port = 389
ldap_bind_user = cn=syncadm,cn=Users,dc=domain,dc=loc
ldap_bind_passwd = 1q2w3e4r5t6y!
ldap_search_base = dc=domain,dc=loc

Если в AD уже есть пользователи и не все они имеют почту, то в этом же конфиге поменяйте следующую строку:

ldap_user_search_filter = (zarafaAccount=1)

Это опция будет работать только лишь после установки Zarafa ADS (коннектора Zarafa к AD) и после отметки нужных пользователей AD как имеющие аккаунт Zarafa.

Для OpenLDAP (ldap.openldap.cfg):

ldap_host = 10.10.19.213
ldap_port = 389
ldap_bind_user = cn=admin,cn=users,dc=example,dc=com
ldap_bind_passwd = Gtr$%11a
ldap_search_base = dc=example,dc=com

Т.е. редактируем те же самые строки, только в другом файле. Изменение остальных уже зависят от условий настройки. Фильтр в данном случае нужно установить самостоятельно. Для этого в zarafa есть схемы. Подробнее - в статье о 389DS.

Не забудьте про автозапуск 389DS:

chkconfig fedora-ds on
chkconfig fedora-ds-admin on

Для OpenLDAP:

chkconfig slapd on

===Zarafa WebAccess и WebApp

По умолчанию они будут доступны по адресу http://ipaddr/webaccess или http://ipaddr/webapp (используется 80 порт). Если все установлено (apache2 и mod_php5 к нему), то веб-морда будет работать без дополнительных настроек. Можно лишь изменить, к примеру, веб-адрес, где веб-морда будет доступна

Помните, что значительные изменения, сделанные пользователем в конфиг. файла Apache, которые принадлежат zarafa, могут быть потеряны при обновлений или попросту перестать работать. В этом случае, Вам придется вручную восстанавливать конфиг. файлы или каким-то образом предотвращать изменения конфиг. файлов. Настройки zarafa-licensed.

Как понятно из названия, эта служба управляет лицензией Zarafa. Как модуль он необходим виндовому Zarafa Outlook Client.

Эта часть вскоре может потерять актуальность, так как инженеры Zarafa начали собирать модуль лицензий в rpm-пакет для Alt Linux.

h3. Установка zarafa-licensed на opensource-версию Zarafa.

Скачайте пакет *Free* для RHEL6, совпадающая с установленной версией Zarafa и архитектурой ОС, отсюда -> http://download.zarafa.com/community/final/7.0/. Допустим, нам необходим пакет для 7.0.2 и x86_64 -> http://download.zarafa.com/community/final/7.0/7.0.2-29470/zcp-7.0.2-29470-rhel-6-x86_64-free.tar.gz. Распакуйте его:

tar zxpvf http://download.zarafa.com/community/final/7.0/7.0.2-29470/zcp-7.0.2-29470-rhel-6-x86_64-free.tar.gz

Среди пакетов найдите zarafa-licensed_7.0.2-29470_i386.rpm. Для его распаковки необходим пакет *rpmdevtools*:

sudo apt-get install rpmdevtools

Распакуйте rpm-пакет командой:

sudo mkdir zarafa-license
sudo cd zarafa-license
sudo rpmdev-extract zarafa-licensed_7.0.2-29470_i386.rpm

Скопируйте каталог в /opt

sudo cp -r zarafa-license /opt

Теперь, следуя путям в каталоге zarafa-license, создайте символические ссылки в файловой системе. К примеру, /opt/zarafa-license/usr/bin/zarafa-licensed -> /usr/bin/zarafa-licensed и т.д. Самое простое - сделать их через MC, используя сочетание *С-x, s*, однако можно воспользоваться командой вида *ln -s /opt/zarafa-license/usr/bin/zarafa-licensed /usr/bin/zarafa-licensed* для каждого файла. Каталоги man и doc можете пропустить.

Также для zarafa-licensed необходимы некоторые библиотеки, они помещены в архив и прикреплены в статье (для i586 и x86_64). Просто так же скопируйте их в отдельный каталог в /opt, потом сделайте символические ссылки в */usr/lib*.

После установки всех симлинков запустите службу zarafa-licensed и перезапустите zarafa-server:

sudo service zarafa-licensed start; sudo service zarafa-server restart

Дабы убедиться в работе службы лицензий проверьте лог /var/log/zarafa во время запуска, он должен оповестить, что zarafa-licensed была найдена.

Работа без платной лицензии позволяет подключить 3-х пользователей Outlook.

Если лицензия была куплена, выполните следующую команду для добавления лицензии:

sudo echo "6K3L11A...12" > /etc/zarafa/license/base

6K3L11A...12 - это серийный номер, выданный Вам. После перезагрузите zarafa-server. В логе в это время должно появиться сообщение типа:

Using commercial license serial '6K3L11A...12'

На этом настройка zarafa-license завершена.

Для дополнения лицензии вторым ключом, просто добавьте файл с любым именем, который будет содержать серийный номер, в */etc/zarafa/license/* и перезагрузите сервисы *zarafa-licensed* и *zarafa-server*.

Установка

Устанавливаем необходимые компоненты <br\> MySQL:

apt-get install MySQL-server

Postfix:

apt-get install postfix

Apache2:

apt-get install apache2 apache2-mod_php5

Zarafa:

apt-get install zarafa zarafa-webaccess

Настройка

Внимание! Zarafa-Server по-умолчанию не запущен так как еще не введен пароль от MySQL-Server.<br\> Запускаем mysql-server:

service mysqld start

Задаем пароль root для mysql-server:

mysqladmin -u root password new_password

Проверяем доступ:

# mysql -u root -p
Enter password:

Укажите пароль root от MySQL-базы в /etc/zarafa/server.cfg

vim /etc/zarafa/server.cfg

Добавляем в /etc/postfix/main.cf следующие строчки:

mailbox_command = /usr/bin/zarafa-dagent "$USER"
mailbox_transport = zarafa: zarafa_destination_recipient_limit = 1

Так-же необходимо добавить ваш maildomain in /etc/postfix/main.cf.<br\> Например:

mydestination = hostname.local, example.com, localhost.hostname.local, localhost

Добавьте в /etc/postfix/master.cf

zarafa    unix  -       n       n       -       10       pipe
  flags=DRhu user=vmail argv=/usr/bin/zarafa-dagent -R ${recipient}

Создаем пользователя vmail:

adduser -r vmail

Добавьте пользователя vmail в параметр variable local_admin_users в /etc/zarafa/server.cfg. <br\> Теперь запускаем необходимые нам службы:

/etc/init.d/mysqld restart
/etc/init.d/httpd2 restart
/etc/init.d/postfix restart
/etc/init.d/zarafa-server restart

Добавляем их в автозагрузку:

chkconfig mysqld on
chkconfig httpd2 on
chkconfig postfix on

Создаем нового пользователя:

/usr/bin/zarafa-admin -c test -p password -e test@example.com -f "Zarafa Test"

После пройдите на http://ваш_ip/webaccess, вы получите доступ к веб-морде Zarafa, войдите под созданным пользователем и отправьте письмо самому себе. Если письмо приходит, на этом минимальная настройка Zarafa завершена. Если нет, проверьте логи postfix (/var/log/maillog).

Подключение к LDAP

Вопрос подключения Zarafa к LDAP описывается тут.

Ссылки

  1. Installing Zarafa from Ubuntu Repository
  2. Zarafa Community
  3. Zarafa Wiki