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

Каноническая карта Postfix для пересылки

Из-за проблем с репутацией IP / домена (мой сервер и домен совсем недавно) мне пришлось использовать Amazon SES в качестве ретранслятора SMTP, чтобы мои письма не помечались как спам.

Моя настройка с Amazon работала нормально, но для меня было невозможно выполнить пересылку почты с помощью Amazon SMTP, потому что адрес заголовка FROM должен быть проверен.

Я решил отправлять только через Amazon письма, отправленные напрямую с моего сервера, и просто использовать свой собственный SMTP для пересылки. (Поскольку письма подписываются другими серверами с хорошей репутацией, даже если письмо отправлено моим сервером, оно не помечается как спам)

Для этого я использовал следующие настройки:

relayhost =
sender_dependent_relayhost_maps = hash:/etc/postfix/relayhost_maps

sender_canonical_maps = regexp:/etc/postfix/sender_canonical
sender_canonical_classes = envelope_sender
smtpd_data_restrictions = check_sender_access pcre:/etc/postfix/sender_access

relayhost_maps:

contact@domain1.tld [email-smtp.eu-west-1.amazonaws.com]:25
@domain2.tld [email-smtp.eu-west-1.amazonaws.com]:25
@domain3.tld [email-smtp.eu-west-1.amazonaws.com]:25
@domain4.tld [email-smtp.eu-west-1.amazonaws.com]:25
@domain5.tld [email-smtp.eu-west-1.amazonaws.com]:25

sender_canonical:

/.*/    no-reply@domain1.tld

sender_access:

/(.*)/  prepend X-Envelope-From: <$1>

Я ретранслирую всю почту своего домена через amazon, за исключением домена domain1, который будет использоваться для пересылки с адресом no-reply@domain1.tld. Мне нужно переписать адрес конверта, чтобы я мог пересылать письма.

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

После дополнительных исследований мне кажется, что я хочу использовать регулярное выражение в файле sender_canonical.

Я попытался написать следующее выражение, но, похоже, что-то не так.

/^((?!@domain1.tld)(?!@domain2.tld)(?!@domain3.tld)(?!@domain4.tld)(?!@domain5.tld).)*$/gm no-reply@domain1.tld

РЕДАКТИРОВАТЬ: я наконец нашел правильный способ написать выражение:

!/@domain1.tld|@domain2.tld|@domain3.tld|@domain4.tld|@domain5.tld/    no-reply@domain1.tld