SOGo

Материал из ALT Linux Wiki

(Различия между версиями)
Перейти к: навигация, поиск
(SOGo)
м (Установка: в репах теперь одна версия, а sope-gdl1-postgresql добавлен в зависимости.)
 
(20 промежуточных версий не показаны.)
Строка 21: Строка 21:
= Установка =
= Установка =
-
{{Todo|Пока сборка доступна из задания 155169: <source lang="Bash">apt-repo add task 155169 && apt-get update</source>}}
+
Для установки стабильной версии SOGo (доступна в ветке обновлений p8 и нестабильном репозитории Sisyphus) выполните
-
  apt-get install sogo
+
  apt-get install task-sogo
 +
 
 +
(драйвер к PostgreSQL будет установлен автоматически)
= Подготовка среды =
= Подготовка среды =
Строка 53: Строка 55:
Настраивается на домен {{path|test.alt}}.
Настраивается на домен {{path|test.alt}}.
 +
<!--
<source lang="Bash">service sogo stop
<source lang="Bash">service sogo stop
su - _sogo -s /bin/bash
su - _sogo -s /bin/bash
Строка 80: Строка 83:
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
Строка 88: Строка 91:
{{Attention|Служба {{cmd|sogo}} во время настройки должна быть выключена}}
{{Attention|Служба {{cmd|sogo}} во время настройки должна быть выключена}}
-
{{path|~_sogo/GNUstep/Defaults/.GNUstepDefaults}}
+
'''Файл {{path|/var/lib/sogo/GNUstep/Defaults/.GNUstepDefaults}}'''
<source lang="xml"><?xml version="1.0" encoding="UTF-8"?>
<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">
<!DOCTYPE plist PUBLIC "-//GNUstep//DTD plist 0.9//EN" "http://www.gnustep.org/plist-0_9.xml">
Строка 105: Строка 108:
     <key>SOGoTimeZone</key>
     <key>SOGoTimeZone</key>
     <string>MSK</string>
     <string>MSK</string>
 +
    <key>OCSEMailAlarmsFolderURL</key>
 +
    <string>postgresql://sogo@/sogo/sogo_alarms_folder</string>
 +
    <key>SOGoEnableEMailAlarms</key>
 +
    <string>YES</string>
     <key>SOGoUserSources</key>
     <key>SOGoUserSources</key>
     <array>
     <array>
Строка 129: Строка 136:
             <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>
Строка 155: Строка 162:
             <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>
Строка 185: Строка 192:
                 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>
Строка 203: Строка 210:
</dict>
</dict>
</plist></source>
</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>
 +
 +
2. Делаем необходимые службы по умолчанию и перезапускаем их:
 +
for s in samba postgresql memcached sogo httpd2;do chkconfig $s on;service $s restart;done
 +
 +
3. Смотрим на предмет возможных ошибок файл журнала {{path|/var/log/sogo/sogo.log}}
= Включение веб-интерфейса =
= Включение веб-интерфейса =
Строка 210: Строка 294:
  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
Строка 222: Строка 312:
{{Todo|
{{Todo|
 +
* Интеграция с sssd
* Интеграция с Postfix
* Интеграция с Postfix
* Интеграция с Dovecot
* Интеграция с Dovecot
Строка 230: Строка 321:
= Проблемы =
= Проблемы =
 +
 +
== Заведение адресов в 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>
 +
 +
 +
Для правильной работы SOGo на устройствах должна быть обновленная текущая база таймзон.
 +
Особенно это касается устройств под управлением iOS и OSX.
= Ссылки =
= Ссылки =
Строка 237: Строка 339:
* 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] (англ.)
 +
[[Категория:Groupware]]
[[Категория:Groupware]]
-
{{Category navigation|title=HOWTO|category=HOWTO|sortkey={{SUBPAGENAME}}}}
+
[[Категория:Корпоративная инфраструктура]]
 +
[[Категория:HOWTO]]
 +
[[Категория:Миграция]]
 +
{{Category navigation|title=Корпоративная инфраструктура|category=Корпоративная инфраструктура|sortkey={{SUBPAGENAME}}}}

Текущая версия на 10:23, 5 мая 2017

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


Установка

Для установки стабильной версии SOGo (доступна в ветке обновлений p8 и нестабильном репозитории 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 add 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

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

Подробнее: 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
a2ensite SOGo
service httpd2 restart
service sogo restart

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

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

TODO

TODO:
  • Интеграция с sssd
  • Интеграция с Postfix
  • Интеграция с Dovecot
  • Проверка интеграции с Acitive Directory
  • Упрощение настройки
  • Модуль Alterator для управления
  • Видеоурок


Проблемы

Заведение адресов в 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


Для правильной работы SOGo на устройствах должна быть обновленная текущая база таймзон. Особенно это касается устройств под управлением iOS и OSX.

Ссылки

 
Личные инструменты