Установка почтового сервера Zimbra 9 by Zextras

В этой статье я разберу полный цикл установки и настройки почтового сервера Zimbra 9 by Zextras.

Исходные данные:

Виртуальная машина за NAT
Операционная система Almalinux 8.5
Установочный пакет zcs-9.0.0_OSE_RHEL8_latest-zextras
Проброшены порты: 25,80,110,143,443,465,587,993,995,5222,5223,9071,7071,8443

И так! Погнали!

Предварительная настройка перед установкой Zimbra

Настройте А и MX записи в зоне DNS для вашего почтового домена. Например mail.less-it.ru.

Теперь установим нужные пакеты:

yum update -y
yum -y install wget curl sed mc tar chrony openssh-clients perl-core unzip libaio libstdc++.so.6 nmap-ncat rsyslog sysstat net-tools bind-utils

Отключаем фаервол и selinux:

sed -i s/'SELINUX='/'#SELINUX='/g /etc/selinux/config
echo 'SELINUX=disabled' >> /etc/selinux/config
setenforce 0
service firewalld stop
service iptables stop
service ip6tables stop
systemctl disable firewalld
systemctl disable iptables
systemctl disable ip6tables

Если ваш сервер находится не за NAT, то фаервол нужно настроить:

firewall-cmd --permanent --add-port={25,80,110,143,443,465,587,993,995,5222,5223,9071,7071,8443}/tcp
firewall-cmd --reload

Правим файл hosts и hostname:

IPADDR=192.168.5.100
DOMAIN=less-it.ru
HOSTNAME=mail
cp /etc/hosts /etc/hosts.backup
echo "127.0.0.1 localhost" > /etc/hosts
echo "$IPADDR  $HOSTNAME.$DOMAIN $HOSTNAME" >> /etc/hosts
hostnamectl set-hostname $HOSTNAME.$DOMAIN --static

Отключим Postfix и настроим дату:

systemctl stop postfix
systemctl disable postfix
systemctl enable --now chronyd
timedatectl set-timezone Europe/Moscow
chronyc sources

Для CentOS Stream или Almalinux подменим инфу о системе, чтобы не было ошибки при установке ./util/utilfunc.sh: line 2316: print: command not found

cp /usr/lib/os-release $HOME/os-release.bak
cp /etc/centos-release $HOME/centos-release.bak

sudo tee /usr/lib/os-release > /dev/null <<EOF
NAME="CentOS Linux"
VERSION="8"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="8"
PLATFORM_ID="platform:el8"
PRETTY_NAME="CentOS Linux 8"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:8"
HOME_URL="https://centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-8"
CENTOS_MANTISBT_PROJECT_VERSION="8"
EOF

sudo tee /etc/centos-release > /dev/null <<EOF
CentOS Linux release 8.3.2011
EOF

Скачаем и установим Zimbra 9 Open Source Edition by Zextras

Загрузим последний пакет, ссылку на который нам прислали на почту, после заполнения формы по ссылке на сайте zextras.com

А теперь приступим непосредственно к установке Zimbra 9 OSE:

cd
wget https://download.zextras.com/zcs-9.0.0_OSE_RHEL8_latest-zextras.tgz
tar -zxvf zcs-9.0.0_OSE_RHEL8_latest-zextras.tgz
cd zcs-9.0.0_ZEXTRAS_*
./install.sh

При установке нажимаем ответы Y кроме imbra-imapd:

Install zimbra-ldap [Y] Y
Install zimbra-logger [Y] Y
Install zimbra-mta [Y] Y
Install zimbra-dnscache [Y] Y
Install zimbra-snmp [Y] Y
Install zimbra-store [Y] Y
Install zimbra-apache [Y] Y
Install zimbra-spell [Y] Y
Install zimbra-memcached [Y] Y
Install zimbra-proxy [Y] Y
Install zimbra-drive [Y] Y
Install zimbra-imapd (BETA - for evaluation only) [N] N
Install zimbra-chat [Y] Y

Далее вы увидите ошибку DNS ERROR resolving MX for mail.less-it.ru
Здесь нужно ввести ваш домен less-it.ru вместо mail.less-it.ru
Если ошибка появится снова, то просто игнорируем ее.

На следующем шаге требуется задать пароль администратора в пункте 7. Я дополнительно меняю стандартную учетную запись admin@less-it.ru на другую.
По итогу возвращаемся в основное меню клавишей r и принимаем дальнейшую установку клавишей a.

Установка закончится похожим оповещением:

Notify Zimbra of your installation? [Yes] N
Notification skipped
Checking if the NG started running...done.
Setting up zimbra crontab...done.
Moving /tmp/zmsetup.20220301-163836.log to /opt/zimbra/log
Configuration complete - press return to exit

Проверим, что все службы Zimbra запущены:

su - zimbra -c "zmcontrol status"

Восстановим обратно бэкапы файлов о версии ОС:

