Собственный почтовый сервер на Debian с Modoboa

Опубликовано Обновлено 5 мин. чтения

Установщик Modoboa за один проход настраивает Postfix, Dovecot, веб-почту и SSL. Так вы поднимете собственный почтовый сервер на Debian и пропишете нужные DNS-записи.

Вы хотите, чтобы ваша почта лежала не у бесплатного почтового сервиса, а на собственном сервере и под вашим собственным доменом? Modoboa — одно из самых удобных решений для этой задачи. Входящий в комплект установщик за один проход настраивает Postfix, Dovecot, базу данных, спам-фильтр, веб-почту и панель управления.

Эта инструкция описывает установку на Debian 12 и Debian 11. Debian 10 больше не поддерживается, и для нового почтового сервера его использовать не стоит.

Требования

  • Собственный VPS или root-сервер со свежей установкой Debian. Мы рекомендуем (не обязательно, но разумно) отвести под почту отдельный небольшой сервер, потому что имя хоста и Reverse-DNS настраиваются под почтовый домен.
  • Доступ с правами root по SSH.
  • Собственный домен, в котором вы можете самостоятельно задавать DNS-записи.
  • Постоянный IPv4-адрес, для которого вы можете прописать запись Reverse-DNS.
  • Почтовые порты должны быть доступны извне: 25 (SMTP), 587 и 465 (отправка почты вашими пользователями), 143 и 993 (IMAP), а также 80 и 443 для веб-почты и выпуска сертификата.

Важно: выполняйте установку на только что развёрнутой системе. Уже работающий веб-сервер или имеющаяся база данных регулярно приводят к аварийному завершению установщика.

Подготовка системы

Сначала приведите список пакетов и все установленные пакеты в актуальное состояние:

apt update && apt upgrade -y

Затем установите пакеты, которых ожидает установщик:

apt-get install sudo git python3 mariadb-server -y

Завершите настройку базы данных, отвечая на вопросы мастера. Задайте при этом надёжный пароль для администратора базы данных:

sudo mysql_secure_installation

Настройка имени хоста

Серверу нужно полное доменное имя хоста, подходящее к будущему почтовому домену. Без этого шага установка завершится ошибкой:

hostnamectl set-hostname mail.<ДОМЕН>.<ЗОНА>

A-запись для этого же имени лучше прописать в DNS уже сейчас. Позже установщик запросит сертификат Let's Encrypt, а это удастся только в том случае, если имя уже указывает на IP-адрес вашего сервера.

Загрузка установщика Modoboa

cd /tmp
git clone https://github.com/modoboa/modoboa-installer
cd modoboa-installer

Создание и правка файла конфигурации

Сначала пусть установщик только создаст файл конфигурации и после этого остановится:

python3 ./run.py --stop-after-configfile-check <ДОМЕН>.<ЗОНА>

Откройте созданный файл:

nano installer.cfg

Приведите следующие разделы к такому виду. Так сервер получит бесплатный SSL-сертификат от Let's Encrypt и подключится к локальной базе данных:

[certificate]
generate = true
type = letsencrypt

[letsencrypt]
email = admin@<ДОМЕН>.<ЗОНА>

[database]
engine = mysql
host = 127.0.0.1
install = true

В качестве адреса электронной почты укажите адрес, который вы действительно читаете. Let's Encrypt отправляет на него предупреждения, если продление не состоялось.

Запуск установки

python3 ./run.py mail.<ДОМЕН>.<ЗОНА>

Процесс занимает несколько минут. Используйте это время, чтобы прописать DNS-записи.

Настройка DNS-записей

A-запись и MX-запись

A-запись указывает на IP-адрес вашего сервера, а MX-запись сообщает всему миру, какой узел принимает почту для вашего домена. Приоритет «10» — обычное значение, когда почтовый сервер только один:

Запись 1:
Поддомен: mail
Тип: A (IPv4)
Цель: <IP-СЕРВЕРА>
Результат должен выглядеть так: mail.<ДОМЕН>.<ЗОНА> IN A <IP-СЕРВЕРА>

Запись 2:
(Поддомен: @)
Тип: MX
Цель: mail.<ДОМЕН>.<ЗОНА>
Результат должен выглядеть так: @ IN MX 10 mail.<ДОМЕН>.<ЗОНА>

SPF, DKIM и DMARC

Без этих трёх записей ваши письма с высокой вероятностью попадут в папку со спамом у получателей. Крупные почтовые сервисы к настоящему моменту требуют их в явном виде.

