Установка Let’s Encrypt SSL-сертификата в Zimbra Collaboration 8.X.

На тот случай когда по тем или иным причинам нет возможности купить сертификат, мы разберем как выпустить и установить Let’s Encrypt SSL-сертификат в Zimbra Collaboration 8.X..

 

Установим пакет для запросов сертификатов Let’s Encrypt:

apt-get install certbot -y

 

Перед тем как выпустить сертификат, выполним тестовый выпуск сертификата :

certbot certonly --dry-run --standalone -d mail.contoso.com

Если все хорошо и ошибок нет, то выпускаем сертификат:

certbot certonly --standalone -d mail.contoso.com

В процессе будет запрошен email администратора (указываем свой) и пара вопросов на которые отвечаем утвердительно.

Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): admin@contoso.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y

 

Переходим в каталог letsencrypt с нашим доменом (/etc/letsencrypt/live/$DOMAIN/), скачаем корневые сертификаты от Let’s Encrypt и сформируем корректную цепочку сертификатов, чтобы Zimbra ее приняла:

cd /etc/letsencrypt/live/$DOMAIN/

wget -4 -O /etc/letsencrypt/live/$DOMAIN/isrgrootx1.pem https://letsencrypt.org/certs/isrgrootx1.pem.txt
wget -4 -O /etc/letsencrypt/live/$DOMAIN/letsencryptauthorityx3.pem https://letsencrypt.org/certs/letsencryptauthorityx3.pem.txt

cat /etc/letsencrypt/live/$DOMAIN/isrgrootx1.pem > /etc/letsencrypt/live/$DOMAIN/zimbra_chain.pem
cat /etc/letsencrypt/live/$DOMAIN/letsencryptauthorityx3.pem >> /etc/letsencrypt/live/$DOMAIN/zimbra_chain.pem
cat /etc/letsencrypt/live/$DOMAIN/chain.pem >> /etc/letsencrypt/live/$DOMAIN/zimbra_chain.pem

Читать далее

Не доставляются письма lmtp — Not delivering message with duplicate Message-ID. Zimbra Collaboration 8.X.

В работе использую Piler в связке с Zimbra Collaboration и обнаружился интересный момент, что при восстановлении письма из Piler, оно не появляется в пользовательском ящике, при этом в логе mailbox.log фигурирует сообщение:

2022-06-15 11:45:08,794 INFO  [LmtpServer-260] [ip=10.0.13.46;] lmtp - Delivering message: size=37579 bytes, nrcpts=1, sender=no-reply@piler.сontoso.local, msgid=<348759297.2300854.1655279223734.JavaMail.zimbra@mail.сontoso.com>
2022-06-15 11:45:08,794 INFO  [LmtpServer-260] [name=test@сontoso.com;mid=89;ip=10.0.13.46;] lmtp - Not delivering message with duplicate Message-ID <348759297.2300854.1655279223734.JavaMail.zimbra@mail.сontoso.com>

 

Это случается когда LMTP получает одно и то же сообщение для одного и того же пользователя дважды за короткий промежуток времени, он удаляет вторую копию — все это происходит в памяти. Сервер сохранит это количество пар Получатель — Идентификатор сообщения в карте FIFO (first in, first out), отбрасывая любые дубликаты, которые он видит. Это можно отключить, выполнив команду:

su - zimbra -c "zmprov mcf zimbraMessageIdDedupeCacheSize 0"
ИНФОРМАЦИЯ. Для нормальной работы значение zimbraMessageIdDedupeCacheSize по умолчанию равно 3000.

 

Отобразить текущее значение, можно командой:

su - zimbra -c "zmprov gcf zimbraMessageIdDedupeCacheSize"

Читать далее

Удаление Received from: из заголовков писем Zimbra Collaboration 8.X.

По умолчанию текст письма сервера Zimbra Collaboration содержит несколько заголовков из которых можно узнать много чего интересного о сервере и желательно бы эту информацию скрыть:

Чтобы скрыть эту информацию, выполним ряд действий.

 

Посмотрим на текущий параметр postfix_header_checks в localconfig Zimbra (вывод по-умолчанию подсвечен):

su - zimbra -c "zmlocalconfig | grep header_checks"
postfix_header_checks = pcre:/opt/zimbra/conf/postfix_header_checks

 

Создадим файл со своими правилами /opt/zimbra/conf/custom_header_checks со следующим содержимым:

/^Received: (.*?)/ IGNORE
/^Received:/ IGNORE
/^X-Originating-IP:/ IGNORE
/^X-Mailer:/ IGNORE
/^Mime-Version:/ IGNORE
/Message-Id:\s+<(.*?).JavaMail.zimbra@domain.org>/ REPLACE Message-Id: <$1@domain.org>
ВНИМАНИЕ! В Message-Id необходимо вместо domain.org указать свой домен.

 

