Установка и настройка openchange под CentOS 6.5

    В рунете да и в целом в интернете мало рассказывается о таком интересном продукте, как 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 до более стабильного состояния.
    • +15
    • 20,8k
    • 9
    Поделиться публикацией

    Комментарии 9

      0
      Не нужно.

      Если уж юзаете аутлук, то поставьте эксчендж.
      Если хочется опенсурса — то Dovecot/Postfix/CalDav/etc + Thunderbird или вообще Zimbra (хотя там за полноценную версию нужно платить).

      Это как попытки сделать из Samba полноценный контроллер домена, уже сколько лет продолжаются, а всё как-то вкривь да вкось.
        +2
        Ну это уже зависит от потребностей, у меня samba4 как active directory domain controller замечательно работает.
          0
          Я развернул SOGo на debian'е относительно недавно, вроде неплохо получилось на тестовом сервере,
          но, пока так и не понял, как в нём развернуть несколько отдельных независимых почтовых доменов aaa.com, bbb.org ccc.net с тем, чтобы выдать админство на свой домен одному/двум пользователям чтобы они друг другу не мешали.
          каждый почтовый домен прописывать отдельно руками в конфиге — это достаточно проблематично, тот же postfixadmin всё держит в базе… Вот бы такой аналог для SOGo.
          +2
          Слышал ранее про openchange, хотел установить потестировать, но после прочтения как-то не хочется уже…
          Есть удобная Zimbra Open Source и привычный шустрый exim+dovecot, ИМХО проще календарь прикрутить к последней.
            0
            Если у вас контроллер уже на samba4, то попробуйте. Должно работать стабильней, чем при контроллере на windows.
            Я кстати не нашёл удобных календарей отдельно для outlook, без установки дополнительных коннекторов на него. Если подскажете, то буду благодарен.
            0
            samba-tool fsmo seize --role=schema

            Тут правильнее использовать transfer вместо seize, т.к. seize это принудительный захват схемы и возможна ситуация, когда бывший владелец схемы будет считать себя таковым после seize.
            Применяется seize только при потери владельца роли и/или невозможности сделать transfer.
              0
              Спасибо за поправку!
              0
              Возможно ли поднять openchange без samba-контроллера, только с виндовым контроллером?
              Кто-нибудь пробовал настраивать с учетными записями на кириллице? В Zentyal 3.5 Outlook не коннектится к ящику, если учетка юзера на кириллице (не логин, а именно имя, фамилия и фулнейм).
                0
                Насколько я понял, то совсем без samba нельзя. Она предоставляет mapi протокол, тот самый, ради которого всё и затевалось. Но, я не пробовал просто ввести самбу в домен, не контроллером. Есть вариант, что так тоже заработает.

              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

              Самое читаемое