Как отправлять электронные письма и не допускать их отнесения к спаму?

Это канонический вопрос о том, как обрабатывать электронные письма, отправленные с вашего сервера, которые классифицируются как спам. Для получения дополнительной информации вы можете найти эти похожие вопросы полезными:

Иногда я хочу отправлять рассылку своим клиентам. Проблема в том, что некоторые письма попадают как спам. В основном с помощью Outlook на клиенте (даже в моем собственном Outlook 2007).

Теперь я хочу знать, что нужно сделать, чтобы создать "хорошие" электронные письма. Я знаю об обратном поиске и т. Д., Но (например), как насчет ссылки отказа от подписки с уникальным идентификатором? Это увеличивает рейтинг спама?

8 ответов

Решение

Убедитесь, что ваши электронные письма не похожи на обычные спам-письма: не вставляйте только большое изображение; убедитесь, что набор символов установлен правильно; не вставляйте ссылки "только IP-адрес". Напишите ваше сообщение так же, как вы написали бы обычное письмо. Сделайте так, чтобы было действительно легко отписаться или отказаться. В противном случае ваши пользователи откажутся от подписки, нажав кнопку "спам", и это повлияет на вашу репутацию.

С технической стороны: если вы можете выбрать свой SMTP-сервер, убедитесь, что это "чистый" SMTP-сервер. IP-адреса SMTP-серверов со спамом часто помещаются в черный список других поставщиков. Если вы не знаете свои SMTP-серверы заранее, рекомендуется установить в приложении параметры конфигурации для управления размерами пакетов и задержкой между пакетами. Некоторые почтовые серверы не принимают большие пакеты отправки или непрерывную активность.

Используйте методы аутентификации электронной почты, такие как SPF и доменные ключи, чтобы доказать, что ваши электронные письма и ваше доменное имя принадлежат друг другу. Приятным побочным эффектом является то, что вы помогаете предотвратить подделку вашего почтового домена. Также проверьте обратный DNS, чтобы убедиться, что IP-адрес вашего почтового сервера указывает на доменное имя, которое вы используете для отправки почты.

Убедитесь, что адрес для ответов на ваши электронные письма являются действительными, существующие адреса. Используйте полное, настоящее имя адресата в поле "Кому", а не только адрес электронной почты (например, "John Doe" <john.doe@example.com>) и отслеживать ваши учетные записи о злоупотреблениях, такие как abuse@example.com и postmaster@example.com.

Автоматически отписываться от получателей вашего сообщения, чьи адреса электронной почты отклоняются, и устанавливать петли обратной связи по жалобам с крупными почтовыми провайдерами и автоматически отписываться от получателей, которые сообщают о вашем сообщении как спам / нежелательная почта. Это будет иметь большое значение для улучшения вашей репутации и доставки.

В этом вопросе упоминается, что основы существуют, но, поскольку мы указываем на это другим как на канонический вопрос, я просто хочу быть уверенным, что мы рассмотрим наши основы.

Эти минимумы по существу необходимы в эти дни:

  1. Убедитесь, что у вас есть прямой и обратный DNS настроен правильно. Почтовый сервер должен идентифицировать себя в обмене HELO/EHLO, это имя должно соответствовать IP-адресу сервера. Точно так же обратный поиск этого IP должен вернуть имя.

  2. Убедитесь, что ваш сервер действительно отправляет имя хоста в этом рукопожатии. Ваш сервер не должен отправлять IP-адрес.

  3. Убедитесь, что ваш IP-адрес не включен ни в один DNSRBL (черный список). Если это так, позаботьтесь об этом.

  4. Проверьте репутацию своего IP с помощью более популярных сервисов репутации (SenderScore сейчас очень популярен, но со временем это может не сохраниться). Эти службы, как правило, содержат рекомендации по улучшению вашей репутации, но они не являются такими же, как RBL.

  5. Не фальсифицируйте заголовки, не врите заголовки и убедитесь, что вы включаете минимальные заголовки в сообщения (Date а также From необходимы, должно быть Subject, Sender, Reply-To, а также To/Cc/Bcc [применимо]). Это одна из моих самых любимых публикаций с действительными информационными бюллетенями, которые я хочу получать в конечном итоге в нежелательной, потому что они имитируют заголовок Outlook Express, пропускают дату или что-то подобное.

