Я использую 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/