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

Обновлено Обновлено: Опубликовано Опубликовано:

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

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

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

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

Выполним предварительные настройки.

1. Время

Для корректного формирования заголовков почты задаем правильное время.

Укажем, какую использовать временную зону:

timedatectl set-timezone Europe/Moscow

* в данном примере мы задаем зону по московскому времени.

Список всех доступных зон можно посмотреть командой

timedatectl list-timezones

Если мы увидим только одну зону UTC, скорее всего, у нас установлена минимальная версия Ubuntu. Для установки всех зон вводим

apt install tzdata

Устанавливаем утилиту для синхронизации времени, запускаем ее и разрешаем автозапуск.

а) на Deb (Ubuntu / Debian / Astra):

apt install chrony

systemctl enable chrony

б) на RPM (Rocky Linux / CentOS / Red Hat):

yum install chrony

systemctl enable chronyd --now

2. Имя сервера

Имя сервера, по-умолчанию, используется Postfix для формирования заголовка приветствия. Необходимо, чтобы оно было правильным — полное (FQDN) и разрешалось в IP-адрес.

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

hostnamectl set-hostname mailer.dmosk.ru

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

3. Безопасность

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

В зависимости от типа операционной системы, как правило, используются разные утилиты для управления сетевым фильтром. Рассмотрим firewalld и iptables.

а) на Deb (iptables):

iptables -I INPUT -p tcp --dport 25 -j ACCEPT

Для сохранения правила используем iptables-persistent:

apt install iptables-persistent

netfilter-persistent save

б) на RPM (firewalld):

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

firewall-cmd --reload

Настройка Postfix

Если Postfix не установлен, выполняем команду.

а) на Deb:

apt install postfix

б) на RPM:

yum install postfix

Установка выполнена.

Разрешим автозапуск сервиса и запустим его:

systemctl enable postfix --now

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

vi /etc/postfix/main.cf

Задаем значения для опций (если нужных опций нет, добавляем их):

myorigin = $mydomain
...
inet_interfaces = all
...
inet_protocols = ipv4
...
message_size_limit = 52428800
...
smtp_use_tls = yes

* где:

  • myorigin определяет домен, который будет подставляться отправителю, если он не указан явно.
  • inet_interfaces — на каком интерфейсе слушать запросы smtp.
  • inet_protocols — по какому протоколу работать. Очень часто, сервер работает только по IPv4. Но если наш сервер также работает по IPv6, задаем значение all.
  • message_size_limit — максимальный размер отправляемого сообщения. В нашем примере 50 Мб.
  • smtp_use_tls — указывает серверу, нужно ли ему передавать сообщения по зашифрованному каналу.

После внесения настроек перезапускаем postfix для их применения:

И перезапускаем 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 сначала необходимо установить утилиту mail.

а) В Deb:

apt install mailutils

б) В RPM:

yum install mailx

Утилита установлена.

Создадим переменную с указанием нашего домена:

MYDOMAIN=dmosk.ru

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

echo "Test text" | mail -s "Test title" -r postmaster@${MYDOMAIN} master@dmosk.ru

* где Test text — текст сообщения, Test title — тема, postmaster@${MYDOMAIN} — отправитель (переменная ${MYDOMAIN} подставит наш домен), master@dmosk.ru — получатель (его вам нужно заменить на свой).

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

  • mail.ru (он же bk.ru, list.ru);
  • yandex.ru;
  • gmail.com;
  • rambler.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))

Настройка аутентификации

Для повышения безопасности, рекомендуется настроить авторизацию с запросом логина и пароля. Таким образом, только пользователи, прошедшие аутентификацию смогут отправлять сообщения с сервера.

Подробнее процесс описан в инструкции Настройка SMTP-авторизации в Postfix.

Управляем рассылками

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

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

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

  • Работа с получателями сообщений.
  • Выполнение требований почтовых систем.
  • Технические работы.

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

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

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

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

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

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

  1. Возраст домена. Домен должен быть старше 28 дней. В противном случае, некоторые системы будут добавлять домен в черные листы.
  2. Прогрев домена и IP-адреса почтового сервера. Некоторые почтовые системы по умолчанию не доверяют новым почтовым серверам, и при массовых рассылках отмечают их сообщения, как СПАМ. После настройки сервера, не стоит начинать массовые рассылки. Сначала мы сформируем небольшие группы получателей и будем отправлять только им письма в течение одного месяца. После объемы можно наращивать.
  3. Проверяем наличие IP-адреса в черных списках. Существуют специальные списки с IP-адресами почтовых серверов, которые принадлежат спамерам. Проверить, не попал ли наш IP в этот список можно на различных сервисах, например, на сайтах 2ip.rudnsbl.info и syslab.ru. Если адрес в черном списке, необходимо зайти на сайт сервиса и написать письмо администратору с просьбой исключить IP из данного списка.
  4. Информация о домене. Домен адреса отправителя должен принадлежать соответствующей организации и быть подтвержденным. Данную информацию можно получить на любом Whois-cервисе, например, RU center или REG.RU.
  5. Адекватное доменное имя. Не используйте непонятных сгенерированных доменных имен, на подобие, 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. Проверка корректности настройки для домена. Время от времени, проверяйте свой домен с помощью сервиса mxtools.
  2. Эффективность рассылок. Выполняем проверку наших рассылок при помощи специализированных сервисов — Постмастер от mail.ru и Postmasters Tools от Google. На основе данных незамедлительно принимаем решение об исключении определенных адресов из рассылки и выполняем все рекомендации систем.
  3. Наличие в черных списках. Проверяйте наличие домена/IP-адреса в черных списках. Ранее мы говорили, что это можно сделать на сайтах dnsbl.smtp.bz2ip.rudnsbl.info и syslab.ru.
  4. Держим руку на пульсе. Время от времени, перечитываем требования к честным рассылкам, например, у Google. В них могут появляться новые требования.
  5. Анализируем log. Находим по логам неудачные попытки отправить сообщения. Большинство из них делятся на две категории — soft bounce (мягкие возвраты) и hard bounce (жесткие возвраты). Первые означают, что ошибка отправки произошла на принимающей стороне — это может быть переполнение ящика, временная его блокировка, другими словами — временные явления и попытки отправки сообщений этому адресату можно повторить позже. Жесткие возвраты сигнализируют о постоянной проблеме, как правило, отсутствующем адресате. За ошибками hard bounce нужно внимательно следить и реагировать, удаляя несуществующих адресатов из списка рассылки.
  6. Отправляем тестовые сообщения. Используем сервисы mail-tester.com и spamtest.smtp.bz для периодической отправки сообщений и проверки, что наш сервер настроен правильно.

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

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

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

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

Да            Нет