Безопасность и Защита 10 мин чтения 2026-08-30

Как настроить почту на VDS, чтобы письма не летели в спам: пошаговый гайд по SPF, DKIM, DMARC и PTR для Mail.ru и Яндекса в 2026 году

Полный инженерный гайд по настройке почты на VDS без попадания в спам: репутация IP, настройка Reverse DNS (PTR), Postfix Send-Only, генерация 2048-битной подписи OpenDKIM, эталонные DNS-записи SPF и DMARC для Mail.ru, Яндекс Почты и Gmail.

Инженерная редакция SysKit Проверено инженерами SysKit.ru

Каждый вебмастер, интернет-магазин или стартап рано или поздно сталкивается с критической проблемой: письма с сайта — подтверждения регистрации, чеки об оплате, ссылки для сброса пароля или сервисные уведомления — не доходят до адресатов или прямиком улетают в папку «Спам» на Mail.ru, Яндекс Почте и Gmail. Разработчик проверяет код отправки через mail() или PHPMailer: ошибок нет, функция возвращает true, но почтовые ящики клиентов остаются пустыми.

Причина в том, что современные почтовые сервисы ведут агрессивную войну со спамом и фишингом. В 2024–2026 годах почтовые провайдеры перешли на модель нулевого доверия: если у сервера нет корректной обратной DNS-записи (PTR), не настроена криптографическая подпись DKIM или отсутствует строгая политика DMARC, письмо либо немедленно отбрасывается еще на этапе SMTP-рукопожатия с кодом 550 5.7.1 Message rejected, либо без предупреждения маркируется как подозрительное.

В этом пошаговом руководстве мы разберем весь процесс настройки надежного, легковесного почтового узла на Ubuntu 24.04 LTS: от открытия портов и прописки PTR у хостера до конфигурации Postfix Send-Only, развертывания 2048-битного OpenDKIM и формирования идеальных записей SPF и DMARC для получения заветного балла 10/10 на Mail-Tester.

💡
Совет инженера: Если ваша цель — отправлять системные уведомления с сайта (транзакционные письма), никогда не разворачивайте тяжелые комбайны с Dovecot, Roundcube и SpamAssassin. Серверу нужен только легковесный демон Postfix в режиме Send-Only, который слушает исключительно локальный сокет 127.0.0.1. Это сэкономит оперативную память и гарантирует, что ваш сервер случайно не превратится в открытый спам-релей (Open Relay).

1. Почему письма с нового VDS сразу летят в спам

Когда вы разворачиваете новый VDS у хостинг-провайдера, вам достается публичный IPv4-адрес. В 80% случаев этот IP-адрес ранее уже использовался другими арендаторами. Если предыдущий владелец занимался агрессивным парсингом, рассылками или его сервер был взломан ботнетом, адрес может находиться в десятках международных спам-баз (DNSBL).

Кроме репутации IP, современные спам-фильтры (Яндекс Спамооборона, Mail.ru Антиспам, Google Spam Filter) оценивают совокупность технических факторов:

Фактор доверия Зачем нужен почтовикам Что происходит при отсутствии Где настраивается
Обратная зона PTR (rDNS) Связывает IP-адрес сервера с его официальным FQDN хостнеймом Мгновенный реджект (550 Mail.ru / Gmail) Панель хостинга VDS
Запись SPF (TXT) Список доверенных IP, имеющих право отправлять почту от имени домена Метка «Подозрительный отправитель», Спам DNS редактор домена
Подпись DKIM (RSA) Криптографическая гарантия, что тело и заголовки не подменены по пути Письма не проходят валидацию подлинности Сервер (OpenDKIM) + DNS
Политика DMARC (TXT) Указывает почтовикам, что делать с письмами при сбое SPF/DKIM Отказ от доставки по строгим правилам 2026 года DNS редактор домена
Чистота IP в блэклистах Отсутствие IP в базах Spamhaus, Barracuda, SORBS Блокировка всех исходящих писем Проверка через чекер SysKit

