• Не доставляются письма 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'"

    Читать далее

  • Как установить PHP 8.0 / 7.4 / 7.3 / 7.2 / 7.1 на Debian 10 Buster

    Для памятки себе оставлю, как установить\обновить версии PHP 8.0 / 7.4 / 7.3 / 7.2 / 7.1 на Debian 10 Buster (более чем уверен что все описанное ниже будет применимо для всех deb-like Linux систем).

     

    Добавление PHP репозитория.

    Устанавливаем необходимые зависимости и добавляем ondrej/phpPPA репозиторий:

    sudo apt-get install curl gnupg2 ca-certificates apt-transport-https lsb-release -y
    
    echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/sury-php.list
    wget -qO - https://packages.sury.org/php/apt.gpg | sudo apt-key add -
    sudo apt-get update

     

    Установка PHP.

    Установка PHP следующей командой (в зависимости от необходимой версии, подставляем необходимую):

    sudo apt-get install php7.4 php7.4-cli php7.4-common -y
    Можно устанавливать несколько версий PHP в системе. Каждая версия PHP будет иметь отдельные конфигурационные файлы в каталоге /etc/php/7.X.

     

    Установка версий PHP по умолчанию.

    В случае если установлено несколько версий PHP, то можно установить определенную версию PHP по умолчанию, командой:

    sudo update-alternatives --set php /usr/bin/php7.4

     

    Читать далее

  • 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

    Читать далее

  • Установка Squid 5.5 с поддержкой HTTPS (ssl_bump) на Debian 10 Buster

    Разберем как установить из исходников актуальную (на момент написания статьи) версию кеширующего прокси-сервера Squid 5.5 на Debian 10 Buster.

    ИНФОРМАЦИЯ. Хочу сообщить что ниже описанное руководство, так же применимо к установке младших версии Squid 4, 5.x

     

    Установка прокси-сервера Squid

    Устанавливаем необходимые зависимости для сборки и работы Squid:

    apt-get update
    apt-get install build-essential make libssl-dev libkrb5-dev libldap2-dev libk5crypto3 libsasl2-dev libpam0g libcap2-dev

    Скачиваем и распаковываем исходники Squid:

    cd /opt/
    wget http://www.squid-cache.org/Versions/v5/squid-5.5.tar.gz
    tar -zxvf squid-5.5.tar.gz
    cd squid-5.5

    Выполняем конфигурирование с поддержкой HTTPS:

    ./configure --prefix=/usr --localstatedir=/var --libexecdir=/usr/lib/squid --datadir=/usr/share/squid --sysconfdir=/etc/squid --enable-ssl-crtd --with-openssl --enable-translation --enable-cpu-profiling --disable-dependency-tracking -enable-delay-pools --enable-icmp --enable-linux-netfilter --enable-external-acl-helpers --with-large-files --with-default-user=proxy --with-logdir=/var/log/squid --with-pidfile=/var/run/squid.pid

    Собираем и устанавливаем пакет Squid:

    make
    make install

    Создаем необходимые каталоги, для работы Squid и назначаем для них права доступа:

    mkdir -p /var/log/squid
    mkdir -p /etc/squid/ssl
    
    chown proxy:proxy /var/log/squid
    chown proxy:proxy /etc/squid/ssl
    chmod 700 /var/log/squid
    chmod 700 /etc/squid/ssl

    Создаем стартовый скрипт Squid — /etc/init.d/squid:

    Читать далее

  • Как отключить сетевой IPv6 интерфейс в Linux

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

    Отключать IPv6 будем через ядро системы, это наиболее правильный способ открываем на редактирование файл /etc/sysctl.conf

    # Turn off IPv6
    #
    net.ipv6.conf.all.disable_ipv6 = 1
    net.ipv6.conf.default.disable_ipv6 = 1
    net.ipv6.conf.lo.disable_ipv6 = 1
    ИНФОРМАЦИЯ: Это отключит IPv6 на всех доступных в системе сетевых интерфейсах.

    Если необходимо отключить IPv6 на отдельном взятом интерфейсе (прим. ens192), то указывает только. Если в системе несколько интерфейсов, то добавляем по аналогии строку для каждого дополнительного интерфейса.

    net.ipv6.conf.ens192.disable_ipv6 = 1

    Для вступления изменений в силу, заставим sysctl перечитать файл /etc/sysctl.conf:

    sysctl -p

    Читать далее