Если вы читаете этот материал, скорее всего вы уже знаете что поднять свой почтовик это страдание и внезапно нетривиальная задача. Цель статьи - без лишней лирики дать пошаговый мануал тем, кто хочет настроить свой собственный мейлер и не платить деньги mailgun и подобным SMTP-relay сервисам.
Также на этом этапе предполагается что у вас уже куплен домен, и он добавлен в панель управления CloudFlare. Настраивать DNS мы будем там, если вы не хотите использовать CF по аналогии все делается и в других панелях регистратора.
Установка нужного софта
По стандарту, обновляем сервер:
apt update && apt upgrade -y
Ставим docker из репозиториев самого докера (пока все из под root):
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
Теперь, чтобы выпустить сертификат, нам нужно добавить А-запись в CloudFlare. Идем в панель управления домена в раздел DNS и добавляем запись типа А следующим образом: в Name пишем mail, в ipv4 address пишем IP вашего VPS, и обязательно отключаем проксирование.
Теперь возвращаемся в терминал и выпускаем SSL-сертификаты:
Certbot обычно сам создает cron-запись для ежедневного обновления сертификатов, и этого нам делать не нужно. Но ввиду того что у нас postfix живет в докере, он не в курсе что ему нужно перезапускаться для загрузки новых сертификатов. Поэтому мы должны подцепить перезапуск контейнера к хуку certbot-а.
То есть мы без ковычек и скобок копируем параметры из файла, и две части ключа мы соединяем вместе в одну длинную строку. Далее мы идем в DNS-записи на CloudFlare и создаем запись типа TXT, в поле "Name" пишем:
mail._domainkey
В поле Content вставляем получившуюся у нас в текстовом редакторе конструкцию, и сохраняем.
Таким образом мы настроили сверку DKIM-подписи, которая подтвердит подлинность наших email-соощений, гарантируя что они происходят с нашего домена и нашего сервера, т.к. адрес отправителя email легко подделывается.
Далее мы создаем еще одну TXT запись, в Name указываем наш домен вида mydomain.com, в Content прописываем:
"v=spf1 a mx ip4: -all"
Этой записью мы указываем, что единственный IP адрес который имеет право отправлять письма с нашего домена - это адрес нашего VPS.
Настройка rDNS и открытие порта 25 у хостера
Это еще не всё. Теперь нам предстоит пообщаться с хостинг-провайдером, который продал нам VPS. Потому что по умолчанию почти на всех хостерах запрещены исходящие сообщения на порт 25, и нам нужно попросить их открыть. Для этого обычно нужно написать тикет в техподдержку.
А также нам нужно включить reverse dns (rDNS) для адреса mail.mydomain.com. У разных провайдеров это делается по-разному, где-то есть такой пункт в настройках VPS, где-то нужно писать тикет в поддержку.
Тесты
После того как все это будет проделано, можно приступить к тестам. Есть сервисы, которые позволяют вам увидеть скоринг вашего письма:
Если вы видите что у вас все ОК с DKIM и прочими параметрами, можно попробовать отправить таким же способом письмо себе на gmail и ощутить приятную годрость, видя как оно попало во "входящие".