Предположим, я зарегистрировал адрес электронной почты, например, в Gmail. Я подтверждаю свой адрес (не домен) в Amazon Simple Email Service. Затем я отправляю электронные письма с этого адреса через Amazon.
Кто на самом деле отправляет? Amazon или Gmail? Как Amazon может подключиться к Gmail и любому другому почтовому сервису, когда их так много? Предоставляет ли Gmail какой-либо API, соответствующий какому-либо протоколу, чтобы он мог использовать свои собственные адреса?
Или Amazon просто все делает сама и притворяется Gmail? Если да, то что мешает мне развернуть собственный почтовый сервер и без проверки выдать себя за кого-то@gmail.com?
ОБНОВЛЕНИЕ: похоже, я не смог правильно сформулировать свой вопрос. Если я подделаю from
поле получатель забанит меня. Amazon не забанен. Зачем? Я подумал, что, может быть, есть какое-то хитрое техническое решение, которое не даст его забанить. Разве это не что иное, как репутация Amazon? Amazon просто договорился об этом путем устных переговоров с почтовыми службами? Это не очевидно. Достаточно ли хороша проверка только адреса? Или это действительно недостаточно надежно? В документации Amazon не упоминается, что это ненадежно. Разве это не важно?
Электронные письма отправляются с использованием Протокол SMTP который берет свое начало в начале 80-х. В те дни все были подключены к Интернет в значительной степени доверяли друг другу, это была академическая / исследовательская сеть. Следовательно, благодаря такому происхождению протокол SMTP практически не обеспечивает защиты от текущих угроз - спама, фишинга, вирусов, кражи личных данных и т. Д. Как и многие другие протоколы той эпохи, которые по-прежнему составляют основу современного Интернета (DNS, HTTP , BGP и т. Д.) Авторы этих протоколов не ожидали, что кто-то попытается злоупотребить ими, и не встраивали никаких средств защиты.
Поэтому с помощью простого SMTP я могу отправить вам электронное письмо, которое, похоже, пришло из ваш адрес gmail, с адреса president@whitehouse.gov или с любой другой адрес, который я выберу. Сам SMTP позволяет это, а SES использует SMTP. Конечно, потому что это протокол электронной почты.
В самом деле, этим можно легко злоупотребить - вот почему со временем были разработаны некоторые средства защиты: DKIM, SPF и другие. Однако они не являются обязательными и зависят от правильной конфигурации. обе со стороны владельца домена и на стороне получателя. Вы были бы удивлены, сколько доменов полностью незащищены.
Итак, чтобы подвести итог - Amazon SES отправляет электронные письма по протоколу SMTP и, как любой другой сервер SMTP, может «выдавать себя за другое лицо» любого адреса отправителя, который им нравится.
Очевидно, что они не дадут вам полностью бесплатную поездку, поэтому, прежде чем они отправят какие-либо электронные письма от вашего имени, вы должны доказать, что вы контролируете адрес отправителя или домен. Но это чисто политика, навязанная Amazon, технически они могут использовать любой адрес отправителя, если захотят.
С другой стороны: отправка как something@gmail.com через SES может быть ненадежной на 100%, поскольку на gmail.com настроены SPF и DKIM, а AWS SES не может подделать эти средства защиты. Но это поверх SMTP, и получатель тоже должен его поддерживать. Если получатель не проверяет DKIM и SPF, письмо будет отправлено.
Также - имеет значение репутация IP-адреса отправителя. Любой персональный SMTP-сервер, вероятно, будет иметь худшую репутацию IP-адреса, чем массивный доверенный сервис, такой как SES.
Все эти факторы влияют на оценку спама. Если все остальное (включая представителя IP) говорит, что это не спам, неудачная проверка SPF, вероятно, не опровергнет. Вот почему ваше «технически недействительное» электронное письмо от SES проходит - потому что все остальное, кроме SPF, похоже, в порядке. Оценка спама - сложная тема.
Для лучшие результаты используйте ваш собственный домен в качестве отправителя и настройте его запись SPF для включения / разрешения отправки с серверов SES.
Надеюсь, это объясняет это :)
Слишком долго, чтобы комментировать, но чтобы повторить и расширить мой предыдущий комментарий: сообщение, которое получат люди, под капотом будет выглядеть так: «Amazon отправил это сообщение от имени», например, AT gmail.com - отправляйте ответы прямо на этот адрес » и Amazon не должен ничего подделывать, поскольку он не притворяется Gmail или любым другим доменом, что касается SMTP, сообщение будет из домена Amazon.
Как и обычные электронные письма, электронная почта SMTP имеет два разных набора адресной информации: заголовки конверта (например, адреса, напечатанные на внешней стороне конверта), которые используются серверами SMTP для маршрутизации и доставки электронной почты, и «обычный» заголовки, которые являются частью почтового сообщения и которые читаются и интерпретируются только пользователем в его почтовом клиенте / веб-почте, точно так же, как адрес, прикрепленный к приветствию в начале физического письма. В отличие от почтового отделения, SMTP обычно выбрасывает большую часть конверта, прежде чем передать сообщение пользователю.
В SMTP-конверте Amazon будет использовать свой собственный домен и уникальное имя почтового ящика в своем домене, которое соответствует вашей учетной записи.
В почтовом сообщении будет From:
и Reply-To:
заголовок с вашим адресом Gmail, но Return-Path:
с адресом Amazon.
Поскольку отправителем конверта является домен Amazon, а SPF записи, которые будут использоваться, будут для отправителя конверта, сообщение пройдет проверку SPF. 1 Поскольку проверки SPF пройдены, шансы на то, что сообщение будет доставлено, намного выше.
(А Amazon также может добавить к сообщению подпись DKIM для / из своего собственного домена, увеличивая шансы доставки. Однако подпись не будет правильно выровнена.)
Это может лучше проиллюстрировать простой сеанс электронной почты telnet:
[user@amazon ~]$ telnet gmail-smtp-in.l.google.com 25
Trying 74.125.128.27...
Connected to localhost.
Escape character is '^]'.
<<< 220 mx.google.com ESMTP
helo Amazon
<<< 250 mx.google.com Hello Amazon [127.0.0.1], pleased to meet you
MAIL FROM:uuid@Aamzon
<<< 250 2.1.0 uuid@Amazon... Sender ok
RCPT TO:user@gmail.com
<<< 250 2.1.5 user@gmail.com... Recipient ok
DATA
<<< 354 Enter mail, end with "." on a line by itself
Subject: test
From: somebody@gmail.com
Reply-To: somebody
To: user@gmail.com
Return-Path: uuid@Amazon
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=Amazon
this is the email message you will see in your mailbox.
It has two lines and will appear to be from **somebody@gmail.com**.
.
<<< 250 2.0.0 t6HITQXA020072 Message accepted for delivery
quit
Путаница здесь вызвана неучетом различия между отправителем конверта (иногда называемым «ПОЧТА ОТ») и заголовком (иногда называемым «От» :).
SPF распространяется только на исходный конверт. Подробности вы можете увидеть в документации. Есть две настройки. Один требует, чтобы вы владели доменом, поэтому он к вам не относится. Вы используете другую настройку:
... использовать домен MAIL FROM по умолчанию Amazon SES и вообще не публиковать запись SPF. Эта настройка позволяет пройти проверку SPF, поскольку по умолчанию Amazon SES использует собственный домен MAIL FROM для отправки ваших писем.
Теперь это полностью покрывает SPF. Однако, как уже отмечалось, детекторы спама выполняют гораздо больший анализ, в том числе проверяют заголовки, чтобы ваше письмо по-прежнему могло считаться спамом.