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

Postfix и Amazon SES - пересылка писем - проблема с заголовком Delivered-To

Я использую postfix, используя Amazon SES в качестве почтового транспорта. Почта отправляется нормально, однако, когда я получаю почту и пытаюсь переслать ее с использованием виртуального псевдонима, я получаю эту ошибку в mailog:

 (Command died with status 1: "/ses/ses-send-email.pl". Command output: Illegal header 'Delivered-To'. )

Я вижу, что SES не поддерживает заголовок Delivered-To, так как я могу переслать электронную почту? У меня softbounce включен, если это что-то значит, может, отключение сработает?

Я знаю, что этому вопросу уже год, но зачем использовать сценарий, когда Postfix отлично справляется с ретрансляцией через SES, используя SMTP.

Вы можете настроить свой relayhost если единственное отправленное электронное письмо отправлено от проверенного отправителя или проверенного домена, или вы можете использовать sender_dependent_relayhost_maps ретранслировать только проверенные домены и отправителей.

В любом случае вы должны начать с установки пароля SASL для SMTP AUTH. я использую /etc/postfix/sasl_password и он должен иметь следующий формат:

email-smtp.us-east-1.amazonaws.com    SES-USER:SES-USER-PASSWORD

Обновите, чтобы использовать SMTP-хост из вашей консоли AWS SES и соответствующие учетные данные SES SMTP. Далее вам нужно настроить параметры клиента SMTP SASL в /etc/postfix/main.cf добавив следующее:

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_password
smtp_sasl_security_options=noanonymous
smtp_sasl_mechanism_filter = login

Теперь беги postmap /etc/postfix/sasl_password и все готово. Теперь вам нужно решить, все ли вы ретранслируете или только проверенных отправителей / доменов. Если ретранслируете все, просто добавьте следующее в свой main.cf:

relayhost = email-smtp.us-east-1.amazonaws.com

С другой стороны, если вы хотите отправлять только проверенных отправителей / доменов, добавьте в свой main.cf вместо:

sender_dependent_relayhost_maps = hash:/etc/postfix/relayhost_maps

Затем в /etc/postfix/relayhost_maps добавьте подтвержденных отправителей / доменов в следующем формате:

verified@example.com    email-smtp.us-east-1.amazonaws.com
@example.net            email-smtp.us-east-1.amazonaws.com

Запустите этот файл через postmap /etc/postfix/relayhost_maps и сделать postfix reload и вы должны отправлять электронные письма через SES.

Вы можете указать prepend_delivered_header = file чтобы запретить вставку заголовка Delivered-To при пересылке. Видеть документация для подробностей.

Я использую действие header_checks и REPLACE в постфиксе следующим образом:

/^(Delivered-To:.*)$/ REPLACE X-$1

Вы можете отредактировать ses-send-email.pl, чтобы преобразовать недопустимые заголовки в X-заголовки.

Посмотрите здесь образец кода: http://www.evanhoffman.com/evan/2011/08/02/amazon-ses-illegal-headers-with-ses-send-email-pl-followup/