SPF определяет, каким серверам разрешено отправлять почту от имени вашего домена. Прописывается как TXT-запись на основном домене:

Тип: TXT
Имя: @
Значение: v=spf1 mx -all

DKIM криптографически подписывает ваши исходящие письма. Modoboa умеет сам создавать ключи для каждого домена. Открытый ключ вы найдёте после установки в панели управления, в настройках соответствующего домена. Это значение и вносится в DNS как TXT-запись.

DMARC сообщает получателям, как поступать с письмами, не прошедшими проверку SPF или DKIM. Начните с наблюдательного режима и ужесточите правила позже:

Тип: TXT
Имя: _dmarc
Значение: v=DMARC1; p=none; rua=mailto:postmaster@<ДОМЕН>.<ЗОНА>

Reverse-DNS (PTR)

PTR-запись разрешает ваш IP-адрес обратно в имя хоста. Многие почтовые серверы наотрез отклоняют соединения без подходящей PTR-записи. У нас вы задаёте её самостоятельно в личном кабинете:

"Мои услуги" -> "выбрать сервер" -> "нажать кнопку Reverse DNS" -> mail.<ДОМЕН>.<ЗОНА>

Важно, чтобы PTR-запись и имя хоста совпадали в точности.

Первые шаги после установки

Если установка прошла успешно, один раз перезагрузите сервер:

reboot

После этого панель управления доступна по адресу https://mail.<ДОМЕН>.<ЗОНА>. Войдите под учётной записью администратора, которую создал установщик, и первым делом смените пароль. Затем заведите свой домен и нужные почтовые ящики.

Далее проверьте работу в обе стороны: отправьте письмо с нового сервера на внешний почтовый ящик и письмо извне на свой новый адрес. Правильно ли отрабатывают SPF, DKIM, DMARC и PTR, быстрее всего покажет один из бесплатных онлайн-сервисов проверки почты.

Частые ошибки

  • Установка сразу прерывается: имя хоста не является полным доменным именем. Проверьте его командой hostname -f.
  • Сертификат не выпускается: A-запись для mail.ваш-домен указывает не на этот сервер либо порт 80 заблокирован. Let's Encrypt проверяет домен через порт 80.
  • Письма попадают в спам: чаще всего отсутствует PTR-запись либо не заданы SPF и DKIM. Проверьте все четыре записи, прежде чем использовать сервер в продуктивной работе.
  • Исходящие письма отклоняются: IP-адрес, возможно, попал в список блокировок. Большинство операторов таких списков предлагают форму проверки и запроса на разблокировку.
  • Установщик сообщает об ошибке базы данных: настройка MariaDB ещё не завершена командой mysql_secure_installation, либо в файле installer.cfg не подходит раздел с параметрами базы данных.
  • После перезагрузки ничего не работает: проверьте состояние задействованных служб командой systemctl status postfix dovecot nginx.

Собственный почтовый сервер требует больше внимания, чем другие службы: обновления, резервное копирование почтовых ящиков и постоянный контроль доставляемости. Если вы берёте это на себя, взамен вы получаете полный контроль над своей перепиской.

Автор: XEfnexX (псевдоним)

Частые вопросы

Какая версия Debian нужна для Modoboa?
Используйте Debian 12 или Debian 11 в свежей установке. Debian 10 больше не поддерживается, и для нового почтового сервера его применять не стоит.
Почему мои письма попадают в папку со спамом?
В большинстве случаев отсутствует запись Reverse-DNS либо не заданы записи SPF, DKIM и DMARC. Проверьте все четыре пункта, прежде чем использовать сервер в продуктивной работе.
Можно ли установить Modoboa на сервер с уже работающим сайтом?
Мы советуем так не делать. Установщик рассчитан на чистую систему и регулярно прерывается, если на сервере уже работает веб-сервер или база данных.
Какие порты нужно открыть?
Порт 25 для приёма почты, 587 и 465 для отправки письма вашими пользователями, 143 и 993 для IMAP, а также 80 и 443 для веб-почты и выпуска SSL-сертификата.
Как задать запись Reverse-DNS?
PTR-запись вы задаёте самостоятельно в личном кабинете в разделе «Мои услуги»: выберите сервер, откройте Reverse DNS и укажите там имя хоста вашего почтового сервера.

Почтовый сервер Modoboa Postfix Dovecot Debian SPF-DKIM-DMARC Reverse-DNS