Гайд по установке и настройке Postfix для отправки писем с VPS, включая настройку SPF и DKIM.
Для чего VPS-серверу нужен почтовый модуль

Сигналы о сбоях, уведомления от систем мониторинга, письма из форм обратной связи, пароли восстановления, регистрационные данные — все эти сообщения должны уходить с сервера автоматически.
Без установленного почтового решения VPS этого не сделает: отправка будет возможна только если сервер правильно обрабатывает исходящие письма по протоколу SMTP.
Postfix будет работать корректно даже на слабом VPS, если задать точные записи SPF и DKIM в DNS.
Подготовка
Подключитесь к своему VPS по SSH:
- в Windows — PuTTY;
- в Linux/macOS откройте стандартный «Терминал».
Подключение происходит через команду:
ssh root@IP_адрес_вашего_сервера
Теперь убедимся, что в системе нет устаревших пакетов. Это поможет избежать ошибок при установке:
sudo apt update && sudo apt upgrade -y
Если обновления не требуются, система выдаст строку:
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded
Обновления установятся автоматически. По завершении снова появится приглашение ввода root@vps:~#, а ошибок не будет.
Эти команды подходят Ubuntu и Debian.
Подключение Postfix
Запустите в терминале команду:
sudo apt install postfix -y
Система предложит выбрать режим работы. Нужен вариант «Internet Site». Это значит, что сервер будет отправлять письма напрямую, без использования сторонних почтовых серверов.
Появится запрос «System mail name». Введите адрес своего домена — он будет использоваться в исходящих письмах как обратный адрес отправителя. Именно он будет использоваться в обратных адресах отправителя (info@vashexample.ru).
Проверить корректность работы Postfix можно командой:
postconf mail_version
Появится номер версии Postfix, например:
mail_version = 3.6.4
Значит, всё установлено.
Проверка отправки почты
Введите в терминале:
echo "Это тестовое письмо" | mail -s "Проверка отправки" ваш@почтовый.адрес
Здесь:
- echo "Это тестовое письмо" — текст письма;
- -s "Проверка отправки" — тема письма;
- ваш@почтовый.адрес — адрес, куда отправляется сообщение (можно указать любой ваш действующий e-mail, например, на Яндексе или Gmail).
Если письма нет, проверьте, что происходит в системе:
tail -f /var/log/mail.log
Это покажет последние строки журнала почтовой системы в режиме реального времени. При попытке отправить письмо вы увидите одну или несколько строк, связанных с этой операцией.
Когда что-то пошло не так, появятся строки с пометкой deferred, bounced, relay access denied или connection refused:
status=bounced (host gmail-smtp-in.l.google.com[...]: 550-5.7.1 Unauthorized sender)
Они свидетельствуют об ошибках, причина которых в DKIM/SPF. Что с этим делать, рассмотрим далее.
SPF — подтверждение права на отправку
Sender Policy Framework (SPF) позволяет указать в DNS, какие IP-адреса имеют право отправлять почту от имени домена.
В своём аккаунте у регистратора найдите домен в листе имён. В разделах «Управление зоной DNS», «Редактировать записи» или просто «DNS» найдите кнопку или ссылку «Добавить запись».
Впишите следующие параметры:
- тип записи: TXT;
- имя (или поддомен): @, можно не заполнять;
- значение записи:
v=spf1 mx a ip4:IP_вашего_сервера ~all
Замените IP_вашего_сервера на фактический IP-адрес вашего VPS. Если ваш сервер имеет IP 203.0.113.42, итоговая запись будет такой:
v=spf1 mx a ip4:203.0.113.42 ~all
Это значит:
- mx — разрешить отправку тем серверам, которые указаны в MX-записи домена;
- a — разрешить отправку основному серверу домена;
- ip4:... — явно указанный IP-адрес сервера;
- ~all — мягкий отказ для всех остальных (почтовые сервисы будут относить письма к подозрительным, но не блокировать сразу).
Через 5–15 минут (или дольше ― зависит от TTL) проверка SPF должна начать работать.
Цифровая подпись (DKIM)
DKIM (DomainKeys Identified Mail) — это цифровая подпись, которая добавляется к письму. Получатель проверяет её через DNS, чтобы убедиться, что письмо действительно отправлено с вашего домена и не было подделано.
Понадобится ещё один компонент — OpenDKIM.
В терминале введите:
sudo apt install opendkim opendkim-tools -y
Программа автоматически скачает нужные пакеты и завершит установку. Затем появится приглашение к вводу новой команды.
Сделаем криптографический ключ:
sudo mkdir -p /etc/opendkim/keys/вашдомен.ру
cd /etc/opendkim/keys/вашдомен.ру
sudo opendkim-genkey -s default -d вашдомен.ру
sudo chown opendkim:opendkim default.private
В итоге в этой папке появятся:
- default.private — персональный ключ;
- default.txt — добавляется в DNS (чуть позже опишем этот процесс).
Откройте KeyTable:
sudo nano /etc/opendkim/KeyTable
Впишите команду:
default._domainkey.вашдомен.ру
вашдомен.ру:default:/etc/opendkim/keys/вашдомен.ру/default.private
В разделе SigningTable набираем:
sudo nano /etc/opendkim/SigningTable
Введите:
*@вашдомен.ру default._domainkey.вашдомен.ру
Войдите в TrustedHosts:
sudo nano /etc/opendkim/TrustedHosts
Допишем в конце файла:
127.0.0.1
localhost
вашдомен.ру
Редактируем ключевой файл. В opendkim.conf вводим:
sudo nano /etc/opendkim.conf
Список должен содержать эти команды (внесите вручную, если они отсутствуют):
AutoRestart Yes
AutoRestartRate 10/1h
UMask 002
Syslog yes
SyslogSuccess yes
LogWhy yes
Canonicalization relaxed/simple
Mode sv
SubDomains no
Socket inet:12301@localhost
Selector default
KeyFile /etc/opendkim/keys/вашдомен.ру/default.private
SigningTable refile:/etc/opendkim/SigningTable
KeyTable refile:/etc/opendkim/KeyTable
TrustedHosts /etc/opendkim/TrustedHosts
Переходим к подключению OpenDKIM к Postfix.
Main.cf отвечает за базовые параметры Postfix. Откройте его командой:
sudo nano /etc/postfix/main.cf
В конце вставьте:
# Подключение OpenDKIM
milter_default_action = accept
milter_protocol = 2
smtpd_milters = inet:localhost:12301
non_smtpd_milters = inet:localhost:12301
Это значит:
- milter_default_action = accept — если OpenDKIM вдруг не сработает, письмо всё равно отправится (важно для надёжности);
- smtpd_milters и non_smtpd_milters — направляют письма в OpenDKIM — он принимает их на локальный порт 12301 и ставит цифровую подпись.
Запустите повторно оба сервиса:
sudo systemctl restart opendkim
sudo systemctl restart postfix
Чтобы проверить работу OpenDKIM вводим:
sudo systemctl status opendkim
Должна появиться строка:
Active: active (running)
Возможные ошибки будут указаны сразу ниже.
После отправки тестового письма снова посмотрите в журнал:
tail -f /var/log/mail.log
Там должны быть строки, подтверждающие подпись DKIM. Например:
opendkim[1234]: DKIM-Signature field added
Когда их нет, возможно, Postfix не подключён к OpenDKIM или есть ошибка в путях.
Теперь добавим DKIM-запись в DNS — это позволит почтовым сервисам проверять подлинность сообщений с вашего домена.
Вносим DKIM-запись в DNS
Откроем default.txt, появившийся в /etc/opendkim/keys/вашдомен.ру:
sudo cat /etc/opendkim/keys/вашдомен.ру/default.txt
Вы увидите что-то вроде:
default._domainkey IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GC...QAB"
Не копируйте строку полностью — скопируйте только значение записи в кавычках после:
default._domainkey IN TXT
Войдите в раздел «DNS-записи» или «DNS-управление» вашего регистратора.
Выберите «Добавить запись» или «Создать новую DNS-запись».
Заполните несколько полей:
- тип записи: TXT;
- имя (поддомен) ― default._domainkey или default._domainkey.вашдомен.ру (в зависимости от регистратора). Если не уверены — проверьте документацию своего регистратора. Часто нужно просто default._domainkey, а домен добавляется автоматически;
- значение:
v=DKIM1; k=rsa;p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD...IDAQAB
Это весь длинный текст из файла default.txt. Он должен быть в одной строке (без переносов). Просто удалите все переносы строки при копировании.
Может пройти от 5 минут до 24 часов, прежде чем запись начнёт работать.
Чтобы проверить работу DKIM, отправьте письмо, например, на свой Gmail.
Откройте полученное сообщение и нажмите:
Три точки (⋮) → «Показать оригинал» (Show original).
Найдите строку:
DKIM: PASS
Если она есть — всё работает.
Читайте в блоге:
- Установка и настройка почтового сервера Exim4 на Linux
- Как проверить работу DNS-сервера и исправить неполадки
- VPS для почтовых рассылок: аренда и настройка виртуального сервера