Настройка почтового сервера для массовой рассылки сообщений

Тематические термины: Postfix, Linux, CentOSDKIMPTR-записьSPF-запись

В нашем примере будет настраиваться сервер Postfix на системе Linux CentOS.

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

Настройка системы

Настраиваем планировщик cron для синхронизации времени:

crontab -e

И добавляем следующую строку: 

0 0 * * * /sbin/ntpdate ru.pool.ntp.org

* в данном примере команда будет выполняться каждый день в 00:00.
* путь к исполняемому скрипту ntpdate может быть другой. Если при запуске /sbin/ntpdate система выдаст ошибку No such file or directory, запустите which ntpdate, чтобы узнать правильный путь к скрипту.

Задаем часовой пояс и выполняем синхронизацию времени:

\cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime

ntpdate ru.pool.ntp.org

* если система выдаст ошибку, установите утилиту командой yum install ntpdate или yum install ntp.

Задаем имя сервера:

vi /etc/hostname

mailer.dmosk.ru

* необходимо задать полное доменное имя (FQDN), по возможности, в том домене, с которого будем отправлять сообщения. В данном примере имя сервера — mailer, домен — dmosk.ru.

Сразу применяем настройку имени хоста:

hostname mailer.dmosk.ru

Настраиваем брандмауэр:

firewall-cmd --permanent --add-port=25/tcp

firewall-cmd --reload

* в данном случае мы открыли 25 SMTP-порт для отправки электронных писем.

Настройка Postfix

Открываем на редактирование конфигурационный файл main.cf:

vi /etc/postfix/main.cf

Снимаем комментарий с этой строчки:

myorigin = $mydomain

* параметр myorigin определяет домен, который будет подставляться отправителю, если он не указан явно.

Добавляем следующую строчку:

smtp_generic_maps = hash:/etc/postfix/generic_map

Теперь открываем файл generic_map и добавляем в него следующее:

vi /etc/postfix/generic_map

@dmosk.ru    mailer@dmosk.ru

* данной настройкой мы будем перестраховываться — если программа отправки сообщений не подставит поле FROM будет подставлено mailer@dmosk.ru.

Чтобы применить настройки, создаем карту:

postmap /etc/postfix/generic_map

И перезапускаем Postfix:

systemctl restart postfix

Проверяем, что постфикс правильно определяет наши домен и имя компьютера:

postconf myhostname

postconf mydomain

Мы должны получить правильные значения — в моем случае, соответственно, mailer.dmosk.ru и dmosk.ru. Эти данные берутся из локальных настроек системы. Но если, по каким-то причинам, системные имена должны отличаться, задайте жестко имя почтового сервера и домен в настройках postfix:

myhostname = mailer.dmosk.ru
mydomain = dmosk.ru

* после необходимо перезапустить почтовый сервер постфикс.

Отправляем первое сообщение

Чтобы сервер мог отправить сообщение, необходимо, чтобы почтовая система соответствовала минимальным требованиям большинства антиспам проверок:

  1. Создана A-запись для имени сервера в DNS.
  2. Создана PTR-запись для A-записи.

Создание А-записи

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

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

На REG.RU:

А-запись на REG.RU

В Timeweb:

А-запись в timeweb

В RU center (nic.ru):

А-запись в RU center

На собственном DNS-сервере bind:

mailer      IN      A       156.91.13.102

* обратите внимание, что прописаны различные IP-адреса. В вашем случае будет свой адрес.

Создание PTR-записи

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

Здравствуйте, мой номер договора XXXXXXXX.
Прошу создать PTR-запись mailer.dmosk.ru для IP 90.156.242.197.

Некоторые Интернет провайдеры позволяют создавать подобные заявки через личный кабинет.

Если сервер арендован, то необходимо создать соответствующий тикет поставщику услуги по аренде сервера.

Проверяем отправку сообщений

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

Для отправки сообщений из командной строки CentOS сначала необходимо установить следующую утилиту:

yum install mailx

После можно отправлять первое сообщение:

echo "Test text" | mail -s "Test title" master@dmosk.ru

Лучше отправить несколько сообщений на разные почтовые системы, особенно распространенные:

Если наши сообщения попали в папку СПАМ, необходимо открыть исходник письма и разобраться, что именно не понравилось почтовому серверу. Как правило, причиной могут быть некорректный текст (рекламного содержания) или отсутствие записей а DNS (A или PTR). В этом случае редактируем сообщение или ждем еще некоторое время.

Если сообщения вовсе не отправляются, открываем на просмотр следующий log-файл и изучаем, что именно послужило причиной проблемы:

tail /var/log/maillog

Отсутствие вышеописанных записей, кстати, также могут повлечь отказ почтовых систем принимать Ваши письма. В таком случае, мы увидит в логах, примерно, такой текст:

postfix/smtp[21444]: BED8CC0000C3: to=<master@dmosk.ru>, relay=mx1.masterhost.ru[83.222.23.178]:25, delay=0.54, delays=0.26/0.1/0.12/0.06, dsn=5.0.0, status=bounced (host mx1.masterhost.ru[83.222.23.178] said: 550-Verification failed for <root@mailer.dmosk.ru> 550-Unrouteable address 550 Sender verify failed (in reply to MAIL FROM command))

