Введение
Есть много причин, чтобы настроить собственный почтовый сервер на VPS.
Собственный почтовый сервер на VPS дает гораздо больше точных и тонких настроек для доставки почты.
В этой инструкции вы найдете пошаговую инструкцию по установке почтового сервера на Ubuntu 20.04 с использованием распространенного MTA (агента доставки почты) – Postfix.
Postfix состоит из небольших, совместно работающих программ. Каждая осуществляет свои узкоспециализированные функции:
- отправка сообщений
- прием сообщений
- локальная доставка
- и осуществляют обмен с другими программами с помощью сокетов unix.
Настройка DNS
Для корректной работы почтового сервера, в DNS-зоне сервера должна быть настроена запись типа MX (Mail Exchange).
Кроме того, понадобится A (Anchor)-запись связывающая доменое имя сервера и его ip-адрес.
Эти настройки задаются в панели управления регистратора доменного имени (за исключением тех случаев, когда DNS-записями управляют ваши NS-сервера).
Вот пример настройки DNS-записей на примере регистратора reg.ru:
- Перейдите reg.ru и войдите в личный кабинет
- Перейдите в раздел “Мои домены и услуги”
- Выберите домен, на котором нужно настроить A-запись и МХ-запись
- В разделе “DNS-серверы и управление зоной” просмотрите настроенные записи
- Если есть ранее настроенные MX-записи, удалите их нажав на крестик напротив записи
- Добавьте запись A, которая будет указывать на ip-адрес вашего почтового сервера (например, A mail → )
- Добавьте запись MX, которая будет указывать на имя вашего сервера (например, MX @ → mail.testdomain.ru. 10)
Здесь нужно обратить внимание, что
- @ – указывает на ту доменную зону, для которой эта запись создается
- Приоритет 10 – используется для приоритезации доставки, если почтовых серверов несколько.
Для одного сервера, 10 – подходящее число для старта.
После сохранения изменений потребуется время, прежде чем обновленная информация о доменных записях распространится между другими DNS-серверами. Это может занять до 72 часов, хотя, как правило, изменения применяются за час-два.
Проверить правильно ли настроены и готовы ли записи можно командой:dig -t a mail.testdomain.ru
dig -t mx mail.testdomain.ru
В ответ вы должны получить ответ с настроенными dns-записями от настроенного сервера DNS.
Так же потребуется добавить соответствующие записи в /etc/hosts
sudo nano /etc/hosts:
xxx.xxx.xxx.xxx mail.testdomain.ru mail
Установка Postfix
Зададим hostname и установим
- postfix
- dovecot и nginx (для получения сертификатов let’s encrypt)
- wget (для установки certbot-auto,
- nano (текстовый редактор)
Зададим hostname сервера соответственно указывающей на него в DNS A-записи:sudo hostnamectl set-hostname mail.testdomain.ru
Запустим установку Postfix, и укажем DEBIAN_PRIORITY=low, что бы ответить на дополнительные запросы при установке:sudo DEBIAN_PRIORITY=low apt install postfix
Программа задаст ряд вопросов, что бы сконфигурировать установку:
- General type of mail configuration: Internet site (Указываем режим, когда почта будет отправлятся и приниматься через SMTP)
- System mail name: testdomain.ru (указываем базовый домен почты, который идет после знака @)
- Root and Postmaster recipient: postmaster@testdomain.ru (учетная запись системы, которая будет получать почту на почтовые адреса root@ и postmaster@)
- Other destinations to accept mail for: $myhostname, mail.testdomain.ru, localhost.testdomain.ru, localhost (Список доменов, которые сервер будет считать точкой финального назначения. Здесь можно указать другие домены, если почтовый сервер будет обслуживать больше чем один домен или указать доменное имя более высокого уровня, если сервер будет работать как почтовый релей)
- Force synchronymous updates on mail queue: No (Для журнальных файловых систем, не используем синхронные обновления на очередь почты)
- Local networks: (список сетей с которых будет почта будет ретранслироваться, в большинстве случаев достаточно оставить значение по умолчанию)
- Mailbox size limit: 0 (Ограничивает размер почтового ящика, 0 – без ограничений)
- Local address extension character: + (Символ для разделения расширения адреса)
- Internet protocol to use: All (Позволяет ограничить использование версий IP протокола, включим All – ipv4 и ipv6)
Чтобы провести повторную настройку параметров можно использовать следующую команду:sudo dpkg-reconfigure postfix
Настройка Postfix
Чтобы настроить почтовый сервер, сначала надо настроить Postfix.
Сделать это можно, редактируя файл конфигурации /etc/postfix/main.cf или используя утилиту postconf.
Настроим Postfix на использование структуры хранения почты Maildir:sudo postconf -e 'home_mailbox= Maildir/'
Зададим расположение файла алиасов, который связывает псевдонимы почтовых ящиков с системными учетными записями:sudo postconf -e 'virtual_alias_maps= hash:/etc/postfix/virtual'
Настроим сопоставление алиасов и учетных записей в файле /etc/postfix/virtual:sudo nano /etc/postfix/virtual
Например, для того, что бы почта с почтового адреса contact@testdomain.ru поступала в почтовый ящик системной учетной записи root, необходимо добавить строку:contact@testdomain.ru root
Привязав все нужные почтовые адреса к системным учетным записям, сохраните и закройте файл.
Чтобы применить новые настройки выполните команды:sudo postmap /etc/postfix/virtual
sudo systemctl restart postfix
Настройка файрволла
Чтобы разрешить внешним серверам передавать почту на наш сервер, необходимо разрешить это в UFW, используя готовый профиль Postfix:sudo ufw allow Postfix
Установка клиента и тестирование
Для отправки почтовых писем мы будем использовать s-nail – форк почтового клиента xmail, понимающий формат Maildir.
S-nail использует переменную среды MAIL, для определения расположения структуры каталогов Maildir. Для этого добавим эту переменную в файлы /etc/bash.bashrc и /etc/profile.d:echo 'export MAIL=~/Maildir' | sudo tee -a /etc/bash.bashrc | sudo tee -a /etc/profile.d/mail.sh
Установим s-nail:sudo apt install s-nail
Настроим конфигурацию почтового клиента s-nail. Добавим в конец файла /etc/s-nail.rc строки:sudo nano /etc/s-nail.rc
...
set emptystart
set folder=Maildir
set record=+sent
- set emptystart – разрешает клиенту открываться даже при пустом почтовом ящике
- set folder=Maildir – указывает название каталога с структурой почтовых папок
- set record=+sent создает файл sent для хранения отправленной почты
echo 'Hello' | s-nail -s 'Hello' -Snorecord username
Здесь вместо username, укажите имя своей системной учетной записи.
После этого проверим структуру каталогов текущей системной учетной записи:ls -R ~/Maildir
Если настройки верные, мы увидим доставленное письмо в виде текстового файла в папке ~/Maildir/new
Теперь мы можем прочитать наше отправленное письмо, открыв s-nail:s-nail
Нажмите ENTER, чтобы вывести текст письма:
Структура каталогов создана, и почтовая система Postfix настроена на вашем сервере и готова к работе.
Заключение
Эта статья — все лишь базовая инструкция, как настроить почтовый сервер на VPS.
В зависимости от требований Postfix, сервер может быть гибко сконфигурирован – он поддерживает гибкую фильтрацию писем, фильтрацию спама, а для крупных почтовых систем, может использовать сервер баз данных, такой как MySQL – для хранения данных.
Но если вы освоили описанную здесь последовательность действий и разобрались с основами, то всё, что вам понадобится, несложно будет выяснить из документации.