У рунеті та й загалом в інтернеті мало розповідається про такий цікавий продукт, як 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
Про всяк випадок поясню, що означає ця команда
- це режим дебагу. Цифра 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
Перейти до налаштування веб-частини
/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 до більш стабільного стану.