Защищаем письма от попадания в СПАМ

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

Заботимся о получателях

  1. Не отправляем сообщения тем, кто на это не подписывался. Не используем купленные списки для информационных рассылок. Данные списки необходимо составлять самостоятельно проводя опрос на сайте или предлагая покупателям заполнить анкету. При этом, не стоит вопрос ставить таким образом, чтобы покупатель соглашался на рассылку по умолчанию — он должен явно выразить свое согласие. Если проигнорировать выполнение данного пункта, получатели начнут жаловаться на наши письма и отмечать их как СПАМ. Почтовые системы на это реагируют, и набрав нужное количество отметок, начинают блокировать сообщения от сервера.
  2. Двухфакторное подтверждение. Прежде чем отправлять письма клиенту, отправьте пригласительное сообщение, где последний должен еще раз подтвердить свое согласие. Особенно, это требуется для случаев, где согласие на рассылку получаем посредством заполнения бумажной анкеты — ведь в нее покупатель может вписать любой адрес, чужой или которого не существует. В итоге это приведет к попыткам отправить письма на несуществующий адрес или тому, кто не давал на это согласия.
  3. Позволяем пользователям отписаться от рассылки. Если человек передумал получать от нас информационные письма, у него должна быть простая возможность от нее отказаться. При этом, желательно, отписку реализовать в один клик, без необходимости указывать причину и ввода логина с паролем. Если не предоставить получателю такую возможность, он воспользуется фильтрами или кнопкой «СПАМ», что опять приведет к повышению числа жалоб на наш сервер. Также, мы должны использовать заголовок list-unsubscribe, например: 
    List-Unsubscribe: <https://site.ru/unsubscribe/user_id>. Некоторые сервисы делают из этого заголовка кнопку «Отписаться», что уменьшит число нажатий на кнопку СПАМ.
  4. Время от времени, повторно запрашивайте разрешение на рассылку. Покупатель может перестать пользоваться нашими товарами и вся информационная рассылка для него больше не актуальна. Он может воспользоваться средством «отписаться», но некоторым проще просто отправить наше письмо в СПАМ. Более того, подобные опросы повышают статус компании в лице поставщиков почтовых сервисов.
  5. Не злоупотребляем согласием клиента. Не стоит очень часто отправлять сообщения пользователям. В конце концов, это им надоест, и мы начнем собирать негативные отзывы и жалобы. На крайний случай, можно создать расширенную форму согласия на рассылку, где пользователь сам укажет, как часто он готов получать рассылку.

Получаем доверие почтовых систем и их фильтров

Требования к содержимому электронных писем:

  1. Не отправляйте тексты, похожие на СПАМ. Перед отправкой письма, прочитайте его сами еще раз. Поставьте себя на место получателя. Кажется ли Вам, что письмо похоже на СПАМ? Если ответ положительный, перепишите текст. Большинство антиспам фильтров реагируют на рекламные тексты и добавляют сообщению СПАМ-баллы, что приводит к тому, что сообщения не доходят до адресата или попадают в папку с нежелательной корреспонденцией.
  2. В сообщении должен быть текст. Некоторые письма могут представлять из себя одно изображение. Это неправильный подход к отправке рассылки, так как им пользуются спамеры — они таким образом пытаются обойти фильтры, которые анализируют текст. Но фильтры на изображения без текста также реагируют негативно.
  3. Формат текста. Не используйте много текста, который написан ЗАГЛАВНЫМИ БУКВАМИ. Во-первых, его сложнее прочитать, во-вторых, подобный текст уже давно вызывает негативную реакцию со стороны различных проверок. Также не стоит злоупотреблять восклицательными знаками. Также не используйте разноцветные тексты.
  4. Кодировка. Неправильная кодировка может являться причиной того, что сообщения попадут в СПАМ. Проверьте, что шаблоны созданы в единой кодировке и правильная кодировка указывается в заголовках сообщения.
  5. Поле From. Обратный адрес должен быть реальным — на него должна быть возможность отправить электронные сообщения. Не стоит использовать вымышленный адрес электронной почты.

Требования к домену и IP-адресу:

  1. Прогрев домена и IP-адреса почтового сервера. Некоторые почтовые системы по умолчанию не доверяют новым почтовым серверам, и при массовых рассылках отмечают их сообщения, как СПАМ. После настройки сервера, не стоит начинать массовые рассылки. Сначала мы сформируем небольшие группы получателей и будем отправлять только им письма в течение одного месяца. После объемы можно наращивать.
  2. Проверяем наличие IP-адреса в черных списках. Существуют специальные списки с IP-адресами почтовых серверов, которые принадлежат спамерам. Проверить, не попал ли наш IP в этот список можно на различных сервисах, например, на сайтах 2ip.rupr-cy.ruihost.by. Если адрес в черном списке, необходимо зайти на сайт сервиса и написать письмо администратору с просьбой исключить IP из данного списка.
  3. Информация о домене. Домен адреса отправителя должен принадлежать соответствующей организации и быть подтвержденным. Данную информацию можно получить на любом Whois-cервисе, например, RU center или REG.RU.
  4. Адекватное доменное имя. Не используйте непонятных сгенерированных доменных имен, на подобие, dn.mx1095.host.x-0012-m.dmosk.ru.

