SOGo: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
 
(не показана 71 промежуточная версия 11 участников)
Строка 7: Строка 7:
* Лицензия: GPLv2 и LGPLv2
* Лицензия: GPLv2 и LGPLv2


= Возможности =
== Возможности ==
* Общие почтовые папки, календари и адресные книги;
* Общие почтовые папки, календари и адресные книги;
* Веб-интерфейс, аналогичный Outlook Web Access;
* Веб-интерфейс, аналогичный Outlook Web Access;
Строка 17: Строка 17:


{{Attention|Не поддерживается MAPI over HTTPS}}
{{Attention|Не поддерживается MAPI over HTTPS}}
{{#ev:youtube|1hcBSB4Kxww}}


= Установка =
== Установка ==


{{Todo|Пока сборка доступна из задания 153515: <source lang="Bash">apt-repo add task 153515</source>}}
Для установки стабильной версии SOGo (доступна в [[branches|стабильных ветках]] p9/p10/p11 и нестабильном репозитории [[Sisyphus]]) выполните:


apt-get install task-sogo
apt-get install task-sogo
 
(драйвер к PostgreSQL будет установлен автоматически)
 
== Подготовка среды ==
 
=== PostgreSQL ===
 
Предварительная подготовка к запуску службы согласно [[PostgreSQL]].
 
Создаём пользователя {{term|sogo}} и базу данных {{term|sogo}} ([[root|под правами root]]):
<source lang="Bash">su - postgres -s /bin/sh -c 'createuser --no-superuser --no-createdb --no-createrole sogo'
su - postgres -s /bin/sh -c 'createdb -O sogo sogo'
service postgresql restart</source>
 
=== Samba DC ===
Пользователи доменные — из Active Directory на контроллере Samba DC (см. [[SambaDC|предварительное создание домена]]).
 
Создадим в домене пользователя sogo с паролем Pa$$word (при запросе ввести его дважды):
samba-tool user create sogo
Отключим срок действия пароля:
samba-tool user setexpiry --noexpiry sogo
 
=== SOGo ===
 
Настраивается на домен {{path|test.alt}}.
 
<!--
<source lang="Bash">service sogo stop
su - _sogo -s /bin/bash
defaults write sogod SOGoProfileURL "postgresql://sogo@/sogo/sogo_user_profile"
defaults write sogod OCSFolderInfoURL "postgresql://sogo@/sogo/sogo_folder_info"
defaults write sogod OCSSessionsFolderURL "postgresql://sogo@/sogo/sogo_sessions_folder"
defaults write sogod SOGoEnableEMailAlarms YES
defaults write sogod OCSEMailAlarmsFolderURL "postgresql://sogo@/sogo/sogo_alarms_folder"
defaults write sogod SOGoDraftsFolderName Drafts
defaults write sogod SOGoDraftsFolderName Trash
defaults write sogod SOGoSentFolderName Sent
defaults write sogod SOGoTrashFolderName Trash
defaults write sogod SOGoIMAPServer imaps://localhost:993
#defaults write sogod SOGoSMTPServer 127.0.0.1
#defaults write sogod SOGoMailDomain test.alt
defaults write sogod SOGoMailingMechanism sendmail
defaults write sogod SOGoForceExternalLoginWithEmail NO
defaults write sogod SOGoMailSpoolPath /var/spool/sogo
defaults write sogod NGImap4ConnectionStringSeparator "/"
defaults write sogod SOGoSieveScriptsEnabled YES
defaults write sogod SOGoTimeZone "$(date +%Z)"
defaults write sogod SOGoFirstDayOfWeek 1
defaults write sogod SOGoSuperUsernames sogo
defaults write sogod SOGoLanguage Russian
defaults write sogod SOGoUserSources '({type = ldap; CNFieldName = cn; IDFieldName = cn;
UIDFieldName = sAMAccountName; baseDN = "cn=Users,dc=test,dc=alt";
bindDN = "cn=sogo,cn=Users,DC=test,DC=alt";
bindFields = (sAMAccountName); bindPassword = "Pa$$word";
canAuthenticate = YES; displayName = "Public"; hostname = ldaps://127.0.0.1:389;
id = public; isAddressBook = YES;})'
mv -f /var/lib/sogo/GNUstep/Defaults/sogod.plist /var/lib/sogo/GNUstep/Defaults/.GNUstepDefaults
exit
service sogo start</source>
 
