Как и любая другая задача, почтовый сервер начинается с определения цели, зачем он нужен и какие проблемы должен решать. И уже потом цель определяет средства.
ВАЖНО! Здесь рассматриваются варианты задач исключительно в контексте веб-сайта.
Для такой задачи вполне подойдёт бесплатная почта для домена от Яндекса или похожая. Нужно только привязать домен к сервису, и можно создавать ящики, подключать почтовых клиентов и работать.
Отправку писем с сайта можно делать с помощью SMTP-клиентов (ApMailer, Swift Mailer) через SMTPS (465 порт) с авторизацией по логину и паролю.
Проблемы такого подключения проявятся не сразу. Но как только объём писем перейдёт определённый порог, то вместо отправки сообщения вы будете получать что-то вроде такого:
Message rejected under suspicion of SPAM
А вот что ответила поддержка:
"Если вы хотите рассылать много писем, лучше воспользоваться специальным рассылочным сервисом."
Я уже много лет пользуюсь почтой Яндекса, чтобы собирать логи с ошибками, получать отзывы с сайта, и никаких проблем не возникало. Но вот с CRM-системой почта Яндекса работать наотрез отказалась.
Если у вас, к примеру, интернет-магазин и много писем с разного рода уведомлениями (например, клиентам или менеджерам), то есть два пути:
Преимущество сторонних сервисов в том, что проблемы доставки почты будете решать не вы, а специально обученные люди (в теории). Но вы никак не контролируете работу этих сервисов, а значит они могут "отвалиться" в любой момент (как правило самый неподходящий). Не стоит забывать и про РКН, который в любой момент времени может заблокировать любой внешний IP (яркий пример CloudFlare).
Свой сервер вы контролируете сами и "отвалиться" он так просто уже не сможет.
Если вы не используете Bitrix, то для массовых рассылок подойдут специализированные сервисы, потому что:
Конечно, это всё можно сделать и на своём сервере, но зачем?
В этом случае свой сервер входящей почты подойдёт как нельзя лучше. Вы сможете хранить письма в базе данных и легко интегрировать их в проект.
Предположим, что у вас есть сайт mydomain.tld
, который находится на сервере xx.xx.xx.xx
. Рассмотрим разные возможные
конфигурации.
Что нужно сделать:
host xx.xx.xx.xx
выдавал mydomain.tld
).mydomain.tld
значение a
(чтобы host -t txt mydomain.tld
выдавал v=spf1 a redirect=_spf.yandex.net
).При такой настройке письма с сайта можно отправлять через sendmail
(функция mail()
в PHP), входящую почту обрабатывает Яндекс.
Что нужно сделать:
yy.yy.yy.yy
, например smtp
(чтобы host smtp.mydomain.tld
выдавал yy.yy.yy.yy
).smtp.mydomain.tld
(чтобы host yy.yy.yy.yy
выдавал smtp.mydomain.tld
).yy.yy.yy.yy
сервер для отправки писем через SMTP с авторизацией.mydomain.tld
значение a:smtp.mydomain.tld
(чтобы host -t txt mydomain.tld
выдавал v=spf1 a:smtp.mydomain.tld redirect=_spf.yandex.net
).При такой настройке письма с сайта можно отправлять через SMTP-клиентов, входящую почту обрабатывает Яндекс.
Что нужно сделать:
a:smtp.mydomain.tld
.Если основной домен уже настроен для работы со сторонним сервисом, то остаётся использовать только другой домен (можно поддомен).
Что нужно сделать:
yy.yy.yy.yy
, например smtp
(чтобы host mail.mydomain.tld
выдавал yy.yy.yy.yy
).mail.mydomain.tld
(чтобы host yy.yy.yy.yy
выдавал mail.mydomain.tld
).mail.mydomain.tld
(чтобы host -t mx mail.mydomain.tld
выдавал yy.yy.yy.yy
).yy.yy.yy.yy
сервер для отправки писем через SMTP с авторизацией.yy.yy.yy.yy
сервер входящей почты.mydomain.tld
значение a:mail.mydomain.tld
(чтобы host -t txt mydomain.tld
выдавал v=spf1 a:mail.mydomain.tld redirect=_spf.yandex.net
).При такой настройке входящие письма для xxx@mydomain.tld
будут попадать на Яндекс, а письма для xxx@mail.mydomain.tdl
будут попадать на сервер yy.yy.yy.yy
, который может сохранять их в базу и пересылать в зависимости от внешних условий.
SMTP — это протокол передачи писем от одного узла другому. Чтобы представить этот процесс, мысленно напишите записку мистеру А, положите её в конверт, на котором укажите в качестве получателя мистера Б, а потом отдайте конверт кому-нибудь, кто знает протокол SMTP. Если случайный "кто-нибудь" взял письмо, то рано или поздно оно придёт в ящик мистера Б. Никаких логинов, никаких паролей, никаких подтверждений. Бред, скажете вы? Но именно так и работает этот странный протокол.
Мы привыкли, что для отправки писем нужны учётные записи, логины, пароль. Но SMTP этого вовсе не требует, это требования конкретных серверов Google, Яндекс и т.п. Но ничто не мешает вам подключиться к какому-нибудь почтовому серверу на 25 порт и передать письмо любому адресату, какому пожелаете.
Но почему мы не тонем в тоннах спама? На самом деле тонем, но спасибо гигантам IT, они научились фильтровать спам достаточно эффективно, чтобы мы могли пользоваться почтой без особых проблем.
Если вам нужно настроить почтовый сервер, то это значит, что вам нужен SMTP-сервер (например, POSTFIX или EXIM). Ещё один "кто-нибудь", кто будет передавать письма дальше по цепочке. При этом разделение на сервер "входящей" и "исходящей" почты чисто условное. В обоих случаях это SMTP-сервер.
А как же IMAP, POP3? Эти протоколы дают доступ к письмам, которые уже находятся на почтовом сервере. Для отправки и приёма писем они не требуются.