Собственный почтовый сервер на Debian с Modoboa
Установщик 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?
Почему мои письма попадают в папку со спамом?
Можно ли установить Modoboa на сервер с уже работающим сайтом?
Какие порты нужно открыть?
Как задать запись Reverse-DNS?
2023-2026 KernelHost GmbH. Все права защищены. Эта инструкция охраняется авторским правом. Публикация на других сайтах, в том числе частично или в изменённом виде, без нашего письменного согласия не разрешается. Цитирование с указанием источника и активной ссылкой мы приветствуем.

