В рунете да и в целом в интернете мало рассказывается о таком интересном продукте, как openchange.
В теории openchange и его сопутствующие компоненты должны полностью заменять MS Exchange Server, на практике же это получается не совсем.
Тех кто заинтересовался прошу в сам пост. Там будет рассказано о установке на CentOS 6.5.
Скажу сразу, что продукт достаточно сырой и для крупной организации пока не подходит.
Исходные данные:
1)Большой домен с поддоменами и разными доверенными связями с другими доменами.
2)В связи с разделением большой фирмы на отдельные юр лица появилась необходимость собственной почты.
3)Пользователи привыкли к плюшкам в виде общих календарей, адресной книги и прочего.
Решение:postfix+dovecot и попробовать ко всему этому openchange на тестовом домене.
Установка производилась на дистрибутив CentOS, iptables и selinux были отключены.
Первоначально были установлены и сконфигурированы postfix и dovecot с авторизацией в AD.
Руководств по установке в интернете достаточно много, поэтому подробно приводить настройки не буду, но скажу сразу, что пользовался только стандартными репозиториями.
В качестве внутреннего транспорта используется lmtp.
Для синхронизации писем получаемых через MAPI и IAMP в конфиг LDAP добавлены следующие строки:
Это необходимо для авторизации openchange в dovecot.
Теперь перейдем непосредственно к установке openchange.
Подключаем необходимый репозиторий.
Запускаем установку.
Я люблю mysql больше, чем postgresql, поэтому sogo будет работать под mysql.
Дополнительно ставим mysql и коннектор для sogo
Присоединяем нашу samba4 в windows AD
Присоединение происходит автоматически, необходимо только ввести пароль от учетной записи Administrator
Добавляем в /etc/samba4/smb.conf следующие строчки
После этого производим запуск samba
На всякий случай поясню, что означает эта команда
-d это режим дебага. Цифра 3 означает уровень дебага
-i это interactive, то есть весь вывод в консоль
-M=single собственно режим работы без форков.
По не понятной мне причине samba4 не открывает нужных сокетов если её пытаться запустить через команду samba, а через init скрипт она вообще отказывается запускаться с такой конфигурацией в smb.conf
Поэтому запускать её приходится командой выше, но при этом она отлично отправляется в фон через nohup.
После запуска проверяем работу репликации.
Для своей работы openchange правит схему AD, но делает это только, когда сам является владельцем схемы.
Передаем права на схему нашему Linux контроллеру.
Запускаем настройку openchange
После этого перезапускаем samba
vim /etc/ocsmanager/ocsmanager.ini
Изменяем параметры подключения к LDAP
Так же указываем где находится samba
В настройках LDAP и SAMBA_HOST можно указать доменный контроллер windows, на корректность работы это не влияет.
Запускаем ocsmanager
service openchange-ocsmanager start
Создаем базу и пользователя.
Правим конфиг /etc/sogo/sogo.conf
Указываем, где находится база
Указываем местонахождение директорий для писем, а так же сервера imap и postfix
Указываем местонахождение LDAP сервера
Ключевой момент если указать в качестве hostname нашу samba, то при попытке захождения outlook-ом samba висла наглухо.
Но может это баг только на моём сервере.
Указываем язык и временную зону
По желанию можно там же включить web interface, но у меня на нем уехала верстка во всех браузерах.
Так же, если вы будете использовать web интерфейс, необходимо не забыть указать, какой ip адрес будет слушать sogo(по умолчанию 127.0.0.1)
WOPort = «0.0.0.0:20000»;
Запускаем sogo
service sogod start
Переходим к настройке web части
/etc/httpd/conf.d/rpcproxy.conf
Указываем параметр SetEnv SAMBA_HOST 127.0.0.1
Выдаем права на директорию /var/cache/ntlmauthhandler
Желательно использование ssl. Устанавливаем mod_ssl и генерируем сертификат.
/etc/httpd/conf.d/SOGo.conf
При использовании ssl необходимо включить его в настройках sogo
Запускаем apache
service httpd start
На этом установку можно считать законченной.
Для тех кому необходимы ящики создаем их командой
openchange_newuser --create user
Можно переходить к настройке outlook.
К сожалению autodiscover в данный момент корректно не отрабатывает корректно полностью и приходится задавать параметры руками.
В моем случае это выглядит так:
Сервер:mail.testmail.local
Имя пользователя: user
Переходим в меню «Другие настройки», раздел безопасность и ставим галочку напротив «Всегда запрашивать учетные данные для входа»
При подключении из вне указываем прокси-сервер.
На домене с поддоменами openchange не заработал вообще, были выявлены странные баги, как-то описанный выше баг с sogo. Так же samba периодически падала, если пользователь есть в AD, но ящика у него нет. В данный момент падать перестала. Но самое неприятное, что при каких-то проблемах samba просто падает с сообщением PANIC, что затрудняет диагностику.
Разработчики этого продукта и не обещали интеграции в уже рабочую windows AD, поэтому вылезшие баги вполне могут относиться к тому, что мы делаем то, что не совсем предусмотрено разработчиками.
Но в данный момент у меня удалось стабильно запустить данный продукт для тестирования.
Я считаю, что оптимальной структурой для openchange на данном этапе развития продукта будет:
1) Установить отдельный контроллер samba4\windows AD
2) Вынесение на отдельный сервер dovecot+postfix с авторизацией по LDAP (в случае поломки openchange организация все равно останется с работающим почтовиком)
3)Тех, кому необходимы календари и адресные книги(а как показала практика они необходимы не всем) подключить по mapi к openchange.
4) Писать баг-репорты разработчикам для скорейшего доведения openchange до более стабильного состояния.
В теории openchange и его сопутствующие компоненты должны полностью заменять MS Exchange Server, на практике же это получается не совсем.
Тех кто заинтересовался прошу в сам пост. Там будет рассказано о установке на CentOS 6.5.
Скажу сразу, что продукт достаточно сырой и для крупной организации пока не подходит.
Исходные данные:
1)Большой домен с поддоменами и разными доверенными связями с другими доменами.
2)В связи с разделением большой фирмы на отдельные юр лица появилась необходимость собственной почты.
3)Пользователи привыкли к плюшкам в виде общих календарей, адресной книги и прочего.
Решение:postfix+dovecot и попробовать ко всему этому openchange на тестовом домене.
Установка.
Установка производилась на дистрибутив CentOS, iptables и selinux были отключены.
Первоначально были установлены и сконфигурированы postfix и dovecot с авторизацией в AD.
Руководств по установке в интернете достаточно много, поэтому подробно приводить настройки не буду, но скажу сразу, что пользовался только стандартными репозиториями.
В качестве внутреннего транспорта используется lmtp.
Для синхронизации писем получаемых через MAPI и IAMP в конфиг LDAP добавлены следующие строки:
passdb {
driver = static
args = nopassword=y allow_nets=127.0.0.1/32
}
Это необходимо для авторизации openchange в dovecot.
Теперь перейдем непосредственно к установке openchange.
Подключаем необходимый репозиторий.
[sogo-rhel6]
name=Inverse SOGo Repository
baseurl=http://inverse.ca/downloads/SOGo/RHEL6/$basearch
gpgcheck=0
enable=1
Запускаем установку.
yum install samba4 openchange sogo-openchange-backend openchange-ocsmanager openchange-rpcproxy sogo
Я люблю mysql больше, чем postgresql, поэтому sogo будет работать под mysql.
Дополнительно ставим mysql и коннектор для sogo
yum install mysql-server sope49-gdl1-mysql
Настройка samba
Присоединяем нашу samba4 в windows AD
samba-tool domain join testmail.local DC -UAdministrator --realm=testmail.local
Присоединение происходит автоматически, необходимо только ввести пароль от учетной записи Administrator
Добавляем в /etc/samba4/smb.conf следующие строчки
# Begin OpenChange Server Configuration
dcerpc endpoint servers = +epmapper, +mapiproxy, +dnsserver
dcerpc_mapiproxy:server = true
dcerpc_mapiproxy:interfaces = exchange_emsmdb, exchange_nsp, exchange_ds_rfr
# End OpenChange Server configuration
После этого производим запуск samba
samba -d 3 -i -M=single
На всякий случай поясню, что означает эта команда
-d это режим дебага. Цифра 3 означает уровень дебага
-i это interactive, то есть весь вывод в консоль
-M=single собственно режим работы без форков.
По не понятной мне причине samba4 не открывает нужных сокетов если её пытаться запустить через команду samba, а через init скрипт она вообще отказывается запускаться с такой конфигурацией в smb.conf
Поэтому запускать её приходится командой выше, но при этом она отлично отправляется в фон через nohup.
После запуска проверяем работу репликации.
samba-tool drs kcc -Uadministrator dcmail.testmail.local
samba-tool drs showrepl
Для своей работы openchange правит схему AD, но делает это только, когда сам является владельцем схемы.
Передаем права на схему нашему Linux контроллеру.
samba-tool fsmo seize --role=schema
Запускаем настройку openchange
openchange_provision
openchange_provision --openchangedb
После этого перезапускаем samba
Переходим к настройке ocsmanager
vim /etc/ocsmanager/ocsmanager.ini
Изменяем параметры подключения к LDAP
[main]
# Possible authentication system
auth = ldap
mapistore_root = /var/lib/samba4/private
mapistore_data = /var/lib/samba4/private/mapistore
debug = no
[auth:ldap]
#host = ldap://localhost
host = mail.testmail.local
port = 3268
bind_dn = CN=user,CN=users,DC=testmail,DC=local
bind_pw = password
basedn = CN=Users,dc=testmail,dc=local
[rpcproxy:ldap]
host = mail.testmail.local
port = 389
basedn = CN=Users,dc=testmail,dc=local
Так же указываем где находится samba
SAMBA_HOST = 127.0.0.1
В настройках LDAP и SAMBA_HOST можно указать доменный контроллер windows, на корректность работы это не влияет.
Запускаем ocsmanager
service openchange-ocsmanager start
Настройка sogo
Создаем базу и пользователя.
CREATE DATABASE `sogo` CHARACTER SET='utf8';
CREATE USER 'sogo'@'localhost' IDENTIFIED BY 'sogo';
GRANT ALL PRIVILEGES ON `sogo`.* TO 'sogo'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Правим конфиг /etc/sogo/sogo.conf
Указываем, где находится база
SOGoProfileURL = «mysql://sogo:sogo@localhost:3306/sogo»;
OCSFolderInfoURL = «mysql://sogo:sogo@localhost:3306/sogo/sogo_folder_info»;
OCSSessionsFolderURL = «mysql://sogo:sogo@localhost:3306/sogo/sogo_sessions_folder»;
Указываем местонахождение директорий для писем, а так же сервера imap и postfix
// SOGoDraftsFolderName = Drafts; А вот с этой строкой samba у меня падала с ошибками, которые не всегда воспроизводились, поэтому к сожалению черновики перемещаются в корзину.
SOGoDraftsFolderName = Trash;
SOGoSentFolderName = Sent;
SOGoTrashFolderName = Trash;
SOGoIMAPServer = imaps://localhost:993;
SOGoSMTPServer = 127.0.0.1;
SOGoMailDomain = testmail.local;
SOGoMailingMechanism = smtp;
SOGoForceExternalLoginWithEmail = NO;
SOGoMailSpoolPath = /var/spool/sogo;
NGImap4ConnectionStringSeparator = "/";
Указываем местонахождение LDAP сервера
SOGoUserSources = (
{
type = ldap;
CNFieldName = cn;
UIDFieldName = sAMAccountName;
baseDN = «CN=users,DC=testmail,DC=local»;
bindDN = «CN=user,CN=users,DC=testmail,DC=local»;
bindFields = (sAMAccountName, mail);
bindPassword = password;
canAuthenticate = YES;
displayName = «Public»;
hostname = «dcmail.testmail.local»; //Это windows контроллер
port = «389»;
filter = «mail = '*'»;
id = testmail.local;
isAddressBook = NO;
}
);
Ключевой момент если указать в качестве hostname нашу samba, то при попытке захождения outlook-ом samba висла наглухо.
Но может это баг только на моём сервере.
Указываем язык и временную зону
SOGoLanguage = Russian;
SOGoTimeZone = Europe/Moscow;
По желанию можно там же включить web interface, но у меня на нем уехала верстка во всех браузерах.
/* Web Interface */
SOGoPageTitle = SOGo;
SOGoVacationEnabled = YES;
SOGoForwardEnabled = YES;
SOGoSieveScriptsEnabled = YES;
SOGoMailAuxiliaryUserAccountsEnabled = YES;
SOGoTrustProxyAuthentication = NO;
Так же, если вы будете использовать web интерфейс, необходимо не забыть указать, какой ip адрес будет слушать sogo(по умолчанию 127.0.0.1)
WOPort = «0.0.0.0:20000»;
Запускаем sogo
service sogod start
Переходим к настройке web части
/etc/httpd/conf.d/rpcproxy.conf
Указываем параметр SetEnv SAMBA_HOST 127.0.0.1
Выдаем права на директорию /var/cache/ntlmauthhandler
chown -R apache:apache /var/cache/ntlmauthhandler
Желательно использование ssl. Устанавливаем mod_ssl и генерируем сертификат.
/etc/httpd/conf.d/SOGo.conf
При использовании ssl необходимо включить его в настройках sogo
RequestHeader set «x-webobjects-server-port» «443»
RequestHeader set «x-webobjects-server-name» «mail.testmail.local»
RequestHeader set «x-webobjects-server-url» «mail.testmail.local»
Запускаем apache
service httpd start
На этом установку можно считать законченной.
Для тех кому необходимы ящики создаем их командой
openchange_newuser --create user
Можно переходить к настройке outlook.
К сожалению autodiscover в данный момент корректно не отрабатывает корректно полностью и приходится задавать параметры руками.
В моем случае это выглядит так:
Сервер:mail.testmail.local
Имя пользователя: user
Переходим в меню «Другие настройки», раздел безопасность и ставим галочку напротив «Всегда запрашивать учетные данные для входа»
При подключении из вне указываем прокси-сервер.
Заключение
На домене с поддоменами openchange не заработал вообще, были выявлены странные баги, как-то описанный выше баг с sogo. Так же samba периодически падала, если пользователь есть в AD, но ящика у него нет. В данный момент падать перестала. Но самое неприятное, что при каких-то проблемах samba просто падает с сообщением PANIC, что затрудняет диагностику.
Разработчики этого продукта и не обещали интеграции в уже рабочую windows AD, поэтому вылезшие баги вполне могут относиться к тому, что мы делаем то, что не совсем предусмотрено разработчиками.
Но в данный момент у меня удалось стабильно запустить данный продукт для тестирования.
Я считаю, что оптимальной структурой для openchange на данном этапе развития продукта будет:
1) Установить отдельный контроллер samba4\windows AD
2) Вынесение на отдельный сервер dovecot+postfix с авторизацией по LDAP (в случае поломки openchange организация все равно останется с работающим почтовиком)
3)Тех, кому необходимы календари и адресные книги(а как показала практика они необходимы не всем) подключить по mapi к openchange.
4) Писать баг-репорты разработчикам для скорейшего доведения openchange до более стабильного состояния.