Сокрытие внутренних имен в заголовках писем PMG (версия 9.0.6)
🔍 Проблема
При отправке писем через Proxmox Mail Gateway (PMG) версии 9.0.6 в заголовках появляется строка, раскрывающая внутреннюю инфраструктуру:
Received: from pmg.domain.local (localhost.localdomain [127.0.0.1])
Необходимо скрыть локальное имя хоста (pmg.domain.local) и оставить только публичную информацию.
🧩 Причина
-
Фильтр
pmg-smtp-filter(встроенный антивирус/спам-фильтр) добавляет заголовокReceivedпри передаче письма от фильтра к локальному Postfix. -
Заголовок формируется на основе короткого имени сервера (результат
hostname -s) и Search Domain, заданного в настройках PMG (или в системе).
Пример: короткое имяpmg, Search Domaindomain.local→ заголовокpmg.domain.local. -
Изменение параметров Postfix (
myhostname,smtp_helo_name) илиmailnameв PMG не влияет на этот заголовок, так как он генерируется фильтром до передачи письма в очередь Postfix. -
Параметр
hide_receivedскрывает только заголовки с внутренними IP (например,192.168.x.x), но не удаляет запись о локальной передаче через127.0.0.1.
✅ Решение (без изменения системного hostname)
PMG 9.0.6 сохраняет стандартную систему шаблонов. Решение включает настройку Search Domain в PMG и использование header_checks в Postfix для удаления нежелательного заголовка.
1. Включение параметра Hide Internal Hosts
-
В веб-интерфейсе PMG перейдите в Конфигурация → Почтовый прокси → Параметры.
-
Найдите опцию Hide Internal Hosts и установите значение Да.
-
Это удалит заголовки
Received, содержащие внутренние IP-адреса (например,192.168.30.3) и локальные имена хостов.
2. Настройка Search Domain в PMG
-
В веб-интерфейсе PMG перейдите в Конфигурация → Почтовый прокси → Параметры.
-
Установите Search Domain в значение вашего публичного домена (например,
domain.com). -
Это заставит фильтр добавлять к короткому имени сервера указанный домен (например,
pmg.domain.comвместоpmg.domain.local).
3. Создание правил header_checks в Postfix
Создайте файл /etc/postfix/header_checks:
/Received: from pmg\.domain\.com/ IGNORE
Важно: не используйте
^в начале выражения, так как заголовок может содержать начальные пробелы или табуляцию. Достаточно простого совпадения с именем.
Если требуется заменить на другое имя (например, на mail.domain.com), используйте:
/Received: from pmg\.domain\.com/ REPLACE Received: from mail.domain.com
4. Подключение header_checks через шаблон PMG
-
Скопируйте оригинальный шаблон Postfix в пользовательскую директорию (если не сделано ранее):
cp /var/lib/pmg/templates/main.cf.in /etc/pmg/templates/main.cf.in
-
Отредактируйте
/etc/pmg/templates/main.cf.in, добавив в конец строки:
header_checks = regexp:/etc/postfix/header_checks smtp_header_checks = regexp:/etc/postfix/header_checks
-
Сохраните файл.
5. Применение изменений
pmgconfig sync --restart 1
Проверьте, что директивы применились:
postconf header_checks postconf smtp_header_checks
6. Проверка
Отправьте тестовое письмо на внешний адрес и проанализируйте заголовки. Строка с pmg.domain.com должна исчезнуть (или замениться, если использовали REPLACE). DKIM-подпись остаётся валидной, так как удаление служебного заголовка не нарушает подпись.
📌 Важные замечания
-
Файл
/etc/hostsможно не менять — он остаётся с исходными записями (например,192.168.30.77 pmg.domain.local pmg). Это не влияет на результат, так как Search Domain переопределяет домен, добавляемый фильтром. -
Правило без
^необходимо, чтобы учесть возможные пробелы/табуляцию в начале строки заголовка. -
Шаблоны в
/etc/pmg/templates/сохраняются при обновлении PMG, но после мажорных обновлений рекомендуется сверить их с новыми версиями в/var/lib/pmg/templates/на предмет необходимых изменений. -
Влияние на DKIM: удаление заголовка
Receivedне нарушает DKIM-подпись, так как подписываются только основные заголовки (From,To,Subjectи др.), аReceivedобычно не входит в подпись.
🔄 Альтернативный подход
Если после изменения Search Domain фильтр генерирует иное имя (например, mail.domain.com), скорректируйте правило header_checks соответствующим образом. В случае, если вы хотите полностью убрать любые внутренние имена, можно использовать более общее регулярное выражение, например IGNORE для всех заголовков, содержащих domain.com.
🏁 Итог
Комбинация настройки Search Domain в PMG 9.0.6 и использования header_checks в Postfix позволяет полностью скрыть внутренние имена из заголовков писем, не затрагивая системный hostname и сохраняя стабильность работы веб-интерфейса PMG. Это решение проверено и гарантированно работает.
Нет комментариев для отображения
Нет комментариев для отображения