mv -f $HOME/os-release.bak /usr/lib/os-release
mv -f $HOME/centos-release.bak /etc/centos-release

Если сервер Zimbra находится за NAT, то нужно внести следующие корректировки, чтобы избежать ошибки delivery temporarily suspended: connect to 7025: Connection refused

DOMAIN=mail.less-it.ru
su - zimbra -c "zmprov ms $DOMAIN zimbraMtaLmtpHostLookup native"
su - zimbra -c "zmprov mcf zimbraMtaLmtpHostLookup native"
su - zimbra -c "zmmtactl restart"

Если изменили стандартный порт SSH и словили ошибки в вебморде service.FAILURE Детали:soap:Receiver то укажите это зимбре:

DOMAIN=mail.less-it.ru
SSHPORT=2233
su - zimbra -c "zmprov ms $DOMAIN zimbraRemoteManagementPort $SSHPORT"

Решаем проблему с антивирусом, что делать если zmantivirusctl не запускается.

После введения санкций база ClamAV перестала быть доступна с ip адресов РФ, поэтому придется настроить конфиг через прокси.

Раскомментируйте нужные настройки прокси сервера в конфигурации:

mcedit /opt/zimbra/conf/freshclam.conf.in
HTTPProxyServer укажите адрес
HTTPProxyPort укажите порт
HTTPProxyUsername логин при необходимости
HTTPProxyPassword пароль при необходимости

Перезагрузите сервер для корректного применения настроек.

su - zimbra -c "zmcontrol restart"

Настроим наш почтовый сервер

Все команды будем выполнять от пользователя Zimbra

su - zimbra

Установим размер почтовых сообщений на 20 мб:

zmprov modifyConfig zimbraMtaMaxMessageSize 20971520

Блокировка вложений по расширению:

zmprov mcf +zimbraMtaBlockedExtension asd +zimbraMtaBlockedExtension bat +zimbraMtaBlockedExtension cab +zimbraMtaBlockedExtension chm +zimbraMtaBlockedExtension cmd +zimbraMtaBlockedExtension com +zimbraMtaBlockedExtension cpl +zimbraMtaBlockedExtension cpgz +zimbraMtaBlockedExtension dll +zimbraMtaBlockedExtension do +zimbraMtaBlockedExtension exe +zimbraMtaBlockedExtension hlp +zimbraMtaBlockedExtension hta +zimbraMtaBlockedExtension js +zimbraMtaBlockedExtension jse +zimbraMtaBlockedExtension lnk +zimbraMtaBlockedExtension ocx +zimbraMtaBlockedExtension pif +zimbraMtaBlockedExtension reg +zimbraMtaBlockedExtension scr +zimbraMtaBlockedExtension shb +zimbraMtaBlockedExtension shm +zimbraMtaBlockedExtension shs +zimbraMtaBlockedExtension vbe +zimbraMtaBlockedExtension vbs +zimbraMtaBlockedExtension vbx +zimbraMtaBlockedExtension vxd +zimbraMtaBlockedExtension wsf +zimbraMtaBlockedExtension wsh +zimbraMtaBlockedExtension xl
zmprov mcf zimbraMtaBlockedExtensionWarnAdmin TRUE
zmprov mcf zimbraMtaBlockedExtensionWarnRecipient TRUE

Настройка блокировок на основе DNS:

По умолчанию в Zimbra OSE включены проверки «Имя хоста в приветствии нарушает стандарт RFC (reject_invalid_helo_hostname)» и «В адресе отправителя должно быть указано полное доменное имя (reject_non_fqdn_sender)». Эти две настройки нередко приводят к ложно-положительным срабатываниям. Поправим на более оптимальный вариант.

zmprov mcf +zimbraMtaRestriction reject_non_fqdn_sender
zmprov mcf +zimbraMtaRestriction reject_unknown_sender_domain
zmprov mcf -zimbraMtaRestriction reject_invalid_helo_hostname

Настроим черные списки:

RBL — список, который содержит данные об IP-адресах спам-серверов:

zmprov mcf +zimbraMtaRestriction "reject_rbl_client zen.spamhaus.org"
zmprov mcf +zimbraMtaRestriction "reject_rbl_client b.barracudacentral.org"

RHSBL — данные о доменах, занимающихся рассылкой спама:

zmprov mcf +zimbraMtaRestriction "reject_rhsbl_client dbl.spamhaus.org"

Список обратных RHSBL клиента:

zmprov mcf +zimbraMtaRestriction "reject_rhsbl_reverse_client dbl.spamhaus.org"

Список RHSBL отправителя:

zmprov mcf +zimbraMtaRestriction "reject_rhsbl_sender dbl.spamhaus.org"

Настройка dmark, dkim и spf записей для Zimbra 9

Настройка DKIM подписи

su - zimbra -c "/opt/zimbra/libexec/zmdkimkeyutil -a -d less-it.ru"

