Я установил Amazon SES, подтвердил свой домен и получил разрешение на работу в производственном режиме. Когда электронное письмо из внешнего мира отправляется на адрес в моем домене, мой сервер пересылает его обратно в учетную запись Gmail, но пересылка отклоняется Amazon SES с ошибкой
Email address is not verified
Например, если кто-то из yahoo.com отправляет мне электронное письмо на адрес «me@mydomain.com», и это электронное письмо сразу же пересылается на «me@gmail.com» из-за записи в / etc / aliases, SES будет отклонение электронной почты на gmail.com, даже если "mydomain.com" является подтвержденным доменом. Когда я включаю подробный журнал в Postfix для подключения к gmail.com, оказывается, что письмо отправлено с yahoo.com и направляется на gmail.com - ни один из них не является моим доменом. Он жалуется на то, что письмо отправлено с yahoo.com? Если это так, то могу ли я использовать SES при ретрансляции почты из внешних доменов через мой домен в другой домен (gmail)?
Однако он работает нормально, если я отправляю электронное письмо из своего домена на адрес Gmail.
Вот строчка в /var/log/maillog
где сервер SES отклоняет пересылку на gmail.com:
Apr 15 02:11:43 ip-10-194-190-140 postfix/smtp10191: 9013922528: to=<myaddress@gmail.com>, orig_to=<myaddress@mydomain.com>, relay=email-smtp.us-east-1.amazonaws.comhttp://54.243.71.143:25, delay=0.32, delays=0.01/0/0.11/0.2, dsn=5.0.0, status=bounced (host email-smtp.us-east-1.amazonaws.comhttp://54.243.71.143 said: 554 Message rejected: Email address is not verified. (in reply to end of DATA command))`
А вот строки, которые я добавил в /etc/postfix/main.cf:
relayhost = email-smtp.us-east-1.amazonaws.com:25
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_use_tls = yes
smtp_tls_security_level = encrypt
smtp_tls_note_starttls_offer = yes
smtp_tls_CAfile = /etc/ssl/certs/ca-bundle.crt
Когда возникает эта проблема, куда попадает электронное письмо? Письмо принимается моим сервером Postfix для «me@mydomain.com», но пересылка на gmail.com отклоняется Amazon SES. Но электронное письмо не находится в очереди исходящей почты на моем сервере, его нет в почтовом ящике моей учетной записи на моем сервере, и оно не было возвращено исходному отправителю (в yahoo, в моем примере выше). Куда оно делось?
Например, вы подтвердили ваш домен example.com. Сейчас, something@yahoo.com отправляет электронное письмо на myaccount@example.com. Postfix с радостью принимает его, и из-за файла псевдонима postfix отправит его otheraccount@gmail.com.
Проблема в том, что postfix использует something@yahoo.com так как отправитель конверта в транзакции SMTP. Это желаемое поведение постфикса по умолчанию. Цель состоит в том, чтобы не потерять информацию об отправителе, когда GMAIL получит это письмо от something@yahoo.com. К сожалению, Amazon SES разрешает использовать только домен отправителя конверта как example.com.
Из нить упомянутый OP в комментарии, есть несколько решений, позволяющих изменить отправителя конверта, чтобы он перешел на ограничение Amazon SES. Одно из возможных решений - использовать sender_canonical_maps. По умолчанию postfix перепишет и отправителя в конверте, и в заголовке. При правильной настройке sender_canonical_classes, postfix перепишет только конверт.
В /etc/postfix/main.cf
, Добавить
sender_canonical_maps = regexp:/etc/postfix/sender_canonical
sender_canonical_classes = envelope_sender
В /etc/postfix/sender_canonical
, Добавить
/.*/ mysenderaddress@example.com
Проблема в том, что ваш первоначальный отправитель неизвестен. Один из способов получить оригинал - добавить действие check_sender_access как предложил автор Postfix.
В /etc/postfix/main.cf
, Добавить
smtpd_data_restrictions = check_sender_access pcre:/etc/postfix/sender_access
В /etc/postfix/sender_access
, Добавить
/(.*)/ prepend X-Envelope-From: <$1>
Эти настройки добавят X-Envelope-From
заголовок, который будет содержать исходный адрес электронной почты отправителя.
По умолчанию postfix перебрасывает это сообщение исходному отправителю (адресу Yahoo). Вы можете отследить это, подписавшись на mail.log после отказа. Конечно, некоторые настройки постфикса могут подавить возврат сообщения, или, возможно, Yahoo молча отклонит его.