Kolab Groupware (Часть 2 — Установка)

  • Tutorial


Если вы еще не знаете что такое Kolab, то вы вероятно захотите прочитать первую статью, где я делал подробный обзор на этот довольно функциональный и полностью свободной почтовый сервер с красивой веб-мордой.
На этот раз мы будем его устанавливать.

Kolab Groupware (Часть 1 — Обзор)
Kolab Groupware (Часть 2 — Установка)

Если вы не хотите заморачиваться со всем что описанно в этой статье или просто хотите попробовать Kolab, вы можете использовать готовый docker-образ.

Установка пакетов


Пакеты существуют для всех популярных дистрибутивов: Red Hat Enterprise Linux, CentOS, Fedora, Debian, так же есть эксперементальные пакеты для OpenSUSE и Ubuntu, а в ArchLinux Kolab можно собрать из AUR.
Я буду устанавливать на Сentos 7, но на меня ориентироваться совсем не обязательно, на других дистрибутивах установка мало чем будет отличается.

Итак приступим

Установим репозитории
yum -y update
yum -y install wget epel-release 
cd /etc/yum.repos.d
wget http://obs.kolabsys.com/repositories/Kolab:/3.4/CentOS_7/Kolab:3.4.repo
wget http://obs.kolabsys.com/repositories/Kolab:/3.4:/Updates/CentOS_7/Kolab:3.4:Updates.repo

Установим ключи
gpg --keyserver pgp.mit.edu --recv-key 0x446D5A45
gpg --export --armor devel@lists.kolab.org > devel.asc
rpm --import devel.asc
rm devel.asc

Теперь сами пакеты
yum -y install kolab


Установка Kolab


Первым делом в качестве имени хоста необходимо задать полный FQDN, например:
echo "mail.example.org" > /etc/hostname

Кроме того, установка dirsrv требует, что бы имя вашей машины резольвилось в принадлежащей ей IP-адрес, так что не забываем добавить соответствующую запись в DNS и/или в /etc/hosts файл.

Теперь самое время узнать о том, что если вы хотите установить Kolab и использовать вместо стандартного 389 Directory Server (далее dirsrv), какой-нибудь Active Directory, то вам нужно перед установкой отредактировать файл /etc/kolab/kolab.conf, и поправить параметры отвечающие за LDAP.
При этом установку нужно будет запускать c параметром --with-ad

Так же в centos-системах перед установкой следует создать пользователя dirsrv, при установке пакетов, он почему-то не создается, в debian этим все впорядке.
adduser dirsrv

Ок, теперь все готово, запускаем установку:
setup-kolab

Вся установка сводится к тому что бы отвечать на вопросы которые задаст вам интерактивный скрипт
Листинг
Please supply a password for the LDAP administrator user 'admin', used to login
to the graphical console of 389 Directory server.

Administrator password [sQnPqqaKInB2ObB]: 

Please supply a password for the LDAP Directory Manager user, which is the
administrator user you will be using to at least initially log in to the Web
Admin, and that Kolab uses to perform administrative tasks.

Directory Manager password [ohLY9kxxinHGOGE]: 

Please choose the system user and group the service should use to run under.
These should be existing, unprivileged, local system POSIX accounts with no
shell.

User [dirsrv]: 
Group [dirsrv]: 

This setup procedure plans to set up Kolab Groupware for the following domain
name space. This domain name is obtained from the reverse DNS entry on your
network interface. Please confirm this is the appropriate domain name space.

example.org [Y/n]: y

The standard root dn we composed for you follows. Please confirm this is the root
dn you wish to use.

dc=example,dc=org [Y/n]: y

Setup is now going to set up the 389 Directory Server. This may take a little
while (during which period there is no output and no progress indication).

Shutting down dirsrv: 
    mail...                                                [  OK  ]
Starting dirsrv: 
    mail...                                                [  OK  ]

Please supply a Cyrus Administrator password. This password is used by Kolab to
execute administrative tasks in Cyrus IMAP. You may also need the password
yourself to troubleshoot Cyrus IMAP and/or perform other administrative tasks
against Cyrus IMAP directly.