Реакция на поведение получателей и почтовых систем:

  1. Проверка существования почтовых ящиков. Постоянные попытки отправить сообщения на несуществующий адрес приводят к штрафным санкциям со стороны почтовых систем. Стоит проверять актуальность списка и исключать адреса, которых не существует. Для этого стоит обращать внимание на ответы почтовых серверов о невозможности доставить письмо отправителю.
  2. Использование Feedback Loop (FBL). Это система, с помощью которой мы получаем от поставщика почтовых услуг (например, mail.ru) копии всех жалоб на наш домен. Для начала работы свяжитесь с поставщиком. На основе данных отчетов необходимо исключать адресатов, которые жалуются на наши письма. Список популярных почтовых сервисов и ссылок на страницу для настройки FBL:
  3. Ящик abuse. Создаем действующий ящик abuse@... На него могут приходить жалобы на содержимое, отправляемое с нашего домена. Входящие сообщения необходимо анализировать и прибегать к соответствующим мерам, в противном случае можно попасть в глобальный черный список (DNSBL).

Дополнительная настройка почтовой системы (технические аспекты подтверждения нашей легитимности)

  1. Создаем SPF-запись. В двух словах, это инструкция, которая говорит принимающей стороне, с каких серверов может отправляться почта с нашего домена. Создается она в DNS-системе, там же, где мы уже создавали А-запись. Вот несколько примеров правильной настройки:
    REG.RU:
    SPF-запись на REG.RU
    Timeweb:
    SPF-запись в timeweb
    Bind:
    dmosk.ru. IN TXT "v=spf1 +a +mx -all"

    * стоит обратить внимание на следующий момент, принципиальный для массовых рассылок — мы ставим жесткий запрет на отправку сообщений с других серверов (-all, а не ~all), так как необходимо гарантировать, что наш домен не будет скомпрометирован другим сервером. Однако, если для отправки с вашего домена используется несколько почтовых серверов, не забудьте указать их все. В противном случае перестанет ходить почта.
  2. Настраиваем DKIM. Простыми словами, это проверка того, что мы являемся владельцем домена, с которого отправляется почта. Подробную инструкцию, как настроить DKIM для Postfix на CentOS читайте в данной инструкции.
  3. Настраиваем DMARC. О том, что это и пример настройки читайте на странице Что такое DMARC.
  4. Белый список. Некоторые Интернет провайдеры и хостинги требуют занести IP-адрес сервера, с которого будет выполняться массовая рассылка в их собственный белый список. Сервера, не внесенные в этот список будут блокироваться (по 25-порту) при обнаружении большого числа исходящих электронных писем. Свяжитесь с Вашим поставщиком для уточнения деталей.

Обслуживание почтовой системы, которая должна выполнять массовые рассылки

Не стоит надеяться, что правильно настроенный сервер будет всегда хорошо справляться со своей задачей. Необходимо заниматься его обслуживанием, так как поведения фильтром могут меняться, как и сущность СПАМа и методы борьбы с ним.

  1. Проверка репутации сервера. Время от времени, проверяйте свою почтовую систему с помощью сервиса senderscore.
  2. Эффективность рассылок. Выполняем проверку наших рассылок при помощи специализированных сервисов — Почтовый офис от Яндекса и Постмастер от mail.ru. На основе данных незамедлительно принимаем решение об исключении определенных адресов из рассылки и выполняем все рекомендации систем.
  3. Наличие в черных списках. Проверяйте наличие домена/IP-адреса в черных списках. Ранее мы говорили, что это можно сделать на сайтах 2ip.rupr-cy.ruihost.by.
  4. Держим руку на пульсе. Время от времени, перечитываем требования к честным рассылкам, например, у Яндекса и Google. В них могут появляться новые требования.
  5. Анализируем log. Находим по логам неудачные попытки отправить сообщения. Большинство из них делятся на две категории — soft bounce (мягкие возвраты) и hard bounce (жесткие возвраты). Первые означают, что ошибка отправки произошла на принимающей стороне — это может быть переполнение ящика, временная его блокировка, другими словами — временные явления и попытки отправки сообщений этому адресату можно повторить позже. Жесткие возвраты сигнализируют о постоянной проблеме, как правило, отсутствующем адресате. За ошибками hard bounce нужно внимательно следить и реагировать, удаляя несуществующих адресатов из списка рассылки.

Бесплатные сервера для рассылок

Бесплатные smtp-сервера для рассылок, как правило, представляют демо-версии платных сервисов, и не позволят заниматься отправкой массовых писем на постоянной основе. Однако, если нет желания заниматься настройкой и обслуживанием своего сервера, можно обратиться в такие компании. Но нужно понимать, что следить за списком получателей все-равно придется самостоятельно.

Пример сервисов, предлагающих массовые рассылки:

# Сервера # Почта # UNIX # Linux # CentOS
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет