• Установка chan_sccp на Asterisk 18 + FreePBX на Debian 10.

    Для памятки опишу как установить модуль chan_sccp в FreePBX на базе Asterisk 18.

    Описывать конфиги и настройку не буду (по крайней мере на момент написания статьи), вся исчерпывающая информация тут — https://github.com/chan-sccp

     

    Устанавливаем необходимые для успешной сборки пакеты и скачиваем chan_sccp:

    apt-get install git build-essential make install-headers -y
    
    cd /opt/
    git clone https://github.com/chan-sccp/chan-sccp.git chan-sccp
    cd /opt/chan-sccp
    

    Посмотрим какая версия Asterisk установлена, чтобы для нее сконфигурировать chan_sccp:

    asterisk -rx "core show version"

    Конфигурируем, компилируем и устанавливаем:

    ./configure --with-asterisk-version=18.7
    make
    make install

     

    После установки обязательно отключаем модуль chan_skinny.so и включаем chan_sccp.so в GUI FreePBX в модули Asterisk.

    Читать далее

  • Не доставляются письма 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.* \ 7.* на Debian 10 Buster

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

     

    Устанавливаем необходимые зависимости и добавляем 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

     

    В случае если используется Debian 11, то apt-key устарела и необходимо самостоятельно добавлять файлы gpg в папку /etc/apt/trusted.gpg.d/ при помощи утилиты gpg.

    Выполнить импорт ключа утилитой gpg можно так:

    wget -qO - https://packages.sury.org/php/apt.gpg | gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/sure.gpg --import

     

     

    Установка PHP.

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

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

     

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

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

    sudo update-alternatives --set php /usr/bin/php8.2

     

    Установка PHP расширений.

    Чтобы установить расширения PHP, используйте следующий синтаксис команды (прим. установим модуль mysql):

    sudo apt-get install php8.2-mysql

    Можно так же пакетно установить модули PHP в случае если необходимо:

    sudo apt-get install php8.2-{mysql,cli,common,imap,ldap,xml,fpm,curl,mbstring,zip}

    Чтобы проверить загруженные модули PHP, используем команду:

    php -m

     

     

    Читать далее

  • 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 --disable-ipv6 --enable-removal-policies="lru,heap" -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:

    Читать далее