Свой почтовый сервер на Linux собирается из двух программ: Postfix принимает и отправляет письма, Dovecot отдаёт их почтовому клиенту по IMAP. На чистой Ubuntu связка ставится за 40–60 минут, но заработает она только после того, как вы пропишете в DNS четыре записи и получите PTR у хостера. Минимум под такую задачу — 1 ядро и 1–2 ГБ оперативной памяти, от 59 ₽ в месяц; подобрать конфигурацию можно в разделе VPS под почтовый сервер.
Материал написан для тех, кто раньше не администрировал почту: каждая команда разобрана по частям, у каждой DNS-записи показано готовое значение, а в конце собраны ошибки, из-за которых письма улетают в спам. Отдельный раздел посвящён 25-му порту — его блокировка ломает схему ещё до установки первого пакета.
Зачем поднимать почтовый сервер на своём VPS
Собственный сервер даёт три вещи, которых нет у бесплатных ящиков: неограниченное число адресов на домене, доступ к логам доставки и хранение переписки на своём диске. Для компании из 10–30 человек это ещё и предсказуемая цена: сервис с оплатой за пользователя обойдётся в 200–400 ₽ на сотрудника, а VPS за 200 ₽ обслуживает всех сразу.
Обратная сторона — вы становитесь администратором. Никто не починит за вас упавший Postfix в субботу. На поддержку уходит 1–2 часа в месяц в спокойном режиме и целый вечер, когда IP попадает в чёрный список.
Схема оправдана при объёме до 500–1000 писем в сутки: уведомления сайта, счета, внутренняя переписка. Для рассылок на десятки тысяч адресов репутацию одиночного IP не вытянуть.
Что подготовить до установки: домен, IP и доступ
Перед первой командой закройте четыре пункта. Домен второго уровня с доступом к DNS-зоне: без права добавлять TXT-записи настройка не поедет. Выделенный IPv4-адрес. Возможность заказать у провайдера PTR-запись. И открытый исходящий 25-й порт.
Операционная система — Ubuntu 22.04 LTS или 24.04 LTS. Обе поддерживаются до 2027 и 2029 года, обе несут Postfix 3.7 и новее в штатном репозитории, так что собирать что-то из исходников не придётся. Тарифы с готовым образом ищутся в подборке VPS с Ubuntu 24.04.
Диска почта ест немного: система с пакетами занимает 4–6 ГБ, остальное уходит под письма. Для 20 ящиков с активной перепиской 20–30 ГБ хватает на 2–3 года. Бэкап настраивают в тот же день, что и сервер.