{{Attention|Служба {{cmd|sogo}} во время настройки должна быть выключена}}
 
'''Файл {{path|/var/lib/sogo/GNUstep/Defaults/.GNUstepDefaults}}'''
<source lang="xml"><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//GNUstep//DTD plist 0.9//EN" "http://www.gnustep.org/plist-0_9.xml">
<plist version="0.9">
<dict>
    <key>OCSFolderInfoURL</key>
    <string>postgresql://sogo@/sogo/sogo_folder_info</string>
    <key>OCSSessionsFolderURL</key>
    <string>postgresql://sogo@/sogo/sogo_sessions_folder</string>
    <key>SOGoFirstDayOfWeek</key>
    <string>1</string>
    <key>SOGoProfileURL</key>
    <string>postgresql://sogo@/sogo/sogo_user_profile</string>
    <key>SOGoSieveScriptsEnabled</key>
    <string>YES</string>
    <key>SOGoTimeZone</key>
    <string>MSK</string>
    <key>OCSEMailAlarmsFolderURL</key>
    <string>postgresql://sogo@/sogo/sogo_alarms_folder</string>
    <key>SOGoEnableEMailAlarms</key>
    <string>YES</string>
    <key>SOGoUserSources</key>
    <array>
        <dict>
            <key>CNFieldName</key>
            <string>cn</string>
            <key>IDFieldName</key>
            <string>cn</string>
            <key>UIDFieldName</key>
            <string>sAMAccountName</string>
            <key>baseDN</key>
            <string>CN=Users,DC=test,DC=alt</string>
            <key>bindDN</key>
            <string>CN=sogo,CN=Users,DC=test,DC=alt</string>
            <key>bindFields</key>
            <array>
                <string>sAMAccountName</string>
            </array>
            <key>bindPassword</key>
            <string>Pa$$word</string>
            <key>canAuthenticate</key>
            <string>YES</string>
            <key>displayName</key>
            <string>SambaLogin</string>
            <key>hostname</key>
            <string>ldaps://127.0.0.1</string>
            <key>id</key>
            <string>sambaLogin</string>
            <key>type</key>
            <string>ldap</string>
        </dict>
        <dict>
            <key>CNFieldName</key>
            <string>cn</string>
            <key>IDFieldName</key>
            <string>mail</string>
            <key>UIDFieldName</key>
            <string>mail</string>
            <key>baseDN</key>
            <string>DC=test,DC=alt</string>
            <key>bindDN</key>
            <string>CN=sogo,CN=Users,DC=test,DC=alt</string>
            <key>bindPassword</key>
            <string>Pa$$word</string>
            <key>canAuthenticate</key>
            <string>NO</string>
            <key>displayName</key>
            <string>Shared Addressbook</string>
            <key>filter</key>
            <string>((NOT isCriticalSystemObject=&apos;TRUE&apos;) AND (mail=&apos;*&apos;) AND (NOT objectClass=contact))</string>
            <key>hostname</key>
            <string>ldaps://127.0.0.1</string>
            <key>id</key>
            <string>sambaShared</string>
            <key>isAddressBook</key>
            <string>YES</string>
            <key>type</key>
            <string>ldap</string>
        </dict>
        <dict>
            <key>CNFieldName</key>
            <string>cn</string>
            <key>IDFieldName</key>
            <string>mail</string>
            <key>UIDFieldName</key>
            <string>mail</string>
            <key>baseDN</key>
            <string>DC=test,DC=alt</string>
            <key>bindDN</key>
            <string>CN=sogo,CN=Users,DC=test,DC=alt</string>
            <key>bindPassword</key>
            <string>Pa$$word</string>
            <key>canAuthenticate</key>
            <string>NO</string>
            <key>displayName</key>
            <string>Shared Contacts</string>
            <key>filter</key>
            <string>((((objectClass=person) AND (objectClass=contact) AND ((uidNumber&gt;=2000) OR (mail=&apos;*&apos;)))
                AND (NOT isCriticalSystemObject=&apos;TRUE&apos;) AND (NOT showInAdvancedViewOnly=&apos;TRUE&apos;) AND (NOT uid=Guest))
                OR (((objectClass=group) AND (gidNumber&gt;=2000)) AND (NOT isCriticalSystemObject=&apos;TRUE&apos;) AND (NOT showInAdvancedViewOnly=&apos;TRUE&apos;)))</string>
            <key>hostname</key>
            <string>ldaps://127.0.0.1</string>
            <key>id</key>
            <string>sambaContacts</string>
            <key>isAddressBook</key>
            <string>YES</string>
            <key>mapping</key>
            <dict>
                <key>displayname</key>
                <array>
                    <string>cn</string>
                </array>
            </dict>
            <key>type</key>
            <string>ldap</string>
        </dict>
    </array>