Перед началом настройки обязательно проверьте IP-адрес вашего сервера в нашем онлайн-инструменте Проверка IP в спам-базах DNSBL. Если адрес заблокирован в Spamhaus ZEN или CBL, проще всего сразу запросить у хостера смену IPv4-адреса, пока на сервере нет боевых проектов.

2. Шаг 1: Проверка 25 порта и настройка обратной зоны PTR (Reverse DNS)

Два главных инфраструктурных требования для любого почтового узла — это доступность исходящего TCP-порта 25 и совпадение обратной DNS-записи PTR с FQDN именем сервера.

1. Проверка исходящего порта 25 (SMTP):
Большинство добросовестных провайдеров блокируют исходящие соединения по порту 25 на новых аккаунтах для предотвращения распространения спама вредоносными ботами. Проверьте доступность порта командой в терминале сервера:

# Проверяем исходящее соединение к почтовому шлюзу Яндекс Почты
nc -zv -w 5 mx.yandex.ru 25
# Или через telnet:
telnet mx.yandex.ru 25

Если в ответ выводится Connection to mx.yandex.ru 25 port [tcp/smtp] succeeded! — порт открыт. Если соединение висит с Connection timed out — порт заблокирован на аппаратном фаерволе хостинга. В этом случае напишите в техподдержку вашего провайдера: «Здравствуйте! Прошу открыть исходящий TCP порт 25 на сервере для отправки сервисных транзакционных писем с сайта (уведомления и регистрация клиентов)». Провайдеры уровня Selectel, Timeweb или Beget открывают порт в течение 10–20 минут после подтверждения личности владельца аккаунта.

2. Настройка имени хоста (FQDN) на сервере:
Имя сервера не должно быть бессмысленным набором символов вроде vds12345. Оно обязано быть полноценным поддоменом вашего основного домена, например mail.example.com:

# Задаем официальный FQDN хостнейм сервера
sudo hostnamectl set-hostname mail.example.com

# Проверяем корректность:
hostname -f
# Должно вернуть: mail.example.com

Отредактируйте файл /etc/hosts, добавив сопоставление вашего внешнего IP и домена:

127.0.0.1 localhost
198.51.100.4 mail.example.com mail

3. Прописка PTR-записи в личном кабинете хостинга:
В панели управления хостингом найдите раздел Сеть / IP-адреса или карточку вашего VDS. Найдите поле «Обратная зона (PTR / Reverse DNS)» и впишите туда точный FQDN: mail.example.com.

Для проверки распространения PTR-записи выполните команду:

dig -x 198.51.100.4 +short
# Ожидаемый ответ: mail.example.com.

3. Шаг 2: Установка и чистая настройка Postfix Send-Only

Для отправки транзакционных писем с сайта нам потребуется почтовый транспортный агент (MTA) Postfix. Мы настроим его в строгом режиме Send-Only: сервер будет принимать письма только от локальных процессов сайта (PHP, Node.js, Python), исключая прослушивание внешнего сетевого интерфейса.

# 1. Устанавливаем Postfix и утилиты проверки почты
sudo apt update
sudo apt install -y postfix mailutils libsasl2-modules

Во время установки появится диалоговое окно конфигуратора пакетов (debconf):

  • General type of mail configuration: выберите Internet Site.
  • System mail name: введите ваш основной домен (например, example.com).

Создание безопасной конфигурации /etc/postfix/main.cf:
Создайте резервную копию исходного файла и запишите эталонную конфигурацию:

sudo cp /etc/postfix/main.cf /etc/postfix/main.cf.bak
sudo nano /etc/postfix/main.cf

Вставьте следующее содержимое (замените mail.example.com и example.com на ваши данные):

# Баннер почтового демона (скрываем точную версию в целях безопасности)
smtpd_banner = $myhostname ESMTP

biff = no
append_dot_mydomain = no
readme_directory = no

# Идентификация сервера и доменов
myhostname = mail.example.com
mydomain = example.com
myorigin = $mydomain
mydestination = $myhostname, localhost.$mydomain, localhost

# Релей и маршрутизация
relayhost = 
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +

# КРИТИЧЕСКИ ВАЖНО: Принимаем почту ТОЛЬКО от локальной системы
inet_interfaces = loopback-only
inet_protocols = ipv4

