Гайд по установке и настройке 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 для почтовых рассылок: аренда и настройка виртуального сервера

