Вопрос или проблема
Этот вопрос основан на этом, который, как мне кажется, здесь подходит лучше, и до сих пор на него не дан ответ.
Аналогично другому автору, я использую файл virtual_alias_map
с моим Postfix для перенаправления всех писем, поступающих на мой домен, пользователю.
Моя виртуальная запись выглядит так:
[email protected] [email protected]
Теперь заголовок X-Original-To
по-видимому для некоторых людей, например, для оригинального автора, показывает [email protected]
. У меня он не показывается вообще, несмотря на то, что в руководстве по Postfix четко указано, что этот заголовок должен быть установлен (но, возможно, при определенных условиях, например, я использую каноническую карту canonical_maps=regexp:/etc/postfix/canonical
с canonical_classes=envelope_sender
для установки другого отправителя, это может быть упущено?). В любом случае, я хочу, чтобы X-Original-To
был установлен таким образом, чтобы поле показывало id почты, с которой это письмо было изначально отправлено:
Пример: Пользователь пытается отправить письмо на [email protected]
. Аккаунт user8
не существует на сервере. Согласно моей виртуальной записи, письмо будет переадресовано на [email protected]
. После этого заголовок X-Original-To
по-видимому либо будет показываться как [email protected]
, либо в моем случае ничего. Я хочу, чтобы он показывался как [email protected]
.
Дополнительная сложность: Моя виртуальная карта имеет несколько записей с разной левой частью, например, несколько разных исходных аккаунтов, таких как user8
или user7
, но правая часть одинакова для всех них. Если несколько из этих левых частей отправлены в копии сразу, X-Original-To
в конечном пересланном письме должен быть установлен только один раз со списком, разделённым запятыми, а не несколько раз с конфликтующими значениями.
Есть ли какой-либо относительно простой способ настроить такой заголовок X-Original-To
?
Ответ или решение
В данной ситуации мы рассматриваем вопрос о корректной настройке заголовка X-Original-To
в почтовом сервере Postfix, особенно в контексте использования virtual_alias_map
для перенаправления электронной почты. Этот заголовок важен, так как он может позволить идентифицировать оригинального получателя письма, что может иметь существенное значение в системах, где происходит массовое перенаправление писем или обслуживание множества виртуальных доменов. Разберем теоретические аспекты этой задачи, приведем примеры и рассмотрим возможные способы решения.
Теоретическая часть
Postfix — это гибкая и мощная система маршрутизации и доставки электронной почты. Одной из ее возможностей является применение "виртуальных" карт (virtual_alias_maps
), которые позволяют перенаправлять письма, поступающие на один адрес, на другой. Это часто используется для управления корпоративной почтой или для управления личной почтой на сервере.
Заголовок X-Original-To
Когда почта перенаправляется, важно сохранить информацию о первоначальном адресате. Для этих целей обычно используется заголовок X-Original-To
. Согласно документации по Postfix, этот заголовок должен автоматически добавляться в письма при переадресации с использованием виртуальных карт. Однако, как упоминается в вашем вопросе, существуют случаи, когда этот заголовок отсутствует. Это может происходить из-за конфликта настроек или специфических условий использования.
При работе с virtual_alias_maps
, бывает полезно комбинировать с другими картами, такими как canonical_maps
, которые могут изменить адрес отправителя или получателя. Однако это может влиять на наличие и содержание некоторых заголовков, в том числе X-Original-To
.
Проблемы и их причины
-
Отсутствие заголовка
X-Original-To
: Это может произойти из-за сложных цепочек перенаправления или если другие настройки (как напримерcanonical_maps
) вмешиваются в процесс обработки заголовков. -
Неправильное значение: Возможные причины включают настройку Postfix, которая может интерпретировать перенаправление ошибочно или оставлять первоначальный адрес, если он каким-то образом сбрасывается.
-
Несколько
X-Original-To
: Когда одна входящая почта вызывает несколько виртуальных пересылок на тот же конечный адрес, может создаться несколько записей заголовка. Это может быть связано с особенностями организации очереди обработки в Postfix и как он управляет событиями доставки.
Примеры
Пример 1: Переписывание адресов с использованием virtual_alias_maps
.
Исходная запись:
user8@domain.com testuser@example.com
user7@domain.com testuser@example.com
При такой настройке письма, отправленные на user8@domain.com
, пересылаются на testuser@example.com
. В идеале заголовок X-Original-To
должен содержать user8@domain.com
.
Пример 2: Использование canonical_maps
.
canonical_maps=regexp:/etc/postfix/canonical
Эта настройка может изменить отправителя или получателя, но на уровне "конверта", что может влиять на реализацию заголовков на уровне данных письма.
Применение: Решение задачи
-
Проверка конфигурации
Убедиться, что в конфигурационных файлах отсутствуют настройки, которые могут удалить или изменить заголовки, такие как агрессивные
cleanup
правила. -
Тестирование пересылки
Провести тестирование пересылки писем с различными комбинациями исходных адресатов, чтобы определить, какие именно условия приводят к пропаданию заголовка.
-
Настройка
header_checks
Можно использовать
header_checks
для принудительного добавления или изменения заголовка на этапе обработки перед доставкой.Пример записи:
/^To:(.*)$/ REPLACE X-Original-To: $1
Такой подход может потребовать учета других заголовков, чтобы эффективно избегать конфликтов.
-
Использование
always_bcc
Если задача не разрешается стандартными методами, как временное решение можно использовать
always_bcc
для контроля всех писем. Это может быть использовано для анализа и последующей обработки писем, чтобы идентифицировать паттерны в случае сложностей.
Заключение
Соответствующее управление заголовком X-Original-To
в Postfix требует понимания взаимодействий между различными картами перенаправления и настройки сервера. Важно помнить о порядке обработки писем и фильтров, а также проводить регулярные тестирования, чтобы в полной мере обеспечить выполнение всех требований. В ситуациях со сложными кейсами иногда требуется использовать дополнительные скрипты или расширения для полной автоматизации контроля заголовков.