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

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


= Возможности =
== Возможности ==
* Общие почтовые папки, календари и адресные книги;
* Общие почтовые папки, календари и адресные книги;
* Веб-интерфейс, аналогичный Outlook Web Access;
* Веб-интерфейс, аналогичный Outlook Web Access;
Строка 19: Строка 19:
{{#ev:youtube|1hcBSB4Kxww}}
{{#ev:youtube|1hcBSB4Kxww}}


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


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


  apt-get install sogo
  apt-get install task-sogo


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


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


Предварительная подготовка к запуску службы согласно [[PostgreSQL]].
Предварительная подготовка к запуску службы согласно [[PostgreSQL]].
Строка 37: Строка 39:
service postgresql restart</source>
service postgresql restart</source>


== Samba DC ==
=== Samba DC ===


Пользователи расположены в домене Active Directory, расположенном на контроллере с [[SambaDC|Samba DC]].
Пользователи расположены в домене Active Directory, расположенном на контроллере с [[SambaDC|Samba DC]].
Строка 45: Строка 47:
Создаём в домене пользователя sogo с паролем Pa$$word:
Создаём в домене пользователя sogo с паролем Pa$$word:


  samba-tool user add sogo
  samba-tool user create sogo


(при запросе дважды ввести пароль).
(при запросе дважды ввести пароль).


== SOGo ==
samba-tool user setexpiry --noexpiry sogo
 
=== SOGo ===


Настраивается на домен {{path|test.alt}}.
Настраивается на домен {{path|test.alt}}.
Строка 81: Строка 85:
bindDN = "cn=sogo,cn=Users,DC=test,DC=alt";  
bindDN = "cn=sogo,cn=Users,DC=test,DC=alt";  
bindFields = (sAMAccountName); bindPassword = "Pa$$word";
bindFields = (sAMAccountName); bindPassword = "Pa$$word";
canAuthenticate = YES; displayName = "Public"; hostname = ldap://127.0.0.1:389;
canAuthenticate = YES; displayName = "Public"; hostname = ldaps://127.0.0.1:389;
id = public; isAddressBook = YES;})'
id = public; isAddressBook = YES;})'
mv -f /var/lib/sogo/GNUstep/Defaults/sogod.plist /var/lib/sogo/GNUstep/Defaults/.GNUstepDefaults
mv -f /var/lib/sogo/GNUstep/Defaults/sogod.plist /var/lib/sogo/GNUstep/Defaults/.GNUstepDefaults
Строка 134: Строка 138:
             <string>SambaLogin</string>
             <string>SambaLogin</string>
             <key>hostname</key>
             <key>hostname</key>
             <string>ldap://127.0.0.1</string>
             <string>ldaps://127.0.0.1</string>
             <key>id</key>
             <key>id</key>
             <string>sambaLogin</string>
             <string>sambaLogin</string>
Строка 160: Строка 164:
             <string>((NOT isCriticalSystemObject=&apos;TRUE&apos;) AND (mail=&apos;*&apos;) AND (NOT objectClass=contact))</string>
             <string>((NOT isCriticalSystemObject=&apos;TRUE&apos;) AND (mail=&apos;*&apos;) AND (NOT objectClass=contact))</string>
             <key>hostname</key>
             <key>hostname</key>
             <string>ldap://127.0.0.1</string>
             <string>ldaps://127.0.0.1</string>
             <key>id</key>
             <key>id</key>
             <string>sambaShared</string>
             <string>sambaShared</string>
Строка 190: Строка 194:
                 OR (((objectClass=group) AND (gidNumber&gt;=2000)) AND (NOT isCriticalSystemObject=&apos;TRUE&apos;) AND (NOT showInAdvancedViewOnly=&apos;TRUE&apos;)))</string>
                 OR (((objectClass=group) AND (gidNumber&gt;=2000)) AND (NOT isCriticalSystemObject=&apos;TRUE&apos;) AND (NOT showInAdvancedViewOnly=&apos;TRUE&apos;)))</string>
             <key>hostname</key>
             <key>hostname</key>
             <string>ldap://127.0.0.1</string>
             <string>ldaps://127.0.0.1</string>
             <key>id</key>
             <key>id</key>
             <string>sambaContacts</string>
             <string>sambaContacts</string>