# Безопасность TLS при отправке на внешние почтовики (Яндекс, Mail.ru, Google)
smtp_tls_security_level = may
smtp_tls_loglevel = 1
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# Лимиты и предотвращение флуда
default_process_limit = 50
smtpd_client_connection_count_limit = 10

Проверьте синтаксис конфига и перезапустите службу:

# Проверка синтаксиса Postfix (ошибок быть не должно)
sudo postfix check

# Перезапуск сервиса
sudo systemctl restart postfix
sudo systemctl enable postfix

Убедитесь через команду sudo ss -tulpn | grep 25, что процесс master слушает строго адрес 127.0.0.1:25, но ни в коем случае не 0.0.0.0:25. Полную эталонную спецификацию директив смотрите в нашем pSEO-конфиге Конфигурация Postfix Send-Only для сайта.

4. Рекомендуемые VDS-провайдеры с чистыми IP и поддержкой PTR

Для стабильной доставки почты критически важны два параметра хостинга: возможность самостоятельного управления обратной зоной PTR в панели управления и чистые пулы IP-адресов без шлейфа спам-активности. Ниже представлены проверенные хостинг-провайдеры, полностью отвечающие этим требованиям:

Рекомендуемые VDS-провайдеры

Отказоустойчивые сервера с быстрыми NVMe и каналом до 1 Гбит/с

Чистые IP и PTR в 1 клик
🔷

Selectel Cloud VPS

Tier III дата-центры в Москве и Санкт-Петербурге, чистые диапазоны IP-адресов без спам-истории. Мгновенная настройка PTR-записи в панели управления, быстрый гигабитный порт и NVMe диски.

Конфигурация
от 1 vCPU / 1 GB RAM / 15 GB NVMe
Удобная панель DNS и PTR

Timeweb Cloud VDS

Позволяет прописать Reverse DNS (PTR) прямо в карточке сервера за 10 секунд. Мощные процессоры AMD EPYC до 5.0 GHz, гибкая настройка фаервола и быстрая техподдержка.

Конфигурация
от 1 vCPU / 2 GB RAM / 30 GB NVMe
Идеально для сайтов и почты
🟠

Beget VPS

Простое управление DNS-зонами и PTR в интуитивной панели. Быстрое открытие почтового порта по запросу, стабильный аптайм 99.98% и круглосуточный саппорт.

Конфигурация
от 1 vCPU / 2 GB RAM / 35 GB NVMe

5. Шаг 3: Настройка цифровой подписи OpenDKIM (RSA 2048-bit)

Технология DKIM (DomainKeys Identified Mail) добавляет в заголовок каждого отправленного письма криптографическую подпись, созданную с помощью закрытого приватного ключа сервера. Почтовый сервер получателя (Яндекс или Gmail) берет открытый публичный ключ из вашей DNS-записи и проверяет целостность сообщения. Если подпись совпадает — получатель на 100% уверен, что письмо действительно отправлено с вашего сервера и не было изменено третьими лицами.

1. Установка OpenDKIM и вспомогательных утилит:

sudo apt install -y opendkim opendkim-tools

2. Конфигурация /etc/opendkim.conf:
Откройте файл конфигурации OpenDKIM и приведите его к следующему виду:

# Режим работы: подпись (s) и верификация (v)
Mode                    sv
Syslog                  yes
SyslogSuccess           yes
LogWhy                  yes

# Каноникализация: расслабленный режим для заголовков и тела
Canonicalization        relaxed/simple

# Доверенные хосты и ключи
UserID                  opendkim:opendkim
UMask                   002
Socket                  inet:8891@localhost

# Карты маршрутизации ключей
KeyTable                /etc/opendkim/key.table
SigningTable            refile:/etc/opendkim/signing.table
ExternalIgnoreList      refile:/etc/opendkim/trusted.hosts
InternalHosts           refile:/etc/opendkim/trusted.hosts

3. Создание таблиц и каталогов ключей:

# Создаем рабочие каталоги
sudo mkdir -p /etc/opendkim/keys/example.com
sudo chown -R opendkim:opendkim /etc/opendkim
sudo chmod go-rw /etc/opendkim/keys