Для применения указанных правил, в консоли выполняем команды:

su - zimbra -c "zmprov mcf zimbraSmtpSendAddOriginatingIP FALSE"
su - zimbra -c "zmprov mcf zimbraMtaBlockedExtensionWarnRecipient FALSE"
su - zimbra -c "zmprov mcf zimbraMtaHeaderChecks 'pcre:/opt/zimbra/conf/postfix_header_checks pcre:/opt/zimbra/conf/custom_header_checks'"
su - zimbra -c "zmlocalconfig -e postfix_header_checks='pcre:/opt/zimbra/conf/postfix_header_checks, pcre:/opt/zimbra/conf/custom_header_checks'"

Читать далее

Zimbra Collaboration 8.X. Статус службы amavisd is not running после отключения сетевого IPv6 интерфейса.

После отключения сетевого IPv6 интерфейса на почтовом сервере Zimbra служба amavisd перестала запускаться — amavisd is not running.

Чтобы это исправить необходимо в файле /opt/zimbra/conf/amavisd.conf.in добавить в конец файла строку:

$inet_socket_bind = '127.0.0.1';

Перезапускаем службу amavis после внесения изменений:

su - zimbra -c "zmamavisdctl restart"

Читать далее

Как отключить уведомления вида /dev/loop* at 100% в Zimbra Collaboration 8.X.