Cyrus Administrator password [0DIMW-CLUKmsNEU]: 

Please supply a Kolab Service account password. This account is used by various
services such as Postfix, and Roundcube, as anonymous binds to the LDAP server
will not be allowed.

Kolab Service password [dDGgUZAue2Y-LTW]: 
Shutting down postfix:                                     [FAILED]
Starting postfix:                                          [  OK  ]
Shutting down amavisd: The amavisd daemon is apparently not running, no PID file /var/run/amavisd/amavisd.pid
                                                           [FAILED]

Starting amavisd:                                          [  OK  ]

Stopping clamd.amavisd:                                    [FAILED]
Starting clamd.amavisd: LibClamAV Warning: **************************************************
LibClamAV Warning: ***  The virus database is older than 7 days!  ***
LibClamAV Warning: ***   Please update it as soon as possible.    ***
LibClamAV Warning: **************************************************
                                                           [  OK  ]
Stopping wallaced:                                         [FAILED]
Starting wallaced:                                         [  OK  ]
Stopping mysqld:                                           [  OK  ]
Initializing MySQL database:  Installing MySQL system tables...
OK
Filling help tables...
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:

/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h mail.example.org password 'new-password'

Alternatively you can run:
/usr/bin/mysql_secure_installation

which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:
cd /usr ; /usr/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl
cd /usr/mysql-test ; perl mysql-test-run.pl

Please report any problems with the /usr/bin/mysqlbug script!

                                                           [  OK  ]
Starting mysqld:                                           [  OK  ]
What MySQL server are we setting up?
 - 1: Existing MySQL server (with root password already set).
 - 2: New MySQL server (needs to be initialized).
Choice: 2

Please supply a root password for MySQL. This password will be the administrative
user for this MySQL server, and it should be kept a secret. After this setup
process has completed, Kolab is going to discard and forget about this password,
but you will need it for administrative tasks in MySQL.

MySQL root password [lhBkALCvQpocaiT]: 

Please supply a password for the MySQL user 'kolab'. This password will be used
by Kolab services, such as the Web Administration Panel.

MySQL kolab password [47rxdTc-vIk3WJ8]: 

Please supply the timezone PHP should be using. You have to use a Continent or
Country / City locality name like 'Europe/Berlin', but not just 'CEST'.

Timezone ID [UTC]: Europe/Moscow

Please supply a password for the MySQL user 'roundcube'. This password will be
used by the Roundcube webmail interface.

MySQL roundcube password [o_yUViK4oRy7SX2]: 
Stopping httpd:                                            [FAILED]
Starting httpd:                                            [  OK  ]
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]
Stopping kolab-saslauthd:                                  [FAILED]
Starting kolab-saslauthd:                                  [  OK  ]
Shutting down cyrus-imapd:                                 [FAILED]
Starting cyrus-imapd:                                      [  OK  ]
Stopping kolabd:                                           [FAILED]
Starting kolabd:                                           [  OK  ]



После установки вы имеете уже вполне рабочую инсталляцию Kolab, для тестового запуска этого вполне достаточно, но для выпуска в продакшен придется еще немного поработать напильником :)

Редактируем конфиг


Конфиг находится здесь /etc/kolab/kolab.conf
Здесь, найдется чего покрутить, вот нескоько полезных опций:

Локаль


Локаль по умолчанию, для русского укажите ru_RU
default_locale = en_US

Генерация uid'ов и имен ящиков


Здесь указано правило по которому генерируется основной почтовый ящик
primary_mail = %(surname)s@%(domain)s

А это правила по которым генерируются дополнительные почтовые ящики, как видите они могут быть более гибкими, чем для основного
secondary_mail = { 
    0: {
    "{0}.{1}@{2}": "format('%(givenname)s'[0:1].capitalize(), '%(surname)s', '%(domain)s')"
    },  
    1: {
    "{0}@{1}": "format('%(uid)s', '%(domain)s')"
    },  
    2: {
    "{0}@{1}": "format('%(givenname)s.%(surname)s', '%(domain)s')"
    }   
    } 

