
В настоящее время я работаю над веб-приложением и хочу создать веб-форму, чтобы пользователи могли писать электронные письма через нее. Таким образом, им нужно будет указать свой адрес электронной почты и сообщение, и после нажатия кнопки «Отправить» мое веб-приложение отправит электронное письмо получателям, используя их адрес электронной почты в заголовке FROM
. Процесс отправки, конечно же, выполняется с помощью моей собственной службы SMTP, поскольку у меня нет доступа к почтовым серверам посетителей моего веб-сайта.
Теперь я слышал, что это, вероятно, плохая идея, потому что эти письма, скорее всего, будут отклонены серверами получателей. Однако я пока не совсем понимаю, почему это так и как работает этот процесс. Я узнал, что две наиболее используемые технологии антиспама и спуфинга, используемые сегодня для электронной почты, этоДКИМиСПФ.
Поэтому мне хотелось бы понять, почему именно письма будут отклонены и как здесь помогут DKIM/SPF.
Итак, начнем с SPF:
Насколько я понимаю, сервер получателя будет проверять IP-адреса, которым разрешено отправлять почту, используя домен в заголовке MAIL_FROM
и систему DNS. Теперь, с моим примером выше, когда я отправляю письма в веб-приложении с заголовком, FROM
установленным на eg [email protected]
(это адрес, установленный посетителем моего веб-сайта), это не должно (?) влиять на MAIL_FROM
заголовок. Поскольку письмо будет отправлено через мою службу электронной почты, заголовок MAIL_FROM
будет содержать мой домен и, насколько я понимаю, должно быть возможно отправлять почту и передавать SPF.
Другая технология защиты от спама — DKIM:
Он подпишет письмо, а сервер получателя будет искать в DNS правильный открытый ключ для проверки подписи. Здесь я не уверен, как именно это делается. Я знаю, что заголовок FROM
будет частью подписи, но как сервер получателя проверяет DKIM? Он снова смотрит на DNS из MAIL_FROM
заголовка? Если да, я также мог бы передать DKIM с моим примером выше, это правильно? Или иметь домен MAIL_FROM
и FROM
быть идентичным? Я немного запутался.
Итак, теперь я понимаю, что и DKIM, и SPF не должны быть проблемой для моего веб-приложения. Почему же все еще говорят, что это плохая идея, и письма, скорее всего, будут отклонены? Или я не понял DKIM правильно?
Мой главный вопрос: как именно сервер получателя определит, отклонено ли электронное письмо?
решение1
Нет способа быть уверенным. Вы можете только догадываться, пока администратор MX не скажет вам, в чем проблема.
Отклонение сообщения может быть основано на любой информации, найденной внутри сообщения, в процессе передачи или в любом месте в Интернете, включая:
- IP-адрес/подсеть MTA
- MTA rDNS и FCrDNS
- MTA FQDN из rDNS или HELO
- Список DNSBL MTA
- другая информация о MTA FQDN или домене отправителя, доступная в Интернете
- история предыдущих подключений и сбоев
- MAIL FROM адрес или домен
- заголовок ОТ адреса или домена
- методы авторизации, такие как SPF, DKIM, DMARC
- ключевые слова или последовательности в теме или тексте письма
- эвристическая оценка текста и заголовков письма
Настройка активного MX/MTA не должна быть легкомысленной. Из-за существенного и непрерывного спама существует множество практик, которым нужно следовать, иначе вы получите отказы или окажетесь в куче спама. Самый простой способ — использовать сервер вашего интернет-провайдера в качестве смарт-хоста — сначала вам нужно будет ознакомиться с их политикой.
Кроме того, вы не можете использовать «чужие» домены отправителя из вашей системы, если вы не были авторизованы на это. Подделка адресов отправителя сразу же ставит вас в угол злонамеренного спамера. Кроме того, вы не можете просто доверять всему, что ваши пользователи отправляют при регистрации или в любое другое время. Если вы не подтвердите адрес электронной почты, ваш сервис будет подвергнут злоупотреблениям уже через несколько часов.