Если есть необходимость освежить в памяти как всё это работает, то есть давняя, но актуальная статья об архитектуе почтовых систем. Есть три основных шага, чтобы установить и настроить собственный почтовый сервер. Настройка IP и DNS Выбор и запуск приложения почтового сервера Добавление своего почтового сервера в белые списки Это основные требования для запуска собственного почтового сервера. Публичный статический IP-адресIP-адрес почтового сервера должен быть общедоступным и постоянным во времени. Убедиться в этом можно у хостинг или Интернет-провайдера. Доменное имя указывает на IPDNS-запись публичного доменного имени почтового сервера должна указывать на этот IP-адрес. Им можно управлять в настройках DNS провайдера доменного имени. IP указывает на доменное имяСамое главное, обратная DNS-запись (именуемая PTR) должна указывать на доменное имя почтового сервера по IP-адресу. Можно попросить своего хостинг-провайдера или поставщика интернет-услуг настроить его. Его можно легко проверить по IP-адресу онлайн (например, тут), или с помощью команды ‘nslookup’ в Windows и команды ‘host’ в системах на основе UNIX. Запись почтового обмена (MX) указывает почтовый сервер, ответственный за прием сообщений электронной почты от имени домена. Например, если наш домен - mycompany.com, почтовый сервер - mail.mycompany.com, то запись DNS для mycompany.com будет: Type Host Value Priority TTL MX @ mail.mycompany.com 10 1 min где: Priority (приоритет) используется, когда в домене более одного почтового сервера. TTL (время жизни) можно установить любое предпочтительное значение, а наименьшее значение используется для применения конфигурации DNS как можно скорее при отладке настроек. Почта, идентифицированная ключами домена (DKIM) — это протокол безопасности электронной почты, который прикрепляет зашифрованную цифровую подпись к электронному письму. Принимающий сервер проверяет его с помощью открытого ключа, чтобы убедиться, что электронное письмо не было подделано. Понадобятся приватный и открытый ключи. Их можно создать с помощью онлайн-инструментов, например Power DMARC Toolbox - DKIM Record Generator, или с помощью команд OpenSSL (приведен пример для Windows): Создать приватный ключopenssl.exe genrsa -out private.key 2048 Создать публичный ключ из приватногоopenssl.exe rsa -in private.key -pubout -outform der 2>nul | openssl base64 -A > public.key.txt И запись DNS будет выглядеть так: Type Host Value TTL TXT selector._domainkey v=DKIM1; k=rsa; p=public_key 1 min где: selector - самостоятельно выбранный идентификатор (например, mysrv), который будет использоваться в приложении почтового сервера (смотрите ниже). public_key - открытый ключ, закодированный алгоритмом base64 (содержимое public.key.txt). TTL (время жизни) имеет то же значение, что и в предыдущем разделе. Инфраструктура политики отправителя (SPF) — это стандарт проверки подлинности электронной почты, который проверяет IP-адрес отправителя по списку авторизованных IP-адресов владельца домена для проверки входящей электронной почты. Тут запись DNS будет выглядеть так: Type Host Value TTL TXT @ v=spf1 a mx include:relayer_name -all 1 min где: relayer_name - имя необязательного внешнего почтового сервера-ретранслятора (смотрите ниже). Если не нужно - убирается вместе с "include:". TTL (время жизни) имеет то же значение, что и в предыдущем разделе. Можно использовать удобный онлайн-генератор записи SPF. Некоторые поля не обязательны, но желательно иметь. DMARCЗапись доменной проверки подлинности сообщений, отчетов и соответствия (DMARC) позволяет собственному почтовому серверу декларировать политику того, как другие почтовые серверы должны реагировать на недостоверные сообщения от него. BIMIИндикаторы бренда для идентификации сообщений (BIMI) — это новый стандарт, созданный для того, чтобы упростить отображение логотипа рядом с сообщением. Кроме того, BIMI предназначен для предотвращения мошеннических электронных писем и улучшения доставки. TLS-RPTTLS-отчетность (TLS-RPT) дает ежедневные сводные отчеты с информацией о электронных письмах, которые не зашифровываются и не доставляются. MTA-STSСтрогая транспортная безопасность агента пересылки почты (MTA-STS) - это новый стандарт, направленный на повышение безопасности SMTP, позволяя доменным именам выбирать строгий режим безопасности транспортного уровня, требующий аутентификации и шифрования. Все эти записи кроме MTA-STS могут быть созданы с помощью Power DMARC Toolbox. Конфигурация MTA-STS похожа на Google, также описывалась на habr, и, наконец, может быть проверена с помощью Hardenize. Конечно, хостинг должен позволять устанавливать программное обеспечение. Можно использовать любое подходящее приложение для почтового сервера. Например, есть бесплатный hMailServer для Windows, который предоставляет все необходимые функции с минимальным использованием ресурсов. Для систем на базе UNIX существует множество бесплатных почтовых серверов, таких как Exim Internet Mailer или iRedMail. Если вы знаете ещё хорошие программы, то поделитесь ими в комментариях. Подробный обзор выбора такого программного обеспечения, конечно, заслуживает отдельной статьи. Когда программное обеспечение выбрано и установлено, самое время его настроить. Домен и пользователиНужно добавить домен и начальный набор пользователей почтового сервера. БезопасностьЧтобы обеспечить соответствующий уровень безопасности, мы должны добавить сертификат SSL для домена. Конфигурацию SSL можно проверить здесь. Подпись сообщенийДалее, следует настроить DKIM. Нужно указать полученные выше приватный ключ и селектор. Кроме того, методы заголовка и тела должны быть установлены на «расслабленный», алгоритм подписи должен быть установлен на «SHA256», иначе на некоторых SMTP серверах не проходит проверка (например, google). Защита от спамаНаконец, нужно настроить антиспам-проверку специальными узлами черных списков, такими как spamhaus.org, чтобы защитить пользователей почтового сервера от нежелательных сообщений. Нужно настроить три протокола электронной почты, которые необходимы для её отправки и получения. SMTP используется для приема входящей и исходящей почты с/на другие почтовые серверы. И это позволяет пользователям домена отправлять свои сообщения. 25 портЭтот порт необходим для управления входящими подключениями от других почтовых серверов. Метод безопасности следует установить в STARTTLS. 587 портОн нужен для почтовых клиентов собственного почтового сервера. Метод безопасности следует установить в STARTTLS. 465 портОн не является официальным и может потребоваться для старых почтовых клиентов. И метод безопасности следует установить в SSL/TLS. POP3 и IMAP используются отдельными почтовыми клиентами, такими как Outlook на ПК или любой почтовый клиент на мобильных телефонах. Это позволяет пользователям домена управлять своими сообщениями. Порт 993 следует использовать для защищенных соединений IMAP, а порт 995 - для POP3. Для обеспечения совместимости с большинством клиентов метод безопасности следует установить в SSL/TLS (не STARTTLS). Также можно настроить порты 143 для IMAP и 110 для POP3, но они не шифруются и сейчас их уже мало кто использует. Итак, когда все настроено, нужно протестировать почтовый сервер, отправив письмо кому-нибудь из списка пользователей. Кроме того, в некоторых почтовых приложениях есть функция самодиагностики (см. ниже пример от hMailServer). Теперь пора проверить отправку на внешний адрес. Если есть учетная запись Gmail.com (что наверняка), можно отправить тестовое письмо на свой адрес Gmail. Затем открываем свою электронную почту в браузере и нажимаем «Показать подробности». Если есть «подписано: домен», подпись DKIM настроена правильно. Если есть «отправлено по почте: домен», SPF в порядке. Также, можно убедиться в оригинальных заголовках, что статус проверки пройден. Также, в Outlook можно видеть те же заголовки в свойствах сообщения. Существует множество онлайн-сервисов, которые могут проверять отправку электронной почты. Ниже приведены некоторые из них. AppMailDevЭтот сервис позволяет тестировать конфигурацию почтового сервера, такую как DKIM и SPF, отправляя электронное письмо на указанный сгенерированный почтовый адрес. Нужно просто следовать инструкциям на экране и результаты теста будут отображены там же. DKIMValidatorПредоставляет те же функции, что и предыдущая служба. Результаты тестирования будут отправлены на адрес отправителя. HAD Email Auth TesterЧтобы проверить отправку сообщения здесь, нужно отправить специальное сообщение на tester@email-test.had.dnsops.gov. Результаты тестирования будут отправлены на адрес отправителя. PowerDMARCЭтот сервис предоставляет только облегченную проверку всех атрибутов, но у него есть удобные инструменты, указанные в ссылках выше. Итак, если всё настроено правильно, но сервер присутствует в чёрных списках спама, нужно внести его в белый список. Итак, если всё вышеперечисленное настроено правильно, другие почтовые серверы по-прежнему могут отмечать сообщения как спам и отклонять их. Это бывает, когда IP (или его диапазон) домена попадает в какой-то черный список. Чаще всего причиной этого является использование соседних IP-адресов для рассылки спам-сообщений. Итак, сначала проверим IP (и, если необходимо, домен) онлайн на наличие в каких-либо черных списках. Его можно проверить в любом онлайн-чекере, который можно найти через поиск. Например, MXToolBox проверяет самые популярные черные списки. Также, multirbl.valli.org показывает много источников черного списка и доверие к каждому из них. Затем нужно последовательно просмотреть каждый элемент в результатах и прочитать рекомендации о том, как внести IP-адрес в белый список в конкретном источнике черного списка. Но не все из них могут позволить это сделать бесплатно, например, немецкий UCEPROTECT®-Network. Кстати, тут на habr обсуждалась автоматизация мониторинга IP в блэклистах. Некоторые серверы, такие как Outlook, имеют свои собственные черные списки. Проверка проста - приложение почтового сервера уведомит о неудачной доставке в почтовом клиенте. Большинство почтовых серверов предоставляют в ответе URL-адреса разблокировки. Таким образом, нужно открыть такой URL и следовать инструкциям, например, как этот. Если какой-то официальный черный список не разрешает добавление в исключения или когда-нибудь почта перестает отправляться на определенный домен - можно использовать внешние службы ретрансляции SMTP. Они позволяют использовать их в качестве шлюзов (или прокси) при отправке почты. MailerSendОдин из самых дешевых - позволяет бесплатно отправлять 20 тысяч писем в месяц и имеет низкую стоимость дополнительной отправки. Но есть особенность: поля CC и BCC пока не поддерживаются. SendInBlueЭто еще один хороший сервис, который позволяет бесплатно отправлять 9 тысяч писем в месяц с лимитом 200 в день. Но есть нюансы: встроенное отслеживание электронной почты нельзя отключить и высоковатая цена сверх бесплатного лимита. В каждой службе нужно зарегистрироваться и получить подтверждение почтового домена. После подтверждения, каждый из них дает указания на то, что должно быть настроено для DNS (DKIM, SPF и DMARK) и почтового приложения (адрес сервера ретрансляции SMTP, порт и учетные данные). Итак, теперь можно использовать все преимущества выделенного почтового сервера. Надеюсь, что этот материал поможет наиболее эффективно достичь поставленной цели. Если есть какие-либо вопросы или предложения по этой теме, буду рад обсудить в комментариях. Разработчик, предприниматель