По умолчанию в Kolab запрещено изменять через админку primary email и uid, т.е. они должны всегда генерироваться сами исходя из этих правил.
Мне лично такая схема не нравится, мне больше нравится указывать username и mail-адреса в ручную, ну или хотя бы что бы его можно было редактировать. Расскажу как можно это сделать:

Отключаем проверку имен ящиков
daemon_rcpt_policy = False

Переходим в админку Kolab, переходим в Settings и для типа Kolab User атрибута uid и mail меняем значение с «Generated (read-only)» на «Generated».
Теперь мы можем редактировать uid'ы и mail-адреса для наших пользователей вручную.

Хранение почты


Продолжаем разбирать конфиг, здесь указанно какие папки следует создавать по умолчанию новому пользователю
autocreate_folders = { 
    'Archive': {
    'quota': 0,
    },  
    'Calendar': {
    'annotations': {
    '/private/vendor/kolab/folder-type': "event.default",
    '/shared/vendor/kolab/folder-type': "event",
    }, 
...

При желании можно вынести разные папки на разные хранилища, например что бы все папки были на быстром хранилище, а папку archive на медленном.
Для этого в конфиге cyrus следует указать где искать эти хранилища.
echo "partition-default: /var/spool/imap" >> /etc/imapd.conf
echo "partition-archive: /var/spool/imap-archive" >> /etc/imapd.conf

И добавить параметр partition к папке Archive, примерно так:
...
    'Archive': {
    'quota': 0,
    'partition': 'archive'
    },  
...


Мультидоменная конфигурация


Kolab из коробки не совсем поддерживает несколько доменов. Вернее в админке все для этого есть, но все остальные сервисы, такие как postfix, cyrus-imap, amavis, roundcube — все они по умолчанию настроенны для поддержки только одного домена.
Если вам все же необходимо настроить несколько доменов, на официальной wiki есть очень подробный гайд о том как настроить весь этот зоопарк, для работы с несколькими доменами
Стоит заметить, что после описанных действий ваши логины в почту поменяются с простого username на username@example.org
Если вам данная функция не нужна, просто пропускаем этот пункт.

Настройка SSL


Обезопасим наш сервер, получаем сертификат на ваш домен, если вы еще не сделали этого ранее.
Так же понадобится сертификат центра сертификации (в случае StartSSL — sub.class1.server.ca.pem)

Установим mod_ssl для apache
yum -y install  mod_ssl 


Теперь копируем наши ключи по следующим путям:
/etc/pki/tls/private/mail.example.org.key
/etc/pki/tls/certs/mail.example.org.crt
/etc/pki/tls/certs/sub.class1.server.ca.pem

# Cоздадим цепочки для наших сертификатов

cat /etc/pki/tls/certs/mail.example.org.crt /etc/pki/tls/private/mail.example.org.key /etc/pki/tls/certs/sub.class1.server.ca.pem > /etc/pki/tls/private/mail.example.org.bundle.pem
cat /etc/pki/tls/certs/mail.example.org.crt /etc/pki/tls/certs/sub.class1.server.ca.pem > /etc/pki/tls/certs/mail.example.org.bundle.pem
cat /etc/pki/tls/certs/sub.class1.server.ca.pem > /etc/pki/tls/certs/mail.example.org.ca-chain.pem

# Настроим права
chown -R root:mail /etc/pki/tls/private
chmod 600 /etc/pki/tls/private/mail.example.org.key
chmod 750 /etc/pki/tls/private
chmod 640 /etc/pki/tls/private/*

# Добавим сертификат центра сертификации в системное хранилище
cat /etc/pki/tls/certs/sub.class1.server.ca.pem >> /etc/pki/tls/certs/ca-bundle.crt

# Настроим сертификаты в apache
sed -i -e '/SSLCertificateFile \/etc\/pki/c\SSLCertificateFile /etc/pki/tls/certs/mail.example.org.crt' /etc/httpd/conf.d/ssl.conf
sed -i -e '/SSLCertificateKeyFile \/etc\/pki/c\SSLCertificateKeyFile /etc/pki/tls/private/mail.example.org.key' /etc/httpd/conf.d/ssl.conf
sed -i -e '/SSLCertificateChainFile \/etc\/pki/c\SSLCertificateChainFile /etc/pki/tls/certs/mail.example.org.ca-chain.pem' /etc/httpd/conf.d/ssl.conf
        
# Настроим редирект на HTTPS по умолчанию
cat >> /etc/httpd/conf/httpd.conf << EOF 

<VirtualHost _default_:80>
    RewriteEngine On
    RewriteRule ^(.*)$ https://%{HTTP_HOST}\$1 [R=301,L]
</VirtualHost>
EOF

#  Настроим сертификаты в cyrus-imap
sed -r -i \
    -e 's|^tls_server_cert:.*|tls_server_cert: /etc/pki/tls/certs/mail.example.org.crt|g' \
    -e 's|^tls_server_key:.*|tls_server_key: /etc/pki/tls/private/mail.example.org.key|g' \
    -e 's|^tls_server_ca_file:.*|tls_server_ca_file: /etc/pki/tls/certs/mail.example.org.ca-chain.pem|g' \
    /etc/imapd.conf
        
# Настроим сертификаты в Postfix
postconf -e smtpd_tls_key_file=/etc/pki/tls/private/mail.example.org.key
postconf -e smtpd_tls_cert_file=/etc/pki/tls/certs/mail.example.org.crt
postconf -e smtpd_tls_CAfile=/etc/pki/tls/certs/mail.example.org.ca-chain.pem
        
# Укажем kolab-cli новую ссылку на api
sed -r -i \
      -e '/api_url/d' \
      -e "s#\[kolab_wap\]#[kolab_wap]\napi_url = https://$(hostname -f)/kolab-webadmin/api#g" \
      /etc/kolab/kolab.conf
          
# Настроим Roundcube
sed -i -e 's/http:/https:/' /etc/roundcubemail/libkolab.inc.php
sed -i -e 's/http:/https:/' /etc/roundcubemail/kolab_files.inc.php
sed -i -e '/^?>/d' /etc/roundcubemail/config.inc.php

# Расскажем iRony о новых ссылках для DAV-протоколов
cat >> /etc/roundcubemail/config.inc.php << EOF
# caldav/webdav
\$config['calendar_caldav_url']             = "https://%h/iRony/calendars/%u/%i";
\$config['kolab_addressbook_carddav_url']   = 'https://%h/iRony/addressbooks/%u/%i';
EOF

# Укажем Rouncdcube принудительно работать по HTTPS
cat >> /etc/roundcubemail/config.inc.php << EOF
# Force https redirect for http requests
\$config['force_https'] = true;
EOF

На этом настройка SSL можно считать завершенной.

DKIM и SPF


Что бы Gmail и другие почтовые сервера не заносили наши письма в спам, рекомендуется настроить SPF и DKIM записи на нашем сервере.
В качестве серверной части для DKIM предлагаю использовать OpenDKIM, по настройке которого на хабре уже была замечательная статья

Настройка доставки спама


По умолчанию amavis весь спам просто удаляет. Лично я считаю, что не совсем правильно и что спам должен доставляться в личные спам-папки пользователей

Собственно есть два варианта как это можно сделать:

Вариант с разделителем


Cyrus-imap позволяет доставлять почту сразу в нужную папку используя для этого специальный разделитель в почтовом адресе.

Настроим amavis
# отключим добавление ***spam*** в тему письма
sed -i '/^[^#]*$sa_spam_subject_tag/s/^/#/' /etc/amavisd/amavisd.conf
# включим использование префикса spam+ для доставки почты
sed -i '/^# $recipient_delimiter/s/^# //' /etc/amavisd/amavisd.conf
# разрешим доставку спама
sed -i 's/^\($final_spam_destiny.*= \).*/\1D_PASS;/' /etc/amavisd/amavisd.conf

Еще один момент, что бы почту можно было доставлять сразу в папку spam, для этой папки пользователь anyone должен иметь разрешение p (т.е. помещать в эту папку письма), в противном случае все будет сыпаться в INBOX.
Кстати касается это и Shared Folders, если вы хотите получать в них письма, вам следует установить для них аналогичные разрешения.

К сожалению я не нашел в cyrus-imap штатной возможности определить неглассные права для пользователя anyone.
Но у меня есть на это решение, добавляем эту строку в crontab, и каждые 4 часа kolab будет дергать cyrus-imap что бы у каждого пользователя в вашем домене стояло «anyone p» для папки spam.
0 4 * * *  kolab sam user/%/Spam@example.org anyone p


Вариант с глобальным sieve скриптом


Настроим amavis
# отключим добавление ***spam*** в тему письма
sed -i '/^[^#]*$sa_spam_subject_tag/s/^/#/' /etc/amavisd/amavisd.conf
# разрешим доставку спама
sed -i 's/^\($final_spam_destiny.*= \).*/\1D_PASS;/' /etc/amavisd/amavisd.conf


Создадим глобальный скрипт для cyrus:
mkdir -p /var/lib/imap/sieve/global/
cat > /var/lib/imap/sieve/global/default.script << EOF
require "fileinto";
if header :contains "X-Spam-Flag" "YES"
{
        fileinto "Spam";
}
EOF

Скомпилируем его:
/usr/lib/cyrus-imapd/sievec /var/lib/imap/sieve/global/default.script /var/lib/imap/sieve/global/default.bc

Теперь сделаем скрипт который будет подключать его всем новым пользователям:

/bin/set_spam_sieve.sh
#!/bin/bash
imap_stor=/var/spool/imap/
sieve_stor=/var/lib/imap/sieve/
 
user_sieve_folders=($(find $imap_stor -name Spam -type d -print | sed 's|'$imap_stor'|'$sieve_stor'|' | sed 's|/user||' | sed 's|/Spam|/|'))
 
for folder in ${user_sieve_folders[@]} ; do

    if [ -f $folder'USER.script' ] ; then

        cd $folder

        if [ "$(grep -c 'require.*include' 'USER.script')" -eq 0 ]; then 
            echo 'Inject  require "include";  '$folder'USER.script'
            sed -i '1i require "include";' 'USER.script'
            /usr/lib/cyrus-imapd/sievec 'USER.script' 'USER.bc'
            chown -R cyrus:mail $folder
        fi  

        if [ "$(grep -c "include.*:global.*default" 'USER.script')" -eq 0 ]; then 
            echo 'Inject  include :global "default";  '$folder'USER.script'
            echo 'include :global "default";' >> $folder'USER.script'
            /usr/lib/cyrus-imapd/sievec 'USER.script' 'USER.bc'
            chown -R cyrus:mail $folder
        fi  

        echo -e $folder'USER.script'

    else

        echo Creating new  $folder'USER.script'
        mkdir -p $folder
        cd $folder
        echo -e 'require ["include"];\ninclude :global "default";' > 'USER.script'
        /usr/lib/cyrus-imapd/sievec 'USER.script' 'USER.bc'
        ln -s 'USER.bc' 'defaultbc'
        chown -R cyrus:mail $folder

    fi  

done


Не забываем сделать его исполняемым:
chmod +x /bin/set_spam_sieve.sh


Теперь добавим в cron задание, которое будет запускать скрипт set_spam_sieve.sh каждые 4 часа:
0 4 * * *  /bin/set_spam_sieve.sh


Защита от брутфорса с Fail2ban


Fail2ban — это сервис, который мониторит логи других сервисов на слишком частое повторение неправильных попыток входа.
Например если слишком часто повторяются попытки входа с неправильным паролем с одного IP, то этот IP получает бан на несколько минут.

Установим Fail2ban из официальных репозиториев
yum -y install  fail2ban


Создадим фильтры для Fail2ban
cat > /etc/fail2ban/filter.d/kolab-cyrus.conf << EOF
[Definition]
failregex = (imaps|pop3s)\[[0-9]*\]: badlogin: \[<HOST>\] (plain|PLAIN|login|plaintext) .*
ignoreregex =
EOF

cat > /etc/fail2ban/filter.d/kolab-postfix.conf << EOF
[Definition]
failregex = postfix\/submission\/smtpd\[[0-9]*\]: warning: unknown\[<HOST>\]: SASL (PLAIN|LOGIN) authentication failed: authentication failure
ignoreregex =
EOF

cat > /etc/fail2ban/filter.d/kolab-roundcube.conf << EOF
[Definition]
failregex = <.*> Failed login for .* from <HOST> in session .*
ignoreregex =
EOF

cat > /etc/fail2ban/filter.d/kolab-irony.conf << EOF
[Definition]
failregex = <.*> Failed login for .* from <HOST> in session .*
ignoreregex =
EOF

cat > /etc/fail2ban/filter.d/kolab-chwala.conf << EOF
[Definition]
failregex = <.*> Failed login for .* from <HOST> in session .*
ignoreregex =
EOF

cat > /etc/fail2ban/filter.d/kolab-syncroton.conf << EOF
[Definition]
failregex = <.*> Failed login for .* from <HOST> in session .*
ignoreregex =
EOF

Теперь же натравим на них Fail2ban
cat >> /etc/fail2ban/jail.conf << EOF

[kolab-cyrus]
enabled = true
filter  = kolab-cyrus
action  = iptables-multiport[name=cyrus-imap,port="143,993,110,995,4190"]
logpath = /var/log/maillog
maxretry = 5

[kolab-postfix]
enabled = true
filter  = kolab-postfix
action  = iptables-multiport[name=kolab-postfix,port="25,587"]
logpath = /var/log/maillog
maxretry = 5

[kolab-roundcube]
enabled = true
filter  = kolab-roundcube
action  = iptables-multiport[name=kolab-roundcube, port="http,https"]
logpath = /var/log/roundcubemail/userlogins
maxretry = 5

[kolab-irony]
enabled = true
filter  = kolab-irony
action  = iptables-multiport[name=kolab-irony,port="http,https"]
logpath = /var/log/iRony/userlogins
maxretry = 5

[kolab-chwala]
enabled = true
filter  = kolab-chwala
action  = iptables-multiport[name=kolab-chwala,port="http,https"]
logpath = /var/log/chwala/userlogins
maxretry = 5

[kolab-syncroton]
enabled = true
filter  = kolab-syncroton
action  = iptables-multiport[name=kolab-syncroton,port="http,https"]
logpath = /var/log/kolab-syncroton/userlogins
maxretry = 5
EOF


Настроим Roundcube



Тема по умолчанию


Как я уже писал в предыдущей статье, если вам не нравится по умолчанию тема Chameleon, вы легко можете заменить ее на Larry
sed -i "s/\$config\['skin'\] = '.*';/\$config\['skin'\] = 'larry';/g" /etc/roundcubemail/config.inc.php


Плагин zipdownload


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

Скачаем репозиторий roundcube, и скопируем плагин в папку с плагинами нашего Roundcube
git clone https://github.com/roundcube/roundcubemail/ --depth 1 /tmp/roundcube
mv /tmp/roundcube/plugins/zipdownload/ /usr/share/roundcubemail/plugins/
rm -rf /tmp/roundcube/

Теперь лишь осталось его активировать добавив его в $config['plugins'] массив в файле /etc/roundcubemail/config.inc.php
sed -i "/'contextmenu',/a \            'zipdownload'," /etc/roundcubemail/config.inc.php

Еще один момент: в модуле php_zlib, в версиях поставляемых с дистрибутивами есть баг, в результате которого, если в письме есть файлы с кирилическими именами, то при упаковке в zip-файл их имена превращаются в кракозябру.
Что бы решить это, соберем новый php_zlib:
yum -y install php-devel zlib-devel pcre-devel gcc
pecl install zip


Kolab ActiveSync Server


Еще пара слов об синхронизации: сервис kolab-synroton (форк z-push) по умолчанию имеет 2 режима работы: folder-mode и flat-mode.

В случае с folder-mode все папки которые вы отметите в настройках синхронизации в Roundcube передаются как есть.
В случае же с flat-mode все эти же папки объединяются в одну для почты, одну для контактов, одну для календаря…

Apple и Windows техника по умолчанию работает в folder-mode, но вот для Android, ввиду слабой поддержки folder-mode (так говорят разроботчики), по умолчанию включен flat-mode.
При желании вы можете попробовать и если ваше устройство все таки поддерживает folder-mode, вы можете внести его название в массив $ext_devices в файле /usr/share/kolab-syncroton/lib/kolab_sync_data.php

Заключение


На этом установку можно считать законченной, еще раз рестартуем все сервисы и проверяем запускаются ли они автоматически при старте системы.

Почтовый клиент доступен по ссылке: mail.example.org/webmail
Админка: mail.example.org/kolab-webadmin

Вы так же можете настроить автоматический редирект с mail.example.org на mail.example.org/webmail
sed -i -e 's/<Directory \/>/<Directory \/>\n    RedirectMatch \^\/$ \/webmail\//g' /etc/httpd/conf/httpd.conf


UPD: Недавно sattellite обратился ко мне с проблемой, что не работают sieve-правила, если папка, в которую нужно доставить письмо, имеет кириллическое имя.

Решение оказалось довольно простым:
echo 'sieve_utf8fileinto: 1' >> /opt/kolab-crosslab.ru/etc/imapd.conf
спасибо!

Docker образ


В качестве бонуса прилагаю к статье свой образ Kolab'а для Docker где все вышеописанное и nginx в придачу, настраивается автоматически: GitHub, DockerHub

Официальный сайт проекта: kolab.org
  • +11
  • 17k
  • 7
Поделиться публикацией
Похожие публикации
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама
Комментарии 7
  • +1
    Не хочу делать много странных команд, хочу делать docker run ;)
    • 0
      Буквально в тот же момент что вы написали коментарий, я успел добавить к статье свой docker-образ :)
    • 0
      Как вам уже писали в вашем прошлом посте: показ интерфейсов раундкуба, календарей и прочих плюшек для пользователей, а так же настройки postfix, dovecot, баз данных и тп особо не интересны. Любой администратор почтового сервера все это может сделать на раз-два.

      Весь труд этих ребят из kolab.org состоит только в написании админки. Удобной или не очень панели администрирования для стандартной связки postfix/dovecot/database/. Вот ее и надо бы показать, особенно если она бесплатная.
      • 0
        Весь труд этих ребят из kolab.org состоит только в написании админки

        Не согласен с вами.
        Ребята из kolab.org сделали очень многое для этого проекта, но вот как раз таки админка у них, на мой взгляд, получилась не очень.

        Админка является, в первую очередь, обычным LDAP-браузером, с немного более «человеческим» лицом.
        Для администрирования «стандартной связки», вы с тем же успехом можете использовать любой другой LDAP-бэкенд или даже AD.

        Тем не менее, ваши пожелания я принял, и по возможности опишу интерфейсы администрирования Kolab подробнее, уже в новой статье.
      • +1
        А комбайн этот умеет делать SSO Kerberos в корпоративных сетях с Active Directory?
        • 0
          Сам по себе нет, но можно попробовать допилить для этого Roundcube, например заменить стандартную авторизацию на HTTP и прикрутить к ней Kerberos. Какие-то плагины для этого есть, но сам я ничем подобным еще не занимался.

          Смотрите тут и тут.

        • 0
          По работе пришлось разбираться с kolab 16. И мне есть, что сказать.

          Наверняка вы захотите использовать Community версию, поскольку она бесплатная.
          Самое хорошее, что получилось у ребят из kolab — это интерфейс и плюшки к rouncube, бесспорно они это сделали хорошо.
          В остальном же полная задница.
          Все пойдет хорошо только в одном случае, если вы ставите stand-alone сервер, где все в куче. И желательно именно так, как предусмотрели они.
          Шаг в лево или в право и все, вам конец. Никах вариантов при установке нет, в коде все прописано жестко.
          Хотите документации? Забудьте, ее почти нет, а той, что есть много ошибок. вам придется читать код на питоне, чтобы разобраться, что и куда они ставят. Для предыдущих версий она есть, частично ее можно использовать.
          Хотите сапорта в коммюнити? Забудьте, возможно вам ответят на пару самых простых вопросов, не больше.
          Хотите разнести сервисы по нескольким серверам? Отделить ldap или прикрутить kolab к существующему? Приготовьтесь перелопачивать код питона.

          Я справился с этой задачей, но оно того не стоило. Гораздо проще и быстрее поднять это все с нуля самому.

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