</dict>
</plist></source>
-->
 
1. Заполняем файл конфигурации {{path|/etc/sogo/sogo.conf}}:
<source lang="C">{
  SOGoProfileURL = "postgresql://sogo@/sogo/sogo_user_profile";
  OCSFolderInfoURL = "postgresql://sogo@/sogo/sogo_folder_info";
  OCSSessionsFolderURL = "postgresql://sogo@/sogo/sogo_sessions_folder";
  OCSEMailAlarmsFolderURL = "postgresql://sogo@/sogo/sogo_alarms_folder";
  SOGoEnableEMailAlarms = YES;
  SOGoDraftsFolderName = Drafts;
  SOGoSentFolderName = Sent;
  SOGoTrashFolderName = Trash;
  SOGoIMAPServer = "imaps://localhost:993";
  SOGoMailingMechanism = sendmail;
  SOGoForceExternalLoginWithEmail = NO;
  NGImap4ConnectionStringSeparator = "/";
  SOGoUserSources =  (
    {
        id = sambaLogin;
        displayName = "SambaLogin";
        canAuthenticate = YES;
        type = ldap;
        CNFieldName = cn;
        IDFieldName = cn;
        UIDFieldName = sAMAccountName;
        hostname = "ldaps://127.0.0.1";
        baseDN = "CN=Users,DC=test,DC=alt";
        bindDN = "CN=sogo,CN=Users,DC=test,DC=alt";
        bindPassword = "Pa$$word";
        bindFields = (sAMAccountName);
    },
    {
        id = sambaShared;
        displayName = "Shared Addressbook";
        canAuthenticate = NO;
        isAddressBook = YES;
        type = ldap;
        CNFieldName = cn;
        IDFieldName = mail;
        UIDFieldName = mail;
        hostname = "ldaps://127.0.0.1";
        baseDN = "CN=Users,DC=test,DC=alt";
        bindDN = "CN=sogo,CN=Users,DC=test,DC=alt";
        bindPassword = "Pa$$word";
        filter = "((NOT isCriticalSystemObject='TRUE') AND (mail='*') AND (NOT objectClass=contact))";
    },
    {
        id = sambaContacts;
        displayName = "Shared Contacts";
        canAuthenticate = NO;
        isAddressBook = YES;
        type = ldap;
        CNFieldName = cn;
        IDFieldName = mail;
        UIDFieldName = mail;
        hostname = "ldaps://127.0.0.1";
        baseDN = "CN=Users,DC=test,DC=alt";
        bindDN = "CN=sogo,CN=Users,DC=test,DC=alt";
        bindPassword = "Pa$$word";
        filter = "((((objectClass=person) AND (objectClass=contact) AND ((uidNumber>=2000) OR (mail='*')))
                AND (NOT isCriticalSystemObject='TRUE') AND (NOT showInAdvancedViewOnly='TRUE') AND (NOT uid=Guest))
                OR (((objectClass=group) AND (gidNumber>=2000)) AND (NOT isCriticalSystemObject='TRUE') AND (NOT showInAdvancedViewOnly='TRUE')))";
        mapping = {
            displayname = ("cn");
        };
    }
  );
  SOGoSieveScriptsEnabled = NO;
  SOGoLanguage = Russian;
  SOGoTimeZone = Europe/Moscow;
  SOGoFirstDayOfWeek = 1;
}</source>
 
{{Note|Проверить целостность конфигурационного файла можно командой: <syntaxhighlight lang="text"># plparse /etc/sogo/sogo.conf
Parsing '/etc/sogo/sogo.conf' - a dictionary</syntaxhighlight>}}
 
2. Делаем необходимые службы по умолчанию и перезапускаем их:
for s in samba postgresql memcached sogo httpd2;do chkconfig $s on;service $s restart;done
 
