Перейти к основному контенту

Сокрытие внутренних имен в заголовках писем PMG (версия 9.0.6)

🔍 Проблема

При отправке писем через Proxmox Mail Gateway (PMG) версии 9.0.6 в заголовках писем появляется строка, раскрывающая внутреннюю инфраструктуру:


text
Received: from pmg.domain.local (localhost.localdomain [127.0.0.1])


Необходимо скрыть локальное имя хоста (pmg.domain.local)local) и оставить только публичную информацию.


🧩 Причина

    Фильтр pmg-smtp-filter (встроенный антивирус/спам-фильтр) добавляет заголовок Received при передаче письма от фильтра к локальному Postfix.

    Этот заголовок

    Заголовок формируется на основе короткого имени сервера (результат hostname -s)s) и Search Domain,Domain, заданного в настройках PMG (или в системе). Например:
    Пример: короткое имя pmg,pmg, Search Domain domain.local → заголовок pmg.domain.local.
    local
    .

    Изменение параметров Postfix (myhostname,myhostname, smtp_helo_name)smtp_helo_name) или mailname в PMG не влияет на этот заголовок, так как он генерируется фильтром до передачи письма в очередь Postfix.

    Параметр hide_received скрывает только заголовки с внутренними IP (например, 192.168.x.x)x), но не удаляет запись о локальной передаче через 127.0.0.1.

    1
    .


    Решение (без изменения системного hostname)
    Версия

    PMG 9.0.6 сохраняет стандартную систему шаблонов. Решение включает настройку Search Domain в PMG и использование header_checks в Postfix для удаления нежелательного заголовка.

    1. Включение параметра Hide Internal Hosts

      В веб‑веб-интерфейсе PMG перейдите в Конфигурация → Почтовый прокси → Параметры.
      Параметры
      .

      Найдите опцию Hide Internal Hosts и установите значение Да.
      Да.

      Это удалит заголовки Received,Received, содержащие внутренние IP‑IP-адреса (например, 192.168.30.3)3) и локальные имена хостов.

      2. Настройка Search Domain в PMG

        В веб-интерфейсе PMG перейдите в Конфигурация → Почтовый прокси → Параметры.
        Параметры
        .

        Установите Search Domain в значение вашего публичного домена (например, domain.com)com).

        Это заставит фильтр добавлять к короткому имени сервера указанный домен (например, pmg.domain.com вместо pmg.domain.local)local).

        3. Создание правил header_checks в Postfix

        Создайте файл /etc/postfix/header_checks:header_checks:

        text
        /Received: from pmg\.domain\.com/ IGNORE

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

        Если требуется заменить на другое имя (например, на mail.domain.com)com), используйте:

        text
        /Received: from pmg\.domain\.com/ REPLACE Received: from mail.domain.com

        4. Подключение header_checks через шаблон PMG

          Скопируйте оригинальный шаблон Postfix в пользовательскую директорию (если не сделано ранее):

          bash
          cp /var/lib/pmg/templates/main.cf.in /etc/pmg/templates/main.cf.in

            Отредактируйте /etc/pmg/templates/main.cf.in,in, добавив в конец строки:

            text
            header_checks = regexp:/etc/postfix/header_checks
            smtp_header_checks = regexp:/etc/postfix/header_checks

              Сохраните файл.

              5. Применение изменений

              bash
              pmgconfig sync --restart 1

              Проверьте, что директивы применились:

              bash
              postconf header_checks
              

              postconf smtp_header_checks

              6. Проверка

              Отправьте тестовое письмо на внешний адрес и проанализируйте заголовки. Строка с pmg.domain.com должна исчезнуть (или замениться, если использовали REPLACE)REPLACE)DKIM-подпись остаётся валидной,валидной, так как удаление служебного заголовка не нарушает подпись.


              📌 Важные замечания

                Файл /etc/hosts можно не менять он остаётся с исходными записями (например, 192.168.30.77 pmg.domain.local pmg)pmg). Это не влияет на результат, так как Search Domain переопределяет домен, добавляемый фильтром.

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

                Шаблоны в /etc/pmg/templates/ сохраняются при обновлении PMG, но после мажорных обновлений рекомендуется сверить их с новыми версиями в /var/lib/pmg/templates/ на предмет необходимых изменений.

                Влияние на DKIM: удаление заголовка Received не нарушает DKIM-подпись, так как подписываются только основные заголовки (From,From, To,To, Subject и др.), а Received обычно не входит в подписподпись.


                🔄 АльтернативныйАльтернативный подход

                Если после изменения Search Domain фильтр генерирует иное имя (например, mail.domain.com)com), скорректируйте правило header_checks соответствующим образом. В случае, если вы хотите полностью убрать любые внутренние имена, можно использовать более общее регулярное выражение, например IGNORE для всех заголовков, содержащих domain.com.com.


                🏁 Итог

                Комбинация настройки Search Domain в PMG 9.0.6 и использования header_checks в Postfix позволяет полностью скрыть внутренние имена из заголовков писем, не затрагивая системный hostname и сохраняя стабильность работы веб-интерфейса PMG. Это решение проверено и гарантированно работает.