Замучали множественные уведомления вида — Disk /dev/loop* at 100% on mail… | Disk /snap/snapd/* at 100% on mail… которые валятся в административный почтовый ящик.

 

Отключить такие уведомления их можно путем исключения из мониторинга соответствующих девайсов /dev/loop*. Сперва отобразим все что есть на данный момент по файловой системе:

df -h

Filesystem                     Size  Used Avail Use% Mounted on
udev                           3,9G     0  3,9G   0% /dev
tmpfs                          796M  1,3M  795M   1% /run
/dev/sda2                       49G   13G   34G  28% /
tmpfs                          3,9G     0  3,9G   0% /dev/shm
tmpfs                          5,0M     0  5,0M   0% /run/lock
tmpfs                          3,9G     0  3,9G   0% /sys/fs/cgroup
/dev/mapper/datastore1-zimbra  1,3T 1011G  207G  84% /opt/zimbra
/dev/loop2                      45M   45M     0 100% /snap/snapd/15904
/dev/loop4                      68M   68M     0 100% /snap/lxd/22753
/dev/loop1                      62M   62M     0 100% /snap/core20/1494
/dev/loop3                      68M   68M     0 100% /snap/lxd/21835
tmpfs                          796M     0  796M   0% /run/user/1000
/dev/loop6                      62M   62M     0 100% /snap/core20/1518
/dev/loop0                      47M   47M     0 100% /snap/snapd/16010
tmpfs                          796M     0  796M   0% /run/user/997

Добавляем в исключения мониторинга /dev/loop*, командой:

su - zimbra -c "zmlocalconfig -e zmstat_df_excludes='/dev/loop0:/dev/loop1:/dev/loop2:/dev/loop3:/dev/loop4:/dev/loop5:/dev/loop6:/snap/snapd/16010'"
ИНФОРМАЦИЯ. В случае если нужно добавить в исключение дополнительно какое либо устройство, то необходимо в команде выше нужно указывать и все предыдущие добавления, в противном случае исключения будут перезаписаны и значится будет только одно последнее.

Читать далее

Как переименовать сервер Zimbra Collaboration 8.X.

Столкнулся с необходимость в переименовании имени почтового сервера Zimbra, ниже опишу действия как это сделать, для памяти.

 

1. Переименовываем хост, имя указываем в формате FQDN (прим. mail.contoso.com).

hostnamectl set-hostname <новое имя сервера>

2. В файле /etc/hosts заменяем старое имя на новое.

3. Добавляем А и МХ запись с новым именем почтового сервера в DNS сервере.

4. Останавливаем сервер Zimbra:

su - zimbra -c "zmcontrol stop"

5. Переименовываем сервер Zimbra:

su - zimbra -c "/opt/zimbra/libexec/zmsetservername -n <новое имя сервера> -o <старое имя сервера>"

6. Если в выводе не наблюдается никаких ошибок, то запускаем сервер Zimbra:

su - zimbra -c "zmcontrol start"

7. Выполняем пересоздание базы данных logger, в противном случае в файлах логов будет фигурировать старое имя сервера и из за этого при построения графиков в Веб-интерфейсе будет выпадать ошибка.

Читать далее

Пересоздание базы данных Logger в Zimbra Collaboration 8.X.

После манипуляции и переименованием имени сервера Zimbra, я столкнулся с такой ошибкой в веб-интерфейсе при попытке просмотреть статистику сервера.

Сообщение: system failure: java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 5 Код ошибки: service.FAILURE Method: [unknown] Детали:soap:Receiver

Причина данной ошибки в том что в файлах логов присутствует старое имя сервера и при построение графика вываливается в такую ошибку.. Исправить это можно путем пересоздания базы данных логов.

 

Останавливаем службу logger и переходим в рабочий каталог хранения базы данных logger:

su - zimbra -c "zmloggerctl stop"
cd /opt/zimbra/logger

Удаляем текущую базу данных logger:

rm -rf data

Инициализируем новую базу данных logger:

su - zimbra -c "/opt/zimbra/libexec/zmloggerinit"
ИНФОРМАЦИЯ. По завершении инициализации служба logger будет автоматически запущена.

Читать далее

Установка коммерческого (commercial) SSL-сертификата в Zimbra Collaboration 8.X.

Опишу как установить коммерческий (commercial) SSL-сертификат на почтовый сервер Zimbra Collaboration 8.8.15 GA Release.

В случае если у вас имеется только PFX файл сертификата, то при помощи OpenSSL можно легко извлечь закрытый ключ сертификата, сам сертификат и цепочку сертификатов CA:

openssl pkcs12 -in <filename.pfx> -nocerts -nodes | sed -ne '/-BEGIN PRIVATE KEY-/,/-END PRIVATE KEY-/p' > <clientcert.key>
openssl pkcs12 -in <filename.pfx> -clcerts -nokeys | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > <clientcert.cer>
openssl pkcs12 -in <filename.pfx> -cacerts -nokeys -chain | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > <cacerts.cer>

 

Копируем файлы сертификатов в каталог /opt/zimbra/ssl/zimbra/commercial/ и назначаем права доступа для них.

chown zimbra:zimbra -R /opt/zimbra/ssl/zimbra/commercial/*
chmod 640 -R /opt/zimbra/ssl/zimbra/commercial/*
ВНИМАНИЕ! прошу обратить внимание что путь установки Zimbra может отличаться от моего, поэтому учитывайте это при копировании сертификатов.

 

Выполняем верификацию сертификатов:

sudo su - zimbra -c "zmcertmgr verifycrt comm /opt/zimbra/ssl/zimbra/commercial/clientcert.key /opt/zimbra/ssl/zimbra/commercial/clientcert.cer /opt/zimbra/ssl/zimbra/commercial/cacerts.cer"

прим. Успешная верификация сертификата выглядит вот так:

** Verifying '/opt/zimbra/ssl/zimbra/commercial/clientcert.cer' against '/opt/zimbra/ssl/zimbra/commercial/clientcert.key'
Certificate '/opt/zimbra/ssl/zimbra/commercial/clientcert.cer' and private key '/opt/zimbra/ssl/zimbra/commercial/clientcert.key' match.
** Verifying '/opt/zimbra/ssl/zimbra/commercial/clientcert.cer' against '/opt/zimbra/ssl/zimbra/commercial/cacerts.cer'
Valid certificate chain: /opt/zimbra/ssl/zimbra/commercial/clientcert.cer: OK

Читать далее

Установка Imapsync на Ubuntu 20.04 & Debian 10 Buster

# Устанавливаем необходимые пакеты зависимостей.

apt install libauthen-ntlm-perl libcgi-pm-perl libcrypt-openssl-rsa-perl libdata-uniqid-perl libencode-imaputf7-perl libfile-copy-recursive-perl libfile-tail-perl libio-socket-inet6-perl libio-socket-ssl-perl libio-tee-perl libhtml-parser-perl libjson-webtoken-perl libmail-imapclient-perl libparse-recdescent-perl libmodule-scandeps-perl libreadonly-perl libregexp-common-perl libsys-meminfo-perl libterm-readkey-perl libtest-mockobject-perl libtest-pod-perl libunicode-string-perl liburi-perl libwww-perl libtest-nowarnings-perl libtest-deep-perl libtest-warn-perl libdist-checkconflicts-perl libpar-packer-perl libtest-fatal-perl libtest-modern-perl libtest-requires-perl libtest-mock-guard-perl make time cpanminus git -y

apt-get install apt-file -y
apt-file update

# Скачиваем исходник пакета Imapsync.

cd /opt/ 
git clone https://github.com/imapsync/imapsync.git
cd imapsync/

# Собираем и устанавливаем пакет — Imapsync.

make
make testp
make install

# Можно проверить работоспособность установленного пакета командой.

imapsync --testslive

# Перед миграцией убедитесь, что на обеих учетных записях запущен IMAP и они доступны из вашей системы. После этого используйте следующий синтаксис команды:

imapsync --host1 imap.source.example.com --user1 user@example.com --password1 S0urcePassw0rd --ssl1 --host2 imap.dest.example.com --user2 user@example.com --password2 Dest1nat10NPassw0rd --ssl2

 

# Для примера для миграции с Exchange Online (office365) на Zimbra Colloboration Suit я использовал следующий набор команд.

Читать далее