3. Смотрим на предмет возможных ошибок файл журнала {{path|/var/log/sogo/sogo.log}}
 
{{Note|Для SOGo версии {{pkg|5.0.0-alt1}} необходимо отключить одноранговую проверку для localhost, добавив
<source lang="text">tlsVerifyMode=allowInsecureLocalhost</source> к URL-адресу службы IMAP, в файле конфигурации {{path|/etc/sogo/sogo.conf}}:
<source lang="text">SOGoIMAPServer = "imaps://localhost:993/?tlsVerifyMode=allowInsecureLocalhost";</source>}}
 
== Включение веб-интерфейса ==
 
Подробнее: [http://web.archive.org/web/20161025231509/http://openchange.org/cookbook/backends/sogo/webui.html http://www.openchange.org/cookbook/backends/sogo/webui.html]
 
a2enmod proxy
a2enmod proxy_http
a2enmod authn_core
a2enmod authn_file
a2enmod auth_basic
a2enmod authz_user
a2enmod env
a2enmod dav
a2enmod headers
a2enmod rewrite
a2enmod version
a2enmod setenvif
a2ensite SOGo
service httpd2 restart
service sogo restart
 
Войти по адресу:
 
https://адрес_сервера/SOGo/
 
== Настройка электронной почты ==
 
Для использования электронной почты в SOGo необходимо настроить аутентификацию в Active Directory для Postfix и Dovecot. Подробнее это описано в разделе [[ActiveDirectory/PostfixDovecot]]
 
== Проблемы ==
 
* Для правильной работы SOGo на устройствах должна быть обновленная текущая база часовых поясов. Особенно это касается устройств под управлением iOS и macOS.
 
* Если при входе в веб-интерфейс возникает ошибка "Неправильный логин или пароль" (хотя учетные данные верны) и в логах {{path|/var/log/sogo/sogo.log}} есть ошибки наподобие этих:
 
<syntaxhighlight lang="dmesg">Feb 03 14:39:18 sogod [17543]: [ERROR] <0x0x55d2461cafe0[LDAPSource]> Could not bind to the LDAP server ldaps://127.0.0.1 (389) using the bind DN: CN=sogo,CN=Users,DC=test,DC=alt
Feb 03 14:39:18 sogod [17543]: [ERROR] <0x0x55d2461cafe0[LDAPSource]> <NSException: 0x55d2463f43b0> NAME:LDAPException REASON:operation bind failed: Can't contact LDAP server  (0xFFFFFFFF) INFO:{"error_code" = "-1"; login = "CN=sogo,CN=Users,DC=test,DC=alt"; }</syntaxhighlight>
 
Добавьте опцию "'''TLS_REQCERT allow'''" в {{path|/etc/openldap/ldap.conf}}.
 
Перестартуйте службы:
# systemctl restart samba sogo
 
== Отладка ==
 
Для вывода более подробных сообщений отладки необходимо добавить в файл {{path|/etc/sogo/sogo.conf}} параметры:
<source lang="objc">
  GCSFolderDebugEnabled = YES;
  GCSFolderStoreDebugEnabled = YES;
  LDAPDebugEnabled = YES;
  MySQL4DebugEnabled = YES;
  NGImap4DisableIMAP4Pooling = YES;
  ImapDebugEnabled = YES;
  OCSFolderManagerSQLDebugEnabled = YES;
  PGDebugEnabled = YES;
  SOGoDebugRequests = YES;
  SOGoMailKeepDraftsAfterSend = YES;
  SOGoUIxDebugEnabled = YES;
  SoDebugObjectTraversal = YES;
  SoSecurityManagerDebugEnabled = YES;
  WODontZipResponse = YES;
  WODebugZipResponse = YES;
  SoClassRegistryDebugEnabled  = YES;
  SoDebugKeyLookup  = YES;
  SoDebugProductLoading  = YES;
  SoDebugProductRegistry  = YES;
  SoDebugRequestClassification  = YES;
  SoDebugTraversal  = YES;
  SoLogSecurityDeclarations  = YES;
  SoOFSDebugAuthLookup  = YES;
  SoOFSDebugFactory  = YES;
  SoOFSDebugNegotiate  = YES;
  SoOFSDebugPlistObject  = YES;
  SoOFSDebugRestore  = YES;
  SoOFSResourceManagerDebugEnabled  = YES;
  SoOFSWebMethodDebugEnabled  = YES;
  SoObjCClassDebugEnabled  = YES;
  SoObjectDataSourceDebugEnabled  = YES;
  SoObjectMethodDispatcherDebugEnabled  = YES;
  SoObjectRequestHandlerDebugEnabled  = YES;
  SoObjectSOAPDispatcherDebugEnabled  = YES;
  SoPageInvocationDebugEnabled  = YES;
  SoProductResourceManagerDebugEnabled  = YES;
  SoRedirectToDefaultMethods  = YES;
  SoRendererDebugEnabled  = YES;
  SoSecurityManagerDebugEnabled  = YES;
  WOIsRedirectionEnabled  = YES;
  SOGoEASDebugEnabled = YES;
</source>
 
Отладочные сообщения будут помещены в файл {{path|/var/log/sogo/sogo.log}}.
 
== Советы и секреты ==
 
=== Заведение адресов в AD ===
<source lang="bash">$ ldapmodify -D 'CN=Administrator,CN=Users,DC=test,DC=alt' -H 'ldap://127.0.0.1' -w 'Pa$$word'
dn: CN=petrov,CN=Users,DC=test,DC=alt
changetype: modify
add: proxyAddresses
proxyAddresses: petrov@test.alt</source>
 
== Ссылки ==
* http://sogo.nu
* https://www.sogo.nu/files/docs/SOGoInstallationGuide.pdf
* https://wiki.archlinux.org/index.php/OpenChange_server
* [https://web.archive.org/web/20161025184734/http://www.openchange.org/cookbook/backends/sogo/dovecot.html http://www.openchange.org/cookbook/backends/sogo/dovecot.html]
* http://habrahabr.ru/post/227893/
* [https://lists.inverse.ca/sogo/arc/users/2015-07/msg00132.html Почему используют SOGo] (англ.)




[[Категория:Groupware]]
[[Категория:Groupware]]
[[Категория:Корпоративная инфраструктура]]
[[Категория:HOWTO]]
[[Категория:HOWTO]]
[[Категория:Миграция]]
{{Category navigation|title=Корпоративная инфраструктура|category=Корпоративная инфраструктура|sortkey={{SUBPAGENAME}}}}

Текущая версия от 12:33, 2 сентября 2024

Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.
Sogo.logo.png

Сервер групповой работы, аналогичный Microsoft Exchange, с веб-интерфейсом и доступом по MAPI для Microsoft Outlook

Возможности

  • Общие почтовые папки, календари и адресные книги;
  • Веб-интерфейс, аналогичный Outlook Web Access;
  • Поддержка протоколов CalDAV, CardDAV, GroupDAV, Microsoft ActiveSync, IMAP и SMTP;
  • Доступ по MAPI для Microsoft Outlook, не требующий внешних модулей;
  • Делегирование, уведомления, резервирование, поддержка категорий и почтовых фильтров;
  • Поддержка нескольких почтовых ящиков в веб-интерфейсе;
  • Single sign-on с помощью CAS, WebAuth или Kerberos.
Внимание! Не поддерживается MAPI over HTTPS

{{#ev:youtube|1hcBSB4Kxww}}

Установка

Для установки стабильной версии SOGo (доступна в стабильных ветках p9/p10/p11 и нестабильном репозитории Sisyphus) выполните:

apt-get install task-sogo

(драйвер к PostgreSQL будет установлен автоматически)

Подготовка среды

PostgreSQL

Предварительная подготовка к запуску службы согласно PostgreSQL.

Создаём пользователя sogo и базу данных sogo (под правами root):

su - postgres -s /bin/sh -c 'createuser --no-superuser --no-createdb --no-createrole sogo'
su - postgres -s /bin/sh -c 'createdb -O sogo sogo'
service postgresql restart

Samba DC

Пользователи доменные — из Active Directory на контроллере Samba DC (см. предварительное создание домена).

Создадим в домене пользователя sogo с паролем Pa$$word (при запросе ввести его дважды):

samba-tool user create sogo

Отключим срок действия пароля:

samba-tool user setexpiry --noexpiry sogo

SOGo

Настраивается на домен test.alt.


1. Заполняем файл конфигурации /etc/sogo/sogo.conf:

{
  SOGoProfileURL = "postgresql://sogo@/sogo/sogo_user_profile";
  OCSFolderInfoURL = "postgresql://sogo@/sogo/sogo_folder_info";
  OCSSessionsFolderURL = "postgresql://sogo@/sogo/sogo_sessions_folder";
  OCSEMailAlarmsFolderURL = "postgresql://sogo@/sogo/sogo_alarms_folder";
  SOGoEnableEMailAlarms = YES;
  SOGoDraftsFolderName = Drafts;
  SOGoSentFolderName = Sent;
  SOGoTrashFolderName = Trash;
  SOGoIMAPServer = "imaps://localhost:993";
  SOGoMailingMechanism = sendmail;
  SOGoForceExternalLoginWithEmail = NO;
  NGImap4ConnectionStringSeparator = "/";
  SOGoUserSources =  (
    {
        id = sambaLogin;
        displayName = "SambaLogin";
        canAuthenticate = YES;
        type = ldap;
        CNFieldName = cn;
        IDFieldName = cn;
        UIDFieldName = sAMAccountName;
        hostname = "ldaps://127.0.0.1";
        baseDN = "CN=Users,DC=test,DC=alt";
        bindDN = "CN=sogo,CN=Users,DC=test,DC=alt";
        bindPassword = "Pa$$word";
        bindFields = (sAMAccountName);
    },
    {
        id = sambaShared;
        displayName = "Shared Addressbook";
        canAuthenticate = NO;
        isAddressBook = YES;
        type = ldap;
        CNFieldName = cn;
        IDFieldName = mail;
        UIDFieldName = mail;
        hostname = "ldaps://127.0.0.1";
        baseDN = "CN=Users,DC=test,DC=alt";
        bindDN = "CN=sogo,CN=Users,DC=test,DC=alt";
        bindPassword = "Pa$$word";
        filter = "((NOT isCriticalSystemObject='TRUE') AND (mail='*') AND (NOT objectClass=contact))";
    },
    {
        id = sambaContacts;
        displayName = "Shared Contacts";
        canAuthenticate = NO;
        isAddressBook = YES;
        type = ldap;
        CNFieldName = cn;
        IDFieldName = mail;
        UIDFieldName = mail;
        hostname = "ldaps://127.0.0.1";
        baseDN = "CN=Users,DC=test,DC=alt";
        bindDN = "CN=sogo,CN=Users,DC=test,DC=alt";
        bindPassword = "Pa$$word";
        filter = "((((objectClass=person) AND (objectClass=contact) AND ((uidNumber>=2000) OR (mail='*')))
                 AND (NOT isCriticalSystemObject='TRUE') AND (NOT showInAdvancedViewOnly='TRUE') AND (NOT uid=Guest))
                 OR (((objectClass=group) AND (gidNumber>=2000)) AND (NOT isCriticalSystemObject='TRUE') AND (NOT showInAdvancedViewOnly='TRUE')))";
        mapping = {
            displayname = ("cn");
        };
    }
  );
  SOGoSieveScriptsEnabled = NO;
  SOGoLanguage = Russian;
  SOGoTimeZone = Europe/Moscow;
  SOGoFirstDayOfWeek = 1;
}
Примечание: Проверить целостность конфигурационного файла можно командой:
# plparse /etc/sogo/sogo.conf
Parsing '/etc/sogo/sogo.conf' - a dictionary


2. Делаем необходимые службы по умолчанию и перезапускаем их:

for s in samba postgresql memcached sogo httpd2;do chkconfig $s on;service $s restart;done

3. Смотрим на предмет возможных ошибок файл журнала /var/log/sogo/sogo.log

Примечание: Для SOGo версии 5.0.0-alt1 необходимо отключить одноранговую проверку для localhost, добавив
tlsVerifyMode=allowInsecureLocalhost
к URL-адресу службы IMAP, в файле конфигурации /etc/sogo/sogo.conf:
SOGoIMAPServer = "imaps://localhost:993/?tlsVerifyMode=allowInsecureLocalhost";


Включение веб-интерфейса

Подробнее: http://www.openchange.org/cookbook/backends/sogo/webui.html

a2enmod proxy
a2enmod proxy_http
a2enmod authn_core
a2enmod authn_file
a2enmod auth_basic
a2enmod authz_user
a2enmod env
a2enmod dav
a2enmod headers
a2enmod rewrite
a2enmod version
a2enmod setenvif
a2ensite SOGo
service httpd2 restart
service sogo restart

Войти по адресу:

https://адрес_сервера/SOGo/

Настройка электронной почты

Для использования электронной почты в SOGo необходимо настроить аутентификацию в Active Directory для Postfix и Dovecot. Подробнее это описано в разделе ActiveDirectory/PostfixDovecot

Проблемы

  • Для правильной работы SOGo на устройствах должна быть обновленная текущая база часовых поясов. Особенно это касается устройств под управлением iOS и macOS.
  • Если при входе в веб-интерфейс возникает ошибка "Неправильный логин или пароль" (хотя учетные данные верны) и в логах /var/log/sogo/sogo.log есть ошибки наподобие этих:
Feb 03 14:39:18 sogod [17543]: [ERROR] <0x0x55d2461cafe0[LDAPSource]> Could not bind to the LDAP server ldaps://127.0.0.1 (389) using the bind DN: CN=sogo,CN=Users,DC=test,DC=alt
Feb 03 14:39:18 sogod [17543]: [ERROR] <0x0x55d2461cafe0[LDAPSource]> <NSException: 0x55d2463f43b0> NAME:LDAPException REASON:operation bind failed: Can't contact LDAP server  (0xFFFFFFFF) INFO:{"error_code" = "-1"; login = "CN=sogo,CN=Users,DC=test,DC=alt"; }

Добавьте опцию "TLS_REQCERT allow" в /etc/openldap/ldap.conf.

Перестартуйте службы:

# systemctl restart samba sogo

Отладка

Для вывода более подробных сообщений отладки необходимо добавить в файл /etc/sogo/sogo.conf параметры:

  GCSFolderDebugEnabled = YES;
  GCSFolderStoreDebugEnabled = YES;
  LDAPDebugEnabled = YES;
  MySQL4DebugEnabled = YES;
  NGImap4DisableIMAP4Pooling = YES;
  ImapDebugEnabled = YES;
  OCSFolderManagerSQLDebugEnabled = YES;
  PGDebugEnabled = YES;
  SOGoDebugRequests = YES;
  SOGoMailKeepDraftsAfterSend = YES;
  SOGoUIxDebugEnabled = YES;
  SoDebugObjectTraversal = YES;
  SoSecurityManagerDebugEnabled = YES;
  WODontZipResponse = YES;
  WODebugZipResponse = YES;
  SoClassRegistryDebugEnabled  = YES;
  SoDebugKeyLookup  = YES;
  SoDebugProductLoading  = YES;
  SoDebugProductRegistry  = YES;
  SoDebugRequestClassification  = YES;
  SoDebugTraversal  = YES;
  SoLogSecurityDeclarations  = YES;
  SoOFSDebugAuthLookup  = YES;
  SoOFSDebugFactory  = YES;
  SoOFSDebugNegotiate  = YES;
  SoOFSDebugPlistObject  = YES;
  SoOFSDebugRestore  = YES;
  SoOFSResourceManagerDebugEnabled  = YES;
  SoOFSWebMethodDebugEnabled  = YES;
  SoObjCClassDebugEnabled  = YES;
  SoObjectDataSourceDebugEnabled  = YES;
  SoObjectMethodDispatcherDebugEnabled  = YES;
  SoObjectRequestHandlerDebugEnabled  = YES;
  SoObjectSOAPDispatcherDebugEnabled  = YES;
  SoPageInvocationDebugEnabled  = YES;
  SoProductResourceManagerDebugEnabled  = YES;
  SoRedirectToDefaultMethods  = YES;
  SoRendererDebugEnabled  = YES;
  SoSecurityManagerDebugEnabled  = YES;
  WOIsRedirectionEnabled  = YES;
  SOGoEASDebugEnabled = YES;

Отладочные сообщения будут помещены в файл /var/log/sogo/sogo.log.

Советы и секреты

Заведение адресов в AD

$ ldapmodify -D 'CN=Administrator,CN=Users,DC=test,DC=alt' -H 'ldap://127.0.0.1' -w 'Pa$$word'
dn: CN=petrov,CN=Users,DC=test,DC=alt
changetype: modify
add: proxyAddresses
proxyAddresses: petrov@test.alt

Ссылки