Сколько памяти нужно почтовому серверу и сколько стоит VPS
Postfix укладывается в 40–80 МБ памяти, Dovecot — в 60–120 МБ. Проблема начинается с антиспам-фильтра: Rspamd просит 400–600 МБ, а SpamAssassin на пике съедает до 500 МБ. Отсюда минимум в 1 ГБ для голой связки и 2 ГБ для конфигурации с фильтрацией и веб-интерфейсом.
На 512 МБ сервер запустится, но при двух-трёх одновременных подключениях ядро начнёт убивать процессы по нехватке памяти. Компромисс — 1 ГБ RAM плюс swap-файл на 2 ГБ.
| Провайдер | Стартовая цена | Базовая конфигурация | Рейтинг | Тарифов в каталоге |
|---|---|---|---|---|
| Cloudcore | от 59 ₽ / мес | 1 ядро, 1 ГБ RAM, 10 ГБ NVMe | 3.3 | 12 |
| RuVDS | от 139 ₽ / мес | 1 ядро, 0.5 ГБ RAM, 10 ГБ HDD | 4.3 | 440 |
| Timeweb | от 180 ₽ / мес | 15 ГБ NVMe | 4.3 | 77 |
| Selectel | от 200 ₽ / мес | 1 ядро, 1 ГБ RAM, 10 ГБ NVMe | 4.5 | 69 |
| Beget | от 330 ₽ / мес | 1 ядро, 1 ГБ RAM, 10 ГБ NVMe | 4.5 | 7 |
| IQHost | от 350 ₽ / мес | 1 ядро, 2 ГБ RAM, 15 ГБ SSD | 4.0 | 17 |
Данные проверены 02.09.2026.
Тарифы за 59–150 ₽ подходят для теста, но у бюджетных провайдеров чаще встречаются «грязные» подсети, из которых письма хуже доходят. Цены есть в подборке недорогих VPS, а вся линейка систем на ядре Linux — в разделе VPS на Linux.
Порты почтового сервера и главная проблема — закрытый 25-й
Почта живёт на шести портах, и путать их нельзя: 25-й отвечает за обмен между серверами, 587-й — за отправку писем из почтового клиента. Закроете 25-й — чужие серверы не доставят вам входящие. Оставите 587-й без обязательной авторизации — сервер за сутки станет открытым релеем для спамеров.
| Порт | Протокол | Назначение | Шифрование |
|---|---|---|---|
| 25 | SMTP | Обмен письмами между почтовыми серверами | STARTTLS, опционально |
| 587 | Submission | Отправка письма из почтовой программы | STARTTLS, обязательно |
| 465 | SMTPS | Устаревший, но живой вариант отправки | TLS сразу |
| 143 | IMAP | Чтение почты без шифрования | STARTTLS |
| 993 | IMAPS | Основной порт для чтения почты | TLS сразу |
| 995 | POP3S | Скачивание писем на устройство | TLS сразу |
У части провайдеров исходящий 25-й порт закрыт по умолчанию — так борются со спамом с угнанных виртуалок. Открывают его по заявке в поддержку: где-то за 10 минут, где-то через 1–2 рабочих дня. Спрашивать надо до оплаты, иначе сервер будет принимать письма, но не отправит ни одного. Проверяется блокировка одной командой:
nc -zv smtp.yandex.ru 25
Утилита nc пробует открыть TCP-соединение с чужим почтовым сервером по 25-му порту. Ответ succeeded означает, что порт свободен; зависание на 20–30 секунд и timed out — что провайдер режет трафик.
Подготовка Ubuntu: hostname, обновления и файрвол
Почтовые серверы сверяют с DNS имя хоста, которым машина представляется при соединении. Задайте серверу полное доменное имя вида mail.example.ru — оно обязано совпадать с A-записью и будущей PTR-записью.
sudo hostnamectl set-hostname mail.example.ru
sudo apt update && sudo apt upgrade -y
Первая команда прописывает имя хоста так, чтобы оно пережило перезагрузку. Вторая обновляет пакеты: на чистом образе это обычно 30–80 обновлений. Дальше открываем порты — файрвол ufw идёт в Ubuntu из коробки и прячет синтаксис iptables за понятными командами.
sudo ufw allow 22/tcp
sudo ufw allow 25,80,443,587,993,995/tcp
sudo ufw enable
Порт 22 — это SSH, и открыть его нужно первой строкой: включите файрвол раньше, и потеряете доступ к серверу. Порты 80 и 443 понадобятся сертификату. Разбор правил есть в гайде о том, как настроить файрвол на Linux-сервере.
Установка Postfix: пошаговая инструкция
Postfix — это MTA, агент передачи почты: он слушает 25-й и 587-й порты и либо кладёт письмо в локальный ящик, либо передаёт дальше по цепочке. Установка занимает 5–7 минут, половина уходит на ответы мастеру настройки.
- Установите пакеты:
sudo apt install -y postfix postfix-pcre dovecot-imapd dovecot-pop3d opendkim opendkim-tools. Флаг-yотвечает «да» на все вопросы apt. - В окне мастера выберите тип «Internet Site» и укажите системное почтовое имя
example.ru— это домен в адресах отправителя. - Пропишите базовые параметры через
postconf -e: утилита правит файл/etc/postfix/main.cfбез ручного редактирования. - Включите приём на 587-м порту — раскомментируйте блок
submission inet n - y - - smtpdв файле/etc/postfix/master.cf. - Создайте пользователя под ящик:
sudo adduser marina, его логин и пароль станут учётными данными почты. - Перезапустите службу:
sudo systemctl restart postfixи проверьте статусactive (running).
sudo postconf -e "myhostname = mail.example.ru"
sudo postconf -e "mydomain = example.ru"
sudo postconf -e "home_mailbox = Maildir/"
sudo postconf -e "smtpd_sasl_type = dovecot"
sudo postconf -e "smtpd_sasl_path = private/auth"
sudo postconf -e "smtpd_sasl_auth_enable = yes"
sudo postconf -e "smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination"
Параметр home_mailbox складывает письма в формат Maildir — каждое письмо отдельным файлом, что безопаснее при сбоях, чем общий mbox. Строка smtpd_recipient_restrictions закрывает сервер от посторонних: отправлять смогут только авторизованные пользователи. Без неё вас найдут спам-боты в первые сутки.

