В этой статье я разберу полный цикл установки и настройки почтового сервера 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
Добавим доверенную сеть в исключение проверок Amavis:
zmprov mcf zimbraAmavisOriginatingBypassSA TRUE zmantispamctl restart zmantivirusctl restart zmamavisdctl restart zmprov ms `zmhostname` zimbraMtaMyNetworks '127.0.0.0/8 10.0.0.0/8 192.168.1.0/22'
Актуальный список доверенных сетей:
postconf mynetworks zmprov gs `zmhostname` zimbraMtaMyNetworks
Блокировка вложений по расширению:
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"
Что-то не получилось поставить на 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