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). Поэтому вы должны выбрать плагин, который подходит вашей настройке.


Установка

Устанавливаем необходимые компоненты <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