Вывод будет примерно таким:

DKIM Data added to LDAP for domain less-it.ru with selector E3915584-A7228-11E11-B5A4-A8336ABG106F
Public signature to enter into DNS:
E3915584-A7228-11E11-B5A4-A8336ABG106F._domainkey IN      TXT     ( "v=DKIM1; k=rsa; "
          "p=MIIBIjANBgkqhkiG9w0BAQEFKKOAAQ8AMIIBCgKCAQEAyLuSkE3vw1n42MLEVwuTMKkNFEEPcj1ShnxB5WaeMbYCQTY+C3hnOH5OGJ9SLtBHrS+bDmdpqk9FSf/Ra/a3mrhx4YGcDxtUjdqwjrw9c1WQbGNm4GYislG9yEIQ8J7uPsBKWeGueA82p6SMeG2ihR+2hyhUKWmf0x3z8BVHa12BCfRbOWoKDGqLwB/r1bXvGJlM56OkTiWh2K"
          "dX2Jtfg44a5iegkZn7VJo9bWeqtiGjZQ/buwJhTHN+uEjtBZOe/TRW8R9e3y1siYHIs08p+mrfzaOBPV8hFVzAAjkAQb4w42Z8PeGb2leKH5NhhznfDaHtvLO6s0mXnEj11x+y9QIDJAAB" )  ; ----- DKIM key E3915584-A7228-11E11-B5A4-A8336ABG106F for less-it.ru

Теперь создайте новую TXT запись в DNS зоне хостинга:

Имя TXT:
E3915584-A7228-11E11-B5A4-A8336ABG106F._domainkey

И содержимое записи без кавычек:
v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFKKOAAQ8AMIIBCgKCAQEAyLuSkE3vw1n42MLEVwuTMKkNFEEPcj1ShnxB5WaeMbYCQTY+C3hnOH5OGJ9SLtBHrS+bDmdpqk9FSf/Ra/a3mrhx4YGcDxtUjdqwjrw9c1WQbGNm4GYislG9yEIQ8J7uPsBKWeGueA82p6SMeG2ihR+2hyhUKWmf0x3z8BVHa12BCfRbOWoKDGqLwB/r1bXvGJlM56OkTiWh2KdX2Jtfg44a5iegkZn7VJo9bWeqtiGjZQ/buwJhTHN+uEjtBZOe/TRW8R9e3y1siYHIs08p+mrfzaOBPV8hFVzAAjkAQb4w42Z8PeGb2leKH5NhhznfDaHtvLO6s0mXnEj11x+y9QIDJAAB

Настройка SPF записи

less-it.ru. IN TXT «v=spf1 ip4:111.111.111.111 a mx -all»

Запись означает отклонять все письма для домена less-it.ru, КРОМЕ отправленных с указанного ip-адреса — 111.111.111.111 и ip-адресов, указанных в A и MX записях.

Настройка DMARC

Правила сообщающие серверу-получателю что делать, если записи spf или dkim не совпали:

none — просто регистрировать сообщения для отчета, с самими сообщения ничего не делать;
quarantine – помечать такие сообщения как спам;
reject – отклонить получение сообщения на уровне SMTP.

_dmarc.less-it.ru IN TXT "v=DMARC1; p=none; rua=mailto:postmaster@less-it.ru"

Дополнительная информация по настройке:

Настройку fail2ban для Zimbra 9 можно подробно посмотреть в моей прошлой статье.
Настройка SSL сертификата от LET’S ENCRYPT так же уже рассматривалась. (в статье скрипт автонастройки и автообновления сертификата).
Мигрировать почту можно с помощью утилиты IMAPSYNC.
Автоматизируйте создание почтовых аккаунтов с помощью скрипта.

1 комментарий к “Установка почтового сервера Zimbra 9 by Zextras”

  1. Что-то не получилось поставить на Almalinux 8.6.
    Downloading packages (11):
    zimbra-core-components
    zimbra-ldap-components
    zimbra-mta-components
    zimbra-dnscache-components
    zimbra-snmp-components
    zimbra-jetty-distribution
    zimbra-store-components
    zimbra-apache-components
    zimbra-spell-components
    zimbra-memcached
    zimbra-proxy-components
    …done

    Removing /opt/zimbra
    Removing zimbra crontab entry…done.
    Cleaning up zimbra init scripts…done.
    Cleaning up /etc/security/limits.conf…done.

    Finished removing Zimbra Collaboration Server.

    Installing repo packages (11):
    zimbra-core-components
    zimbra-ldap-components
    zimbra-mta-components
    zimbra-dnscache-components
    zimbra-snmp-components
    zimbra-jetty-distribution
    zimbra-store-components
    zimbra-apache-components
    zimbra-spell-components
    zimbra-memcached
    zimbra-proxy-components

    ERROR: Unable to install required packages
    Fix the issues with remote package installation and rerun the installer

    Ответить

Оставьте комментарий