При желании вы должны рассмотреть возможность настройки SPF, DKIM и DMARC. Они помогают с доставкой, но не являются обязательными (не большинством почтовых серверов).

К сожалению, существует много разных методов фильтрации, и некоторые крупные почтовые провайдеры не будут публиковать то, что они используют и / или какой вес присваивается различным тестам / фильтрам, поэтому знание, как пройти, сложно. По сути спам заставляет интернет-провайдеров и пользователей сталкиваться с ситуацией, когда им иногда трудно получить доступ к таким законным сообщениям (особенно к массовым сообщениям, таким как ваша рассылка). Я больше не считаю электронную почту надежным способом передачи, который когда-то был на полпути.

Чтобы быть немного менее негативным и более полезным... Поскольку у вас есть конкретные проблемы с конкретным клиентом, может быть, программа может вам сказать. Я не знаю конкретно о outlook, поскольку сам не использую его где-либо, но многие почтовые фильтры вставляют заголовки в сообщения, чтобы перечислить, какие фильтры использовались, каков был результат и какой вес был присвоен этому фильтру. Поэтому, если вы посмотрите на полный источник сообщений, которые они перенесли в нежелательные папки, вы можете найти полезные подсказки. Например, фильтры на основе SpamAssassin вводят заголовки следующей формы:

X-Spam-Flag: YES
X-Spam-Score: 13.371
X-Spam-Level: *************
X-Spam-Status: Yes, score=13.371 tagged_above=-10 required=5.4
    tests=[BAYES_99=3.5, FB_GET_MEDS=0.803, RCVD_IN_SORBS_WEB=0.619,
    RCVD_IN_XBL=3.033, RDNS_NONE=0.1, URIBL_AB_SURBL=1.86,
    URIBL_BLACK=1.955, URIBL_JP_SURBL=1.501]

(этот пример был извлечен из подлинного спам-сообщения в моей куче мусора)

Это не является определенным, хотя байесовская фильтрация и другие методы, включающие обучение пользователей, распространены - поэтому то, что ваши фильтры проходят и терпят неудачу, может заметно отличаться от других людей, даже если клиент был настроен идентично из коробки. Возможно, вам придется подумать о каком-то другом канале для ваших новостей (многие люди пытаются использовать протоколы социальных сетей для этого с разной степенью успеха).

Как говорили другие, при отправке электронного письма вы не хотите выглядеть как спам, но вы не можете точно сказать, что будет или не будет выглядеть как спам, потому что методы разные.

Одна вещь, которую вы, возможно, захотите рассмотреть, - это отправлять своим клиентам электронное письмо по электронной почте для каждого информационного бюллетеня, которое на самом деле содержит краткое описание / приветствие, а затем "нажмите здесь, чтобы просмотреть наш последний информационный бюллетень!" сообщение; таким образом вы можете разместить свое сообщение на веб-сервере, вы уменьшаете размер электронных писем (и загружаете их на свой почтовый сервер) и в качестве бонуса вы можете проверять журналы на своем веб-сервере, чтобы получить обратную связь о том, сколько клиентов на самом деле чтение ваших сообщений против их удаления.

Подробное решение, позволяющее избежать того, чтобы электронные письма определялись как спам и / или не приходили к получателям

Пример ситуации: у вас есть сервер, на котором работает сайт PHP для example.com что необходимо отправлять электронные письма. И вы замечаете, что ваши письма не всегда доставляются. (Большая проблема, если вы владелец магазина, а клиенты не получают письма после покупки!).

Если вы выполните все следующие шаги, это должно решить 99,9% проблем. (Сначала я подумал, что можно сделать только несколько из них, и пропустить DKIM, например, но в конце концов все они были необходимы для решения всех моих проблем).

  1. Прежде всего, кто отправляет электронные письма?

    Когда ваш код PHP отправляет электронные письма, это часто с известной функцией PHP mail(...), Но что делает эта функция под капотом? Давайте запустим test.php страница, содержащая <?php echo ini_get('sendmail_path'); ?>, Вы получите например: /usr/sbin/sendmail -t -i, Хорошие новости, теперь мы знаем, какая программа действительно обрабатывает электронные письма!
    Теперь хитрая информация: название sendmail Могут быть разные программы. Даже если вы видите sendmail на предыдущем шаге вы могли установить sendmail, postfix, exim, qmail и т. д. Давайте сделаем dpkg -S /usr/sbin/sendmail, Ответ postfix: /usr/sbin/sendmail ок это значит у нас postfix установлен.

  2. Посмотри в лог файле /var/mail/www-data знать, какие письма были отправлены неправильно и почему. Это может быть полезно для следующих шагов.

  3. Как упоминалось в блоге Джеффа Этвуда, пришло время взглянуть на записи обратного PTR. (Более подробная информация будет добавлена ​​здесь).

  4. Добавьте следующую строку в конфигурационный файл postfix /etc/postfix/main.cf файл:

    inet_protocols=ipv4
    

    Затем перезапустите постфикс с service restart postfix, Зачем? Потому что у меня были такие проблемы, когда получатель gmail:

    Наша система обнаружила, что это сообщение 550-5.7.1 не соответствует правилам отправки IPv6, касающимся записей PTR и аутентификации 550-5.7.1. Пожалуйста, просмотрите 550-5.7.1 https://support.google.com/mail/?p=ipv6_authentication_error для получения более 550 5.7.1 информации.

    Тогда самым простым решением было переключиться postfix только для ipv4, таким образом, этот шаг 4 (который может быть ненужным для вас?).

  5. SPF DNS записи. Чтобы доказать, что вам разрешено отправлять электронные письма от @example.com, вы можете добавить SPF-запись в DNS-записи домена example.com, Я нашел где-то The DNS record type 99 (SPF) has been deprecated поэтому вместо этого мы используем запись TXT. Давайте добавим это как запись TXT DNS (см. Также примечание 1):

    v=spf1 a mx include:_spf.google.com include:sendgrid.net ~all
    

    Почему это включает? Потому что мой сервер будет не единственным, кто отправляет письма с @example.com! Я настроил Gmail для отправки почты как contact@example.com ( см. Скриншот здесь), используя доверенного SMTP-провайдера Sendgrid. Если я не добавлю это include:, Gmail не будет разрешено отправлять электронную почту с @example.com,

  6. DKIM цифровая подпись. Как упомянуто здесь, цель DKIM состоит в том, чтобы гарантировать, что почтовый контент не был изменен во время передачи. Вот процесс установки в Ubuntu (полезное руководство также здесь):

    • apt-get install opendkim opendkim-tools

    • Создайте ключи (вы также можете сгенерировать ключи и соответствующую запись TXT в DNS с помощью http://dkimcore.org/tools/):

      mkdir /etc/opendkim
      cd /etc/opendkim
      opendkim-genkey -t -s mail -d example.com
      
    • Давайте поместим это в /etc/opendkim.conf:

      Syslog                 yes
      Domain                 *
      KeyFile                /etc/opendkim/mail.private
      Selector               mail
      AutoRestart            yes
      Background             yes
      Canonicalization       relaxed/relaxed
      DNSTimeout             5
      Mode                   sv
      SubDomains             no
      

      это в /etc/default/opendkim:

      SOCKET="inet:8891@localhost" # Ubuntu default - listen on loopback on port 8891
      

      и, наконец, добавьте это в конец файла конфигурации postfix /etc/postfix/main.cf:

      # DKIM
      milter_default_action = accept
      milter_protocol = 2
      smtpd_milters = inet:localhost:8891
      non_smtpd_milters = inet:localhost:8891
      
    • Теперь давайте добавим открытый ключ (найден в /etc/opendkim/mail.txt) к DNS-записям вашего домена:

      mail._domainkey.example.com. IN TXT "v=DKIM1; k=rsa; p=OqYHd...waPaQAX"
      

      Вот как это выглядит с моим регистратором Namelynx:

    • Последний шаг для DKIM: перезапустите почтовые сервисы с service restart opendkim ; service restart postfix,

  7. Проверьте, все ли работает. Самый простой способ - отправить письмо через PHP на auth-results@verifier.port25.com (этот очень полезный инструмент доступен в Port25 Solutions):

    $emailfrom = "Example <contact@example.com>";
    $headers  = "MIME-Version: 1.0 \n";
    $headers .= "Content-Transfer-Encoding: 8bit \n";
    $headers .= "Content-type: text/plain; charset=utf-8\n";
    $headers .= "Reply-To: " . $emailfrom . "\n";
    $headers .= "From: " . $emailfrom . "\n";
    $headers .= "Bcc: example@gmail.com\n";
    mail("check-auth@verifier.port25.com", "Hello", "Hello!", $headers);
    

    Затем посмотрите ответ этого инструмента, он должен выглядеть так:

    ==========================================================
    Summary of Results
    ==========================================================
    SPF check:          pass
    DKIM check:         pass
    SpamAssassin check: ham
    

    Сервис http://mail-tester.com/ полезен.

  8. (Необязательно) Попробуйте postmaster.google.com. Я использовал это, но я не помню, помогло это или нет.

  9. Если это все еще не работает, решение могло бы состоять в том, чтобы передать электронную почту с профессиональным решением, чтобы избежать дней и ночей (неудачной) отладки. Вот хорошая статья об этом. Вот цитата: "Отправка электронных писем из вашего приложения может s***. В половине случаев сообщения, отправляемые с вашего собственного сервера, просто сбрасываются в папку нежелательной почты получателя". что я с грустью обнаружил, правда, после нескольких недель настройки.


Дополнительные примечания:

(1)

-all : Fail: All mail servers not listed in the SPF record are explicitly not authorized to send mail using the sender’s domain.
~all : Soft Fail: All mail servers not listed in the SPF record are not authorized to send mail using the sender’s domain, but the owner of the domain is unwilling to make a strong assertion to that effect.
?all : Neutral: The domain controller cannot or does not want to assert whether or not all mail servers not listed in the SPF record are authorized to send mail using the sender’s domain.
+all : Pass: All mail servers are authorized to send mail on behalf of the sender’s domain.

У моего онлайн-бизнеса были проблемы с электронными письмами с подтверждением заказа, которые отправлялись в спам или даже не доставлялись (избегались через почтовые серверы). Это были простые электронные письма "вот краткое изложение вашего заказа" с одной ссылкой на домен нашего сайта. В итоге мы купили несколько аккаунтов Служб Google для моей компании. Вы можете настроить один из них в качестве вашего SMTP-сервера. Наличие Google в качестве нашего отправителя почты остановило все эти проблемы.

Что касается новостных рассылок по электронной почте, обязательно используйте сервис, который обрабатывает подписку для вас. Использование кого-либо, кроме службы для отправки массовых писем, вероятно, приведет к бану.

На E-mail опубликовано новое руководство

Самый полный, который я когда-либо видел. Контрольный список из 43 различных пунктов, которые охватывают каждый кран, чтобы не быть помеченными как спам. Это постоянно обновляется.

От настройки DNS, настройки аутентификации, настройки мониторинга репутации, снижения показателя отказов, тестирования содержимого электронной почты и т. Д.

Heads to tails coverage of everything by ZeroBounce.NET

https://www.zerobounce.net/guide-to-improve-inbox-and-delivery.html

Другие вопросы по тегам