Строка 233: Строка 237:
         IDFieldName = cn;
         IDFieldName = cn;
         UIDFieldName = sAMAccountName;
         UIDFieldName = sAMAccountName;
         hostname = "ldap://127.0.0.1";
         hostname = "ldaps://127.0.0.1";
         baseDN = "CN=Users,DC=test,DC=alt";
         baseDN = "CN=Users,DC=test,DC=alt";
         bindDN = "CN=sogo,CN=Users,DC=test,DC=alt";
         bindDN = "CN=sogo,CN=Users,DC=test,DC=alt";
Строка 248: Строка 252:
         IDFieldName = mail;
         IDFieldName = mail;
         UIDFieldName = mail;
         UIDFieldName = mail;
         hostname = "ldap://127.0.0.1";
         hostname = "ldaps://127.0.0.1";
         baseDN = "CN=Users,DC=test,DC=alt";
         baseDN = "CN=Users,DC=test,DC=alt";
         bindDN = "CN=sogo,CN=Users,DC=test,DC=alt";
         bindDN = "CN=sogo,CN=Users,DC=test,DC=alt";
Строка 263: Строка 267:
         IDFieldName = mail;
         IDFieldName = mail;
         UIDFieldName = mail;
         UIDFieldName = mail;
         hostname = "ldap://127.0.0.1";
         hostname = "ldaps://127.0.0.1";
         baseDN = "CN=Users,DC=test,DC=alt";
         baseDN = "CN=Users,DC=test,DC=alt";
         bindDN = "CN=sogo,CN=Users,DC=test,DC=alt";
         bindDN = "CN=sogo,CN=Users,DC=test,DC=alt";
Строка 275: Строка 279:
     }
     }
   );
   );
   SOGoSieveScriptsEnabled = YES;
   SOGoSieveScriptsEnabled = NO;
   SOGoLanguage = Russian;
   SOGoLanguage = Russian;
   SOGoTimeZone = Europe/Moscow;
   SOGoTimeZone = Europe/Moscow;
Строка 286: Строка 290:
3. Смотрим на предмет возможных ошибок файл журнала {{path|/var/log/sogo/sogo.log}}
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://www.openchange.org/cookbook/backends/sogo/webui.html
Подробнее: [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
  a2enmod proxy_http
  a2enmod proxy_http
a2enmod authn_core
a2enmod authn_file
a2enmod auth_basic
a2enmod authz_user
a2enmod env
a2enmod dav
  a2enmod headers
  a2enmod headers
  a2enmod rewrite
  a2enmod rewrite
a2enmod version
a2enmod setenvif
  a2ensite SOGo
  a2ensite SOGo
  service httpd2 restart
  service httpd2 restart
  service sogo restart
  service sogo restart


Войти по адресу:<br />
Войти по адресу:
<big><pre>http://адрес_сервера/SOGo/</pre></big>
 
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
 
== Отладка ==


= TODO =
Для вывода более подробных сообщений отладки необходимо добавить в файл {{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>


{{Todo|
Отладочные сообщения будут помещены в файл {{path|/var/log/sogo/sogo.log}}.
* Интеграция с Postfix
* Интеграция с Dovecot
* Проверка интеграции с Acitive Directory
* Упрощение настройки
* Модуль Alterator для управления
* Видеоурок}}


= Проблемы =
== Советы и секреты ==


== Заведение адресов в AD ==
=== Заведение адресов в AD ===
<source lang="bash">$ ldapmodify -D 'CN=Administrator,CN=Users,DC=test,DC=alt' -H 'ldap://127.0.0.1' -w 'Pa$$word'
<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
dn: CN=petrov,CN=Users,DC=test,DC=alt
Строка 320: Строка 394:
proxyAddresses: petrov@test.alt</source>
proxyAddresses: petrov@test.alt</source>


= Ссылки =
== Ссылки ==
* http://sogo.nu
* http://sogo.nu
* http://www.sogo.nu/files/docs/SOGo%20Installation%20Guide.pdf
* http://www.sogo.nu/files/docs/SOGo%20Installation%20Guide.pdf
* https://wiki.archlinux.org/index.php/OpenChange_server
* https://wiki.archlinux.org/index.php/OpenChange_server
* http://www.openchange.org/cookbook/backends/sogo/dovecot.html
* [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/
* http://habrahabr.ru/post/227893/
* [https://lists.inverse.ca/sogo/arc/users/2015-07/msg00132.html Почему используют SOGo] (англ.)
* [https://lists.inverse.ca/sogo/arc/users/2015-07/msg00132.html Почему используют SOGo] (англ.)
Строка 330: Строка 404:


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

Версия от 14:48, 20 июня 2022

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 и нестабильном репозитории 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.

Предварительное создание домена согласно SambaDC.

Создаём в домене пользователя 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;
}

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

Ссылки