# 1. Файл доверенных хостов: /etc/opendkim/trusted.hosts
sudo tee /etc/opendkim/trusted.hosts <<EOF
127.0.0.1
localhost
*.example.com
EOF

# 2. Файл сопоставления отправителей: /etc/opendkim/signing.table
sudo tee /etc/opendkim/signing.table <<EOF
*@example.com    mail._domainkey.example.com
EOF

# 3. Файл путей к ключам: /etc/opendkim/key.table
sudo tee /etc/opendkim/key.table <<EOF
mail._domainkey.example.com    example.com:mail:/etc/opendkim/keys/example.com/mail.private
EOF

4. Генерация криптографической пары ключей RSA 2048 бит:
Не используйте устаревшие 1024-битные ключи — с 2024 года они помечаются почтовиками как небезопасные. Генерируем современный 2048-битный ключ с селектором mail:

cd /etc/opendkim/keys/example.com
sudo opendkim-genkey -b 2048 -d example.com -s mail
sudo chown opendkim:opendkim mail.private
sudo chmod 600 mail.private

После генерации в папке появятся два файла: закрытый ключ mail.private и открытый ключ для DNS mail.txt. Выведите содержимое mail.txt на экран:

sudo cat /etc/opendkim/keys/example.com/mail.txt

Вы увидите строку вида:

mail._domainkey IN TXT ( "v=DKIM1; h=sha256; k=rsa; "
  "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0yP..." )

5. Интеграция OpenDKIM с Postfix:
Добавьте в конец файла /etc/postfix/main.cf параметры взаимодействия через сокет Milter:

# Интеграция Milter (OpenDKIM)
milter_protocol = 6
milter_default_action = accept
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891

Перезапустите обе службы:

sudo systemctl restart opendkim postfix
sudo systemctl enable opendkim

Готовые шаблоны директив смотрите в нашем интерактивном генераторе Конфигурация OpenDKIM для Postfix.

6. Шаг 4: Эталонные DNS-записи SPF и политики DMARC

Теперь переходим в панель управления DNS вашего домена (Cloudflare, Beget, Timeweb, Selectel или Reg.ru) и добавляем три обязательные TXT-записи:

1. Запись DKIM (Публичный ключ):
Создайте запись типа TXT:

  • Имя записи (Host): mail._domainkey (или mail._domainkey.example.com.)
  • Значение: скопируйте всю строку v=DKIM1; k=rsa; p=ВАШ_ДЛИННЫЙ_КЛЮЧ из файла mail.txt (убрав кавычки и переносы строк).

2. Запись SPF (Авторизованные отправители):
Запись SPF сообщает миру, каким серверам разрешено отправлять почту от имени вашего домена. Создайте запись TXT для корня домена (@):

v=spf1 ip4:198.51.100.4 ~all

Если на домене также подключена корпоративная почта от Яндекс 360 или VK WorkMail, объедините директивы в одну запись:

v=spf1 ip4:198.51.100.4 include:_spf.yandex.net ~all
⚠️
Важное правило RFC: У домена может быть строго одна TXT-запись SPF! Если создать две разные записи v=spf1 ..., валидатор вернет ошибку PermError: Multiple SPF records, и письма немедленно отправятся в спам. Воспользуйтесь нашим Генератором SPF TXT-записей для сборки безошибочной строки.

3. Политика DMARC:
Политика DMARC (Domain-based Message Authentication, Reporting, and Conformance) указывает почтовым системам, как поступать с письмами, не прошедшими проверку SPF или DKIM. Создайте запись типа TXT:

  • Имя записи (Host): _dmarc (или _dmarc.example.com.)
  • Значение (Рекомендуемый стандарт 2026 года):
    v=DMARC1; p=quarantine; rua=mailto:dmarc-reports@example.com; pct=100; sp=quarantine; aspf=r; adkim=r

Параметр p=quarantine указывает почтовикам складывать подозрительные поддельные письма в спам, а на адрес rua=mailto:... ежедневно будут приходить XML-отчеты от Mail.ru и Google о статусе доставок. Сконфигурировать политику под ваш проект поможет наш Конструктор политики DMARC.

