Одной из наиболее распространенных проблем веб-мастера является доставка письма конечным адресатам. Данная статья о том, как правильно настроить сервер, скрипты и прочее во избежание попадания важных корпоративных писем в папку «Спам». Следуя данным инструкциям, вы минимизируете вероятность попадания ваших писем в папку с нежелательными сообщениями.
Правильные заголовки писем
Во-первых, при отправке любого письма посредством скриптов, остерегайтесь отсутствия заголовков. Если вы работаете с PHP, крайне не рекомендуем отправлять «голые» письма без заголовков по типу mail("[email protected]", "My Subject", "My Message");
Именно письма такого рода с большой долей вероятности попадают в спам.
Качественное письмо должно содержать, как минимум, следующие заголовки:
- From: Perfecto Web < [email protected] >
- Reply-To: Perfecto Web < [email protected] >
- X-Mailer: Php_libMail_v_1.5
- Content-Type: text/html; charset=utf-8
- Mime-Version: 1.0
Письмо должно содержать не только адрес отправителя, но и его имя или название организации. Также не забывайте об электронном адресе для ответа на письмо (Reply-to). В обязательном порядке необходимо указывать тип, кодировки (Content-Type) и программу (X-Mailer), с которой было отправлено письмо.
Для формирования правильных заголовков можете использовать готовые библиотеки: PHPMailer, Swift Mailer, libmail.
Отправка через SMTP
SMTP - это протокол, используемый для отправки электронной почты.
Данный протокол отвечает за передачу данных между клиентом → сервером, сервером → сервером и сервером → клиентом.
Для начала вам необходимо создать электронную почту на вашем сервере, допустим [email protected]. Далее необходимо настроить PHP скрипт на аутентификацию через SMTP. В большинстве случаев настройки вашего SMTP бывают следующими:
- Хост: mail.ваш_домен или smtp.ваш_домен
- Порт: 25 (альтернативный порт 25025)
- Имя пользователя: [email protected]
- Пароль: ваш_пароль
Обратитесь к вашему системному администратору для получения информации о настройках вашего SMTP.
PTR записи
DNS используется для преобразования доменного имени в IP адрес, но он может также выполнить обратный процесс. Существует специальный домен in-addr.arpa, записи в котором используются для преобразования IP-адресов в символьные имена. Например, при запросе perfecto-web.com DNS-сервера направляют нас на IP адрес 178.208.75.66. Однако при работе с PTR идет обратная конвертация, при запросе IP 178.208.75.66 DNS сервера возвращают соответствующее символьное имя - perfecto-web.com.
Если вы не найдете настройки PTR в панели управления хостингом, уточните его расположение у вашего хостинг-провайдера.
SPF-записи
Если Вы являетесь владельцем VPS, VDS или же по каким-то причинам самостоятельно управляете DNS вашего домена, рекомендуем вам позаботиться о правильных SPF-записях для вашего домена. В запись SPF должен входить IP-адрес сервера, на котором располагается ваш сайт.
Если у вас в записях DNS отсутствует запись об SPF, впишите следующее:
Хост: | ваш_домен. |
Тип: | TXT |
Значение: | v=spf1 a mx ip4:111.111.111.111 ~all |
Обратите внимание, в поле хоста в конце домена необходимо ставить точку. Соответственно, вместо 111.111.111.111 вписать IP адрес вашего домена. Для одного домена рекомендуем указывать одну запись SPF.
Настройки SPF не являются обязательными, но они помогут вам повысить шансы доставки ваших писем адресатам.
Настройка DKIM
В общих чертах SPF и DKIM чем-то похожие технологии, так как обе преследуют цель подтверждение валидности отправителя.
Технология DomainKeys Identified Mail (DKIM) объединяет несколько существующих методов антифишинга и антиспама с целью повышения качества классификации и идентификации легитимной электронной почты. Вместо традиционного IP-адреса, для определения отправителя сообщения DKIM добавляет в него цифровую подпись, связанную с именем домена организации. Подпись автоматически проверяется на стороне получателя, после чего, для определения репутации отправителя, применяются «белые списки» и «чёрные списки». В технологии DomainKeys для аутентификации отправителей используются доменные имена. DomainKeys использует существующую систему доменных имен (DNS) для передачи открытых ключей шифрования.
Итак, начнем. Для начала вам необходимо создать пару из публичного и приватного ключа. Сделать можно многими способами. Как пример, можно воспользоваться OpenSSL, но мы остановимся на онлайн сервисе port25.com. Переходим в раздел DKIM Wizard, в приведенных полях пишем доменное имя, селектор и выбираем размер ключа. В селекторе укажем «dkim», так как у нас всего один почтовый сервер. На сегодняшний день Gmail рекомендует 1024 битный ключ, в связи с чем, выберем его и нажмем «Создать ключ».
На следующем экране сервис нам выдаст публичный и приватный ключ, а также пошаговое руководство по настройке DKIM.
Публичный ключ
Добавляем запись в настройки DNS. Выглядит это примерно так:
Хост: | dkim._domainkey.ваш_домен. |
Тип: | TXT |
Значение: | v=DKIM1; k=rsa; s=email; p=MIGfMA0GCSqGSIb4DQEBAQUAA4GNADCBiQKBgQDgS1AZb9K924hWLVyodfyaQShVyLY0HceJk9JWd+bA3g78a4cEilzZUFu4hBFSX1QGWrloDN/omwz89IfOxl1eUFtqRXiQBaKgBvwIH/qGkKoiGikYj+4ETbdBdHhjDLoNK8PH0YAmNZ2brllGPYEC60QYjf8LG6+KRff7n98RKQIDAQAB |
В значении после «p=» идет непосредственно наш публичный ключ.
Приватный ключ
Изначально необходимо знать поддерживает ли почтовый сервер цифровую подпись DKIM. Практически, любая новая версия почтовых серверов ее поддерживает, в противном случае можете обратиться к вашему системному администратору или специалисту для установки почтового сервера с поддержкой DKIM.
Сохраняем ранее полученный приватный ключ в файл с расширением *.pem. В нашем случае получилось «dkim.perfecto-web.com.pem»
Вы можете сохранить ключ в /etc/pmta для Linux систем или в C:/pmta для Windows.
Далее необходимо настроить почтовый сервер для отправки писем с цифровой подписью DKIM используя данный приватный ключ.
Прочие рекомендации
Есть немало факторов, исходя из которых репутация письма, а впоследствии почтового ящика, может быть поставлена под сомнение.- Не рекомендуем отправлять письма с iframe !important
- Не рекомендуем отправлять письма с JavaScript !important
- Не рекомендуем отправлять письма с аплетами и Flash !important
- Всегда ставьте описание alt для всех изображений в письме
- Удалите «битые ссылки» на сайте, от имени которого отправляется письмо
- Старайтесь, чтобы письмо корректно отображалось на любых устройствах
- Не рассылайте письма людям, которые не подписывались на рассылку !important
- Всегда вставляйте в письмо ссылку для отписывания, в случае, если делаете рассылку !important
- Не пишите весь заголовок заглавными буквами !important
- Используйте заголовок List-Unsubscribe для передачи ссылки для быстрой отмены подписки
- Любое сообщение должно быть отформатировано в соответствии со стандартами RFC 5322 и HTML