Назад | Перейти на главную страницу

Условное переписывание заголовков From и Reply-To в Postfix

У меня есть веб-приложение, работающее на Amazon AWS, и оно использует Amazon SES для отправки электронных писем. Одна из вещей, которую я действительно хочу, чтобы эта система делала, - это иметь возможность пересылать электронные письма на определенные адреса от любого, кто их отправляет, например, если какой-то случайный человек отправляет электронное письмо на contact@mysite.com, тогда я хочу, чтобы он пересылал его на мой личный адрес электронной почты. .

Я пытался сделать это с псевдонимами, но это не сработало из-за ограничений в Amazon SES, которые не позволяют мне отправлять почту от непроверенных отправителей. Он отлично работает, если я пишу на contact@mysite.com с подтвержденного адреса электронной почты, но не с непроверенного адреса.

Итак, я хотел бы попытаться переписать заголовки From и Reply-To в любых сообщениях, отправляемых на contact@mysite.com (а также на другие адреса, такие как support@mysite.com). Я хотел бы переместить исходный заголовок From в заголовок Reply-To, а затем изменить заголовок From на no_reply@mysite.com (или что-то вроде этого). Например:

From: "Bruce Wayne" <bruce@batman.com>
To: "MySite Support" <support@mysite.com>

Станет

From: "Mail Services" <no_reply@mysite.com>
Reply-To: "Bruce Wayne" <bruce@batman.com>
To: "MySite Support" <support@mysite.com>

У меня есть адрес support@mysite.com, указанный в файле псевдонимов, и он преобразует его в мой личный адрес электронной почты. Я не уверен, как header_checks повлияет на псевдонимы или что-то еще, что необходимо для решения этой проблемы.

Существует также общий псевдоним, который отправляет другие электронные письма в мое веб-приложение, поэтому весь этот материал по переписыванию заголовков - это действительно то, что мне нужно / нужно только для очень конкретных адресов, как описано выше.

Переписывание одного заголовка с использованием регулярного выражения кажется достаточно простым, но я не уверен в этом:

  1. условная перезапись на основе адреса заголовка To и
  2. перезапись заголовка Reply-To на основе значения заголовка From.

Может ли кто-нибудь дать мне несколько советов о том, как решить эти две проблемы? Или, если я неправильно смотрю на эту проблему, было бы очень полезно любое направление.

ОБНОВЛЕНИЕ - я как-то пропустил, что в header_checks есть операторы if / endif. Я пытаюсь сделать что-то подобное, но мои проверки заголовков, похоже, ничего не делают:

if /^To: (support@mysite.com|contact@mysite.com)/
/^From:(.+@.+).*$/ PREPEND Reply-To:$1
/^From:(.+@.+).*$/ REPLACE From: no_reply@mysite.com
endif

Я добавил в main.cf следующую строку:

header_checks = pcre:/etc/postfix/header_checks

Неясно, должен ли я размещать этот файл по почте. Я пробовал и делать, и не делать, и это не имело значения.

Есть ли что-то очевидное, что я здесь делаю неправильно?

Шаблон IF соответствует той же строке, что и другие шаблоны между IF и ENDIF, поэтому вы не можете смешивать заголовки To: и From: в операторе. См. ОШИБКИ на странице руководства header_checks (5).

Хотя я не тестировал вашу конкретную настройку, я почти уверен, что регулярное выражение To должно соответствовать полному заголовку. То есть мне кажется, что вы соответствуете только тому случаю, когда есть пустой адрес электронной почты. Если вы хотите сопоставить 'To: "MySite Support" <support@mysite.com>', тогда вам придется использовать:

if /^To:.*(support@mysite.com|contact@mysite.com)/

или что-то более сложное, исключающее "someprefix_support@mysite.com" и тому подобное.