Проверьте публикацию всех созданных записей в глобальной сети через наш инструмент DNS Lookup и Резолвер SysKit.

7. Шаг 5: Заголовки писем (List-Unsubscribe, Precedence)

Даже при идеальной криптографической настройке DNS роботы спам-фильтров анализируют заголовки и тело самого сообщения. Отправка писем через стандартную функцию PHP mail('user@example.com', 'Subject', 'Message') без заголовков часто приводит к санкциям.

Обязательные технические заголовки для писем с сайта:

<?php
$to = 'client@mail.ru';
$subject = '=?UTF-8?B?' . base64_encode('Подтверждение заказа #1042') . '?=';
$message = '<html><body><p>Спасибо за покупку!</p></body></html>';

$headers = [
    'MIME-Version: 1.0',
    'Content-type: text/html; charset=utf-8',
    'From: =?UTF-8?B?' . base64_encode('Магазин SysKit') . '?= <noreply@example.com>',
    'Reply-To: support@example.com',
    'X-Mailer: PHP/' . phpversion(),
    // Служебные заголовки почтовой гигиены:
    'Precedence: bulk',
    'List-Unsubscribe: <https://example.com/unsubscribe?token=abc123xyz>',
    'List-Unsubscribe-Post: List-Unsubscribe=One-Click'
];

// Параметр -f передает точный Envelope-From адрес демону Postfix:
mail($to, $subject, $message, implode("\r\n", $headers), '-f noreply@example.com');
?>

Почему это важно: Заголовок List-Unsubscribe с поддержкой One-Click является обязательным требованием почтовых сервисов. В интерфейсах Mail.ru и Gmail рядом с именем отправителя появляется аккуратная кнопка «Отписаться». Если пользователю надоест ваша рассылка, он нажмет «Отписаться», вместо того чтобы нажимать «Это спам!». Каждый клик по кнопке «Это спам» обрушивает общую репутацию вашего IP-адреса.

8. Шаг 6: Тестирование доставляемости (Mail-Tester 10/10)

Когда настройка завершена, наступает этап объективного аудита. Лучший инструмент для комплексной проверки — сервис Mail-Tester.com.

Порядок тестирования:

  1. Откройте сайт mail-tester.com. Сервис сгенерирует для вас уникальный временный адрес вида test-xyz123@srv1.mail-tester.com.
  2. Отправьте на этот адрес тестовое письмо с вашего сервера из командной строки Linux:
    echo "Тестовое сообщение для проверки подписи DKIM и SPF с сервера VDS" | mail -s "Тест доставляемости" -a "From: noreply@example.com" test-xyz123@srv1.mail-tester.com
  3. Подождите 10 секунд и нажмите кнопку «Проверить оценку» на сайте Mail-Tester.

Разбор идеального отчета (10/10):

  • SPF: pass — IP-адрес сервера авторизован в TXT-записи домена.
  • DKIM: pass — Цифровая подпись 2048 бит валидна и соответствует селектору mail.
  • DMARC: pass — Политика успешно сопоставила заголовок From с подписью DKIM и SPF.
  • Reverse DNS (PTR): pass — IP резолвится в mail.example.com, а поддомен резолвится обратно в IP.
  • SpamAssassin: 0 штрафных баллов — В теле письма и заголовках нет признаков фишинга.
  • Блэклисты: 0 — IP-адрес отсутствует во всех спам-базах (сверьте данные с нашим чекером DNSBL).

Также отправьте реальное письмо на тестовый ящик @yandex.ru и @mail.ru. Откройте входящее письмо, нажмите «Свойства письма» (или «Исходный код») и убедитесь в наличии заветных строк:

Authentication-Results: mx.yandex.ru;
    dkim=pass header.i=@example.com;
    spf=pass (mx.yandex.ru: domain of example.com designates 198.51.100.4 as permitted sender);
    dmarc=pass action=none header.from=example.com;

9. Чек-лист сисадмина и типичные фатальные ошибки

✅ Чек-лист идеальной доставляемости:

  • Исходящий TCP-порт 25 открыт хостинг-провайдером.
  • Задано FQDN имя сервера mail.domain.com и прописана запись PTR.
  • Postfix настроен в режиме Send-Only (inet_interfaces = loopback-only).
  • Ключ OpenDKIM 2048 бит сгенерирован и связан через Milter.
  • В DNS создана валидная запись mail._domainkey.
  • Опубликована строгая SPF-запись без синтаксических ошибок.
  • Настроена политика DMARC с адресом для входящих отчетов rua=....
  • Письма содержат обязательные заголовки From, Precedence и List-Unsubscribe.
  • Оценка на Mail-Tester составляет 10 из 10 баллов.

⚠️ Ошибки, гарантированно ведущие в спам:

  • Отправка от чужого домена: Отправка писем с From: admin@gmail.com со своего VDS моментально блокируется жесткой политикой DMARC Google (p=reject). Всегда используйте свой домен (например, noreply@yourdomain.com).
  • Случайный Open Relay: Если оставить inet_interfaces = all без авторизации, спам-боты быстро найдут открытый 25 порт и за пару часов разошлют через ваш сервер миллион писем, навсегда уничтожив репутацию IP.
  • Несоответствие Envelope-From и Header From: Если в теле письма указан From: noreply@example.com, а MTA отправляет его как www-data@mail.example.com, почтовики расценивают это как маскировку. Используйте флаг -f noreply@example.com.
  • Отсутствие A-записи для поддомена mail: Имя, указанное в PTR (mail.example.com), обязано резолвиться обратно в этот же IP-адрес. Прямая и обратная зоны должны строго совпадать.

10. Резюме и вердикт

Обеспечение 100% доставляемости писем во «Входящие» — это строго детерминированная техническая процедура. В 2026 году почтовые сервисы больше не прощают небрежности: отсутствие PTR, кривые SPF или отсутствие DKIM-подписи автоматически отправляют транзакционную почту в спам.

Связка из легковесного Postfix Send-Only, надежной 2048-битной подписи OpenDKIM, корректных DNS-записей SPF/DMARC и чистого KVM-сервера с выделенным белым IP решает проблему спама раз и навсегда. Проверить состояние сетевых портов сервера можно через наш Сканер портов, валидировать DNS-записи — через DNS Lookup, а убедиться в отсутствии адреса в черных списках — через инструмент Проверка IP в спам-базах DNSBL.

Нужен надежный сервер с чистым IP под почту и сайты?

Разверните производительный облачный KVM VDS с легким управлением PTR-записью, защитой от атак и быстрым портом 1 Гбит/с на Selectel всего от 200 ₽ в месяц.

11. Часто задаваемые вопросы (FAQ)

Вопросы и ответы (FAQ)

Популярные вопросы вебмастеров и сисадминов по данной теме

Почему письма приходят во Входящие на Gmail, но попадают в Спам на Mail.ru и Яндекс?
У российских почтовых сервисов (Mail.ru и Яндекс Почта) действуют особенно строгие правила проверки обратной зоны PTR и подписи DKIM. Если заголовок DKIM отсутствует или PTR-запись хостинга не совпадает с доменом отправителя, письмо автоматически отправляется в спам. Убедитесь, что PTR настроен, а Mail-Tester дает 10/10.
Можно ли отправлять письма с VDS без настройки OpenDKIM?
Технически можно, но доставляемость таких писем будет крайне низкой (< 30%). Начиная с 2024 года все крупные провайдеры (Google, Mail.ru, Яндекс) ввели требование обязательной криптографической аутентификации отправителя. Письма без DKIM либо сразу блокируются почтовыми шлюзами, либо маркируются как спам.
Что делать, если хостинг-провайдер отказывается открыть исходящий порт 25?
Если провайдер категорически блокирует порт 25 (что бывает на бесплатных или сверхдешевых зарубежных VPS), используйте отправку через внешний защищенный SMTP-релей с портами 465 (SSL) или 587 (STARTTLS). Например, подключите бесплатный SMTP от Яндекс 360, VK WorkMail или сервис Brevo/SendGrid, настроив relayhost в Postfix.

Читайте также в блоге SysKit

Смежные руководства и полезные технические статьи