SCROLL

Посты с тэгом: zimbra

На тот случай когда по тем или иным причинам нет возможности купить сертификат, мы разберем как выпустить и установить 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

В работе использую 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"

[stextbox id=’info’]ИНФОРМАЦИЯ. Для нормальной работы значение zimbraMessageIdDedupeCacheSize по умолчанию равно 3000.[/stextbox]

 

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

su - zimbra -c "zmprov gcf zimbraMessageIdDedupeCacheSize"

По умолчанию текст письма сервера 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>

[stextbox id=’warning’]ВНИМАНИЕ! В Message-Id необходимо вместо domain.org указать свой домен.[/stextbox]

 

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

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'"

После отключения сетевого 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"

Замучали множественные уведомления вида — 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'"

[stextbox id=’info’]ИНФОРМАЦИЯ. В случае если нужно добавить в исключение дополнительно какое либо устройство, то необходимо в команде выше нужно указывать и все предыдущие добавления, в противном случае исключения будут перезаписаны и значится будет только одно последнее.[/stextbox]

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

После манипуляции и переименованием имени сервера 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"

[stextbox id=’info’]ИНФОРМАЦИЯ. По завершении инициализации служба logger будет автоматически запущена.[/stextbox]

Опишу как установить коммерческий (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/*

[stextbox id=’warning’]ВНИМАНИЕ! прошу обратить внимание что путь установки Zimbra может отличаться от моего, поэтому учитывайте это при копировании сертификатов.[/stextbox]

 

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

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

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

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 libproc-processtable-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

 

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

 

Повышаем свои права до суперпользователя:

sudo su

Переходим в каталог:

cd /opt/zimbra/bin

Создаем новый корневой сертификат:

./zmcertmgr createca -new

При работе с почтовым сервером Zimbra Collaboration, возникает проблема с самоподписанным сертификатом, почтовые клиенты и браузеры каждый раз выдают сообщение об ошибке проверки сертификата и угрозе безопасности. Это создает неудобство в работе, т.к. каждый раз пользователям приходится игнорировать непроверенный сертификат. Разберем как исправить эту ситуацию.

 

Вот такое предупреждение безопасности мы наблюдаем при попытке подключится к серверу с самоподписанным сертификатом.

По данной статье был развернут почтовый сервер Zimbra Collaboration 8.6. Для себя хочу проработать процесс обновления почтового сервера. Выполню обновление с версии 8.6.0 до 8.7.0.

 

Итак мы имеем рабочую версию Zimbra Collaboration 8.6

Рассмотрим как делать резервные копии списка учетных записей, а так же списков рассылки. Данный бекап может пригодится, в случае переноса почтового сервера на другую машину, да и в целом на случай непредвиденного сбоя, всегда можно будет восстановить быстро как учетные записи, так и группы рассылки.

 

Итак мы имеем развернутый по этой статье почтовый сервер Zimbra Collaboration 8.6 на Ubuntu 14.04 Trusty Tahr. Для создания бекапа данных мы будем использовать bash скрипты.

 

Резервное копирование списка учетных записей

Создаем текстовый файл и делаем его исполняемым:

nano backup_accounts.sh
sudo chmod +x backup_accounts.sh

 

В созданный скрипт вписываем следующее (в параметрах настроек скрипта указываем данные свои):

В этой статье мы разбирали как развернуть Zimbra Collaboration 8.6 на Ubuntu 14.04 Trusty Tahr. В бесплатной версии почтового сервера нет удобного функционала по бекапу и восстановлению почтовых ящиков. А создание бекапов, есть неотъемлемая часть работы любого системного администратора. Да и наличие бекапа всегда нас спасет в трудную минуту.

 

Создавать бекапы и восстанавливать их же будем посредством bash-скриптов. Создавать и восстанавливать почтовые ящики мы будем на горячую так сказать, без остановки почтового сервера.

 

 

Резервное копирование всех почтовых ящиков

Создаем текстовый файл и делаем его исполняемым:

nano backup_all_mailbox.sh
sudo chmod +x backup_all_mailbox.sh

 

В созданный скрипт вписываем следующее (в параметрах настроек скрипта указываем данные свои):

#!/bin/bash

#####################
# Настройки скрипта #
#####################
# Путь к месту бекапа
Path_backup="/home/jakonda/bkzm"
# Временный файл для работы
Source_list="/home/jakonda/temp"
# Название домена
Domain="jakondo.ru"
# Значение текущей даты
Current_date=$(date +%d-%m-%Y)
# Лог-файл
Log=$Path_backup"/"$Current_date"/log"
echo "#####################################################"
echo "# Резервное копирование всех почтовых ящиков Zimbra #"
echo "#####################################################"
echo ""
echo "Время начала бекапа всех почтовых ящиков - $(date +%T)"
echo "Начало бекапа - $(date +%T)" > $Log
# Запоминаем время начала бекапа
Begin_time=$(date +%s)
echo ""
# Определяем список всех имеющихся почтовых ящиков
echo "Формируем список всех почтовых ящиков для бекапа..."
/opt/zimbra/bin/zmprov -l gaa $Domain > $Source_list
if [ $? -eq 0 ]; then
echo -n "$(tput hpa $(tput cols))$(tput cub 6)[OK]"
echo "Формирование списка почтовых ящиков успешно выполнено." >> $Log
echo
else
echo -n "$(tput hpa $(tput cols))$(tput cub 6)[FAIL]"
echo "Формирование списка почтовых ящиков не удалось выполнить. Завершение работы (Неудача)." >> $Log
exit
echo
fi
# Проходимся по всем ящикам в полученном списке и делаем бекап каждого
echo "Выполняем резервное копирование всех почтовых ящиков"
echo "----------------------------------------------------"
mkdir -p $Path_backup/$Current_date/
echo "Создание каталога $Current_date для размешения бекапа." >> $Log
for mailbox in $( cat $Source_list); do
echo "Резервирование почтового ящика - $mailbox"
/opt/zimbra/bin/zmmailbox -z -m $mailbox getRestUrl "//?fmt=tgz" > $Path_backup/$Current_date/$mailbox.tgz
if [ $? -eq 0 ]; then
echo -n "$(tput hpa $(tput cols))$(tput cub 6)[OK]"
echo "Бекап почтового ящика $mailbox успешен" >> $Log
echo
else
echo -n "$(tput hpa $(tput cols))$(tput cub 6)[FAIL]"
echo "Бекап почтового ящика $mailbox не удачно" >> $Log
echo
fi
done
# Вычисление времени работы бекапа почтовых ящиков
End_time=$(date +%s)
Elapsed_time=$(expr $End_time - $Begin_time)
Hours=$(($Elapsed_time / 3600))
Elapsed_time=$(($Elapsed_time - $Hours * 3600))
Minutes=$(($Elapsed_time / 60))
Seconds=$(($Elapsed_time - $Minutes * 60))
echo "Затрачено времени на резервное копирование : $Hours час $Minutes минут $Seconds секунд"
echo "Затрачено времени на резервное копирование : $Hours час $Minutes минут $Seconds секунд" >> $Log

Разберем как развернуть мощный и в тоже время бесплатный почтовый сервер Zimbra Collaboration 8.6. Zimbra может соперничать с Microsoft Exchange своим функционалом, в который входит необходимый набор инструментов для работы в корпоративной среде. Zimbra имеет удобный и понятный Web интерфейс, поддерживающий работу мобильных устройств, что не мало важно для сотрудников находящихся вне офиса.

 

Исходные данные для развертывания Zimbra:

  • Домен jakondo.ru (на этом доменном имени будет ходить почта)
  • Локальная сеть 10.5.5.0/24
  • Домен контроллер на базе Windows Server 2012R2 (AD DS, DNS) DC1, jakonda.local10.5.5.5 (Установленный по данной статье)
  • Установленная система Ubuntu 14.04 Trusty Tahr (10.5.5.10, Hostname — mail)

Задача:

  • Настроить DNS на домен контроллере DC1, для работы почтового сервера Zimbra.
  • Выполнить предварительную настройку системы Ubuntu 14.04 Trusty Tahr перед установкой Zimbra.
  • Установить почтовый сервер Zimbra Collaboration 8.6.
  • Добавление почтового домена jakondo.ru в развернутый почтовый сервер.
  • Проверить работу почты.