Тематические термины: Postfix, Linux, CentOS, DKIM, PTR-запись, 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.admins24.com
* необходимо задать полное доменное имя (FQDN), по возможности, в том домене, с которого будем отправлять сообщения. В данном примере имя сервера — mailer, домен — admins24.com.
Сразу применяем настройку имени хоста:
hostname mailer.admins24.com
Настраиваем брандмауэр:
firewall-cmd —permanent —add-port=25/tcp
firewall-cmd —reload
* в данном случае мы открыли 25 SMTP-порт для отправки электронных писем.
Если Postfix не установлен, выполняем команду:
yum install 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
@admins24.com [email protected]
* данной настройкой мы будем перестраховываться — если программа отправки сообщений не подставит поле FROM будет подставлено [email protected].
Чтобы применить настройки, создаем карту:
postmap /etc/postfix/generic_map
И перезапускаем Postfix:
systemctl restart postfix
Проверяем, что постфикс правильно определяет наши домен и имя компьютера:
postconf myhostname
postconf mydomain
Мы должны получить правильные значения — в моем случае, соответственно, mailer.admins24.com и admins24.com. Эти данные берутся из локальных настроек системы. Но если, по каким-то причинам, системные имена должны отличаться, задайте жестко имя почтового сервера и домен в настройках postfix:
myhostname = mailer.admins24.commydomain = admins24.com
* после необходимо перезапустить почтовый сервер постфикс.
Чтобы сервер мог отправить сообщение, необходимо, чтобы почтовая система соответствовала минимальным требованиям большинства антиспам проверок:
А-запись — это базовая запись в системе доменных имен, которая указывает на соответствие между удобочитаемым именем и IP-адресом. Для ее создания заходим в панель управления доменной зоной и пользуемся встроенным инструментом.
Ниже представлено несколько различных примеров, как выглядит правильная настройка.
На REG.RU:
В Timeweb:
В RU center (nic.ru):
На собственном DNS-сервере bind:
mailer IN A 156.91.13.102
* обратите внимание, что прописаны различные IP-адреса. В вашем случае будет свой адрес.
Данные записи могут создавать только держатели IP-адресов, то есть, Интернет-провайдеры. Для того, чтобы создать такую запись, необходимо написать письмо поставщику Интернета, примерно, следующего содержания:
Здравствуйте, мой номер договора XXXXXXXX.Прошу создать PTR-запись mailer.admins24.com для IP 90.156.242.197.
Некоторые Интернет провайдеры позволяют создавать подобные заявки через личный кабинет.
Если сервер арендован, то необходимо создать соответствующий тикет поставщику услуги по аренде сервера.
Прежде чем отправлять сообщения, необходимо подождать от 4 до 8 часов. Как правило, этого достаточно, чтобы созданные ранее записи стали доступны всем промежуточным серверам DNS.
Для отправки сообщений из командной строки CentOS сначала необходимо установить следующую утилиту:
yum install mailx
После можно отправлять первое сообщение:
echo «Test text» | mail -s «Test title» -r [email protected] [email protected]
* где Test text — текст сообщения, Test title — тема, [email protected] — отправитель, [email protected] — получатель.
Лучше отправить несколько сообщений на разные почтовые системы, особенно распространенные:
Если наши сообщения попали в папку СПАМ, необходимо открыть исходник письма и разобраться, что именно не понравилось почтовому серверу. Как правило, причиной могут быть некорректный текст (рекламного содержания) или отсутствие записей а DNS (A или PTR). В этом случае редактируем сообщение или ждем еще некоторое время.
Если сообщения вовсе не отправляются, открываем на просмотр следующий log-файл и изучаем, что именно послужило причиной проблемы:
tail /var/log/maillog
Отсутствие вышеописанных записей, кстати, также могут повлечь отказ почтовых систем принимать Ваши письма. В таком случае, мы увидит в логах, примерно, такой текст:
postfix/smtp[21444]: BED8CC0000C3: to=<[email protected]>, 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 <[email protected]> 550-Unrouteable address 550 Sender verify failed (in reply to MAIL FROM command))
Почтовый сервер готов, но для удобной отправки рассылок необходимо специализированное программное обеспечение, с помощью которого можно настроить автоматическую обработку очереди, просматривать статистику, обрабатывать возвраты, предоставить возможность автоматической отписки и многое другое. Для этого существуют различные менеджеры управления рассылками, например, бесплатный phplist. Для его установки и настройки читайте статью Установка и настройка phplist.
Описанная процедура выше была самой простой и банальной частью в настройке почтового сервера. Она позволит отправлять небольшое количество писем. Но наша основная цель — отправлять большое число сообщений. Для успешного решения этой задачи необходимы дополнительные работы, которые я разделил на 3 категории:
Требования к содержимому электронных писем:
Требования к домену и IP-адресу:
Реакция на поведение получателей и почтовых систем:
* стоит обратить внимание на следующий момент, принципиальный для массовых рассылок — мы ставим жесткий запрет на отправку сообщений с других серверов (-all, а не ~all), так как необходимо гарантировать, что наш домен не будет скомпрометирован другим сервером. Однако, если для отправки с вашего домена используется несколько почтовых серверов, не забудьте указать их все. В противном случае перестанет ходить почта.
Не стоит надеяться, что правильно настроенный сервер будет всегда хорошо справляться со своей задачей. Необходимо заниматься его обслуживанием, так как поведения фильтров могут меняться, как и сущность СПАМа и методы борьбы с ним.
Бесплатные smtp-сервера для рассылок, как правило, представляют демо-версии платных сервисов, и не позволят заниматься отправкой массовых писем на постоянной основе. Однако, если нет желания заниматься настройкой и обслуживанием своего сервера, можно обратиться в такие компании. Но нужно понимать, что следить за списком получателей все-равно придется самостоятельно.
Пример сервисов, предлагающих массовые рассылки:
Продолжая использовать данный сайт вы принимаете политику конфиденциальности и cookies