Как настроить почтовый сервер Postfix на VPS для отправки писем

Как настроить почтовый сервер Postfix на VPS для отправки писем

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

Для чего VPS-серверу нужен почтовый модуль

Postfix лого

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

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

Postfix будет работать корректно даже на слабом VPS, если задать точные записи SPF и DKIM в DNS.

Аренда VPS/VDS от 219 руб/месяц

Преимущества VPS в AdminVPS:

✓ Бесплатное администрирование

✓ Только быстрые NVMe-диски

✓ Защита от DDoS-атак

✓ Быстрая техподдержка

Аренда VPS/VDS виртуального сервера от AdminVPS — это прозрачная и честная услуга с доступной ценой

Подготовка 

Подключитесь к своему 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

Если она есть — всё работает.

Читайте в блоге:

Loading spinner
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

VPN на VPS-сервере

Узнайте, как создать собственный VPN на VPS-сервере для защиты ваших конфиденциальных данных!

Что будем искать? Например,VPS-сервер

Мы в социальных сетях