Настройка Dovecot: ящики, IMAP и POP3
Dovecot — вторая половина связки. Postfix письма принимает и раскладывает, а Dovecot отдаёт их наружу по IMAP на порт 993 или по POP3 на 995 и заодно проверяет пароли при отправке. Конфигурация разнесена по файлам в каталоге /etc/dovecot/conf.d/.
В файле 10-mail.conf строкой mail_location = maildir:~/Maildir укажите, где лежат письма, — путь обязан совпадать с заданным в Postfix. В 10-auth.conf добавьте disable_plaintext_auth = yes: директива не даёт клиенту авторизоваться по незашифрованному каналу.
Самое важное — связать две программы. В конец файла 10-master.conf добавьте сокет, через который Postfix спрашивает у Dovecot, верен ли пароль:
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
}
Права 0660 означают, что читать и писать в сокет могут владелец и группа, а посторонние — нет. После правок выполните sudo systemctl restart dovecot.
Сертификат Let’s Encrypt: бесплатно и на 90 дней
Без TLS-сертификата почтовый клиент будет ругаться на каждое подключение, а часть серверов-получателей понизит доверие к письмам. Сертификат от Let’s Encrypt выдаётся бесплатно, действует 90 дней и продлевается автоматически.
sudo apt install -y certbot
sudo certbot certonly --standalone -d mail.example.ru
Режим --standalone поднимает на 80-м порту временный веб-сервер, через который центр сертификации проверяет, что домен ваш. Проверка идёт 10–20 секунд, файлы окажутся в каталоге /etc/letsencrypt/live/mail.example.ru/. Осталось указать их Postfix:
sudo postconf -e "smtpd_tls_cert_file = /etc/letsencrypt/live/mail.example.ru/fullchain.pem"
sudo postconf -e "smtpd_tls_key_file = /etc/letsencrypt/live/mail.example.ru/privkey.pem"
sudo postconf -e "smtpd_tls_security_level = may"
Файл fullchain.pem содержит сертификат с цепочкой промежуточных, privkey.pem — закрытый ключ. Те же пути пропишите в 10-ssl.conf у Dovecot. Автопродление настроено таймером systemd и срабатывает за 30 дней до истечения; проверяется командой sudo certbot renew --dry-run. Подробности — в гайде как установить SSL от Let’s Encrypt.
DNS-записи MX, SPF, DKIM, DMARC и PTR с примерами
Программы установлены, но почта пока никуда не идёт: чужие серверы не знают, куда доставлять письма для вашего домена, и не могут проверить, что отправитель — это вы. За это отвечают пять записей в DNS плюс PTR у провайдера. Значения для домена example.ru с сервером на адресе 203.0.113.10.
| Тип | Имя | Значение | Что делает |
|---|---|---|---|
| A | 203.0.113.10 | Связывает имя mail.example.ru с IP сервера | |
| MX | @ | 10 mail.example.ru. | Указывает хост, принимающий почту домена; 10 — приоритет |
| TXT (SPF) | @ | v=spf1 mx a:mail.example.ru -all | Перечисляет серверы, которым разрешено отправлять от имени домена |
| TXT (DKIM) | mail._domainkey | v=DKIM1; k=rsa; p=MIIBIjANBgkq… | Публичный ключ для проверки подписи письма |
| TXT (DMARC) | _dmarc | v=DMARC1; p=quarantine; rua=mailto:dmarc@example.ru | Говорит получателю, что делать с непрошедшими проверку письмами |
| PTR | обратная зона | mail.example.ru | Возвращает имя хоста по IP; ставится только у провайдера |
Значение -all в SPF означает жёсткий запрет: письма с других адресов получатель вправе отклонить. Мягкий вариант ~all ставят на первые 2–3 недели. Политика p=quarantine отправляет подозрительные письма в спам, а не удаляет их; начинать лучше с p=none.
Сами вы PTR-запись не добавите: обратную зону держит владелец IP-адреса. Заявку оформляют через панель или тикет, выполняют за 15 минут — сутки. Приоритет в MX-записи имеет значение только при нескольких серверах: меньшее число — выше приоритет.
Генерация ключа DKIM через OpenDKIM
DKIM подписывает каждое исходящее письмо закрытым ключом, а получатель сверяет подпись с публичным ключом из DNS. Без подписи Gmail и Mail.ru почти гарантированно положат письмо в спам. Ключ генерируется тремя командами:
sudo mkdir -p /etc/opendkim/keys/example.ru
sudo opendkim-genkey -b 2048 -d example.ru -D /etc/opendkim/keys/example.ru -s mail -v
sudo chown -R opendkim:opendkim /etc/opendkim/keys
Параметр -b 2048 задаёт длину ключа в битах: 1024 уже считается слабым, 2048 — текущая норма. Флаг -s mail — это селектор, произвольное имя, которое станет частью DNS-записи mail._domainkey. Последняя команда передаёт файлы ключей служебному пользователю, иначе OpenDKIM не запустится из-за прав доступа.
В каталоге появятся два файла: mail.private с закрытым ключом, который не покидает сервер, и mail.txt с готовой DNS-записью. Содержимое второго копируется в панель домена — из значения убирают переносы строк и кавычки.
Проверка доставляемости писем
После правки DNS подождите, пока записи разойдутся по кэшам: обычно 15–60 минут, но при TTL 3600 и выше — до 4 часов. Затем проверьте каждую запись отдельно, не полагаясь на панель регистратора.
dig +short MX example.ru
dig +short TXT mail._domainkey.example.ru
dig -x 203.0.113.10 +short
Утилита dig спрашивает DNS напрямую и показывает то, что реально видят чужие серверы. Флаг +short убирает служебные строки, -x запускает обратный запрос и показывает, есть ли PTR-запись. Если вывод пуст, пишите в поддержку хостера. Больше приёмов диагностики — в гайде о том, как проверить DNS.
Дальше отправьте тестовое письмо на публичный сервис оценки доставляемости: он вернёт балл от 0 до 10 и покажет непройденные проверки. Цель — 9–10 баллов, при 7 и ниже письма попадают в спам у части получателей. Результат сверьте с журналом:
sudo tail -n 50 /var/log/mail.log
Команда показывает последние 50 строк лога. Строка со status=sent означает, что письмо принято сервером получателя; status=deferred — доставка отложена и будет повторяться до 5 дней; status=bounced — отказ, и рядом будет причина.
Частые ошибки при настройке почтового сервера
Почти все проблемы с самостоятельным почтовым сервером сводятся к шести сценариям. Каждый диагностируется за 5–10 минут, если знать, куда смотреть.
- Письма уходят в спам. Причина в 8 случаях из 10 — отсутствие или ошибка в DKIM и SPF.
- Закрыт 25-й порт. Исходящие висят в очереди со статусом
deferred, входящие не приходят вовсе. - Нет PTR-записи. Крупные почтовые системы отклоняют письма с адресов без обратной зоны.
- Самоподписанный сертификат. Клиенты показывают предупреждение, часть серверов откажется от TLS.
- Открытый релей. Забытая строка
reject_unauth_destination— и за сутки ваш IP в чёрных списках. - Две SPF-записи в зоне. Стандарт допускает одну; при двух проверка проваливается целиком.
Отдельная история — новый IP без истории отправки. Даже при идеальных записях первые 100–200 писем могут попадать в спам: почтовые системы наблюдают за адресом 2–4 недели. Наращивайте объём постепенно.
Частые вопросы
Сколько оперативной памяти реально нужно почтовому серверу? Связка Postfix и Dovecot без антиспама работает на 1 ГБ и занимает 150–200 МБ в покое. Планируете Rspamd и веб-интерфейс — берите 2 ГБ.
Что делать, если провайдер не открывает 25-й порт? Входящую почту вы получите в любом случае, ограничение касается исходящих соединений. Вариантов два: сменить хостера или отправлять письма через внешний SMTP-релей, указав его в параметре relayhost Postfix.
Обязателен ли выделенный IP-адрес? Да. На общем адресе PTR-запись указывает на чужое имя, а репутация зависит от соседей: одна спам-рассылка с той же машины — и ваши письма перестают доходить.
Можно ли поставить почту на тот же сервер, где крутится сайт? На VPS с 2 ГБ RAM это допустимо, если сайт не нагруженный. Но перезагрузка ради обновления сайта на 2–3 минуты останавливает и приём почты.
Что делать, если IP попал в чёрный список? Найдите, какой именно список вас отклоняет, — причина будет в строке bounced почтового лога. Затем подайте заявку на исключение: типовое рассмотрение занимает от 24 часов до 7 дней.
Насколько сложно поддерживать такой сервер? В спокойном режиме 1–2 часа в месяц: обновления пакетов, проверка сертификата, просмотр отчётов DMARC. Копирование каталога Maildir раз в сутки обязательно, иначе переписку после сбоя диска не восстановить.
Postfix или готовая сборка вроде iRedMail? Сборка ставит те же Postfix, Dovecot и антиспам одним скриптом за 20–30 минут, но прячет настройки. Для первого сервера полезнее пройти шаги вручную: когда письма начнут теряться, вы будете знать, какой файл открывать.
Итог
Свой почтовый сервер на Linux — это Postfix, Dovecot с доступом по IMAP на 993-м порту, бесплатный сертификат на 90 дней и пять DNS-записей: A, MX, SPF, DKIM и DMARC плюс PTR от провайдера. Из железа хватит 1 ядра и 1–2 ГБ памяти, из бюджета — от 59 до 350 ₽ в месяц.
Выяснить до оплаты нужно две вещи: открыт ли исходящий 25-й порт и дают ли PTR-запись. Без них связка не заработает. Подходящие тарифы собраны в разделе VPS для почтового сервера — там видно цену, объём памяти и локацию.