---
title: 'dns-zapisi-dlya-pochty-mx-spf-dkim-dmarc-s-nulya | Zomro'
description: ''
image: 'https://cdn.zomro.com/uploads/blog/a48%40server-panel.net/2026/06/29/00-cover_8o6P8dc_q50.jpg'
---

![opened image]()

  * [Zomro](https://zomro.com/rus/)
  * [FAQ](https://zomro.com/rus/blog/faq/)
  * DNS-записи для почты: MX, SPF, DKIM, DMARC с нуля 



# DNS-записи для почты: MX, SPF, DKIM, DMARC с нуля

16-06-2026

![](https://cdn.zomro.com/uploads/blog/a48%40server-panel.net/2026/06/29/00-cover_8o6P8dc_q50.jpg)

Почтовые серверы сломаны не потому что сломан Postfix. Чаще всего письма летят в спам или не доходят вовсе из-за неправильных DNS-записей. MX, SPF, DKIM и DMARC - четыре типа записей, которые вместе определяют, будет ли ваша почта доставлена. Разберём каждую по порядку: что за что отвечает, как выглядит реальная запись, как проверить и что будет если сделать неправильно.

## Как работает доставка письма

Когда сервер `mail.example.com` отправляет письмо на `user@gmail.com`, происходит следующее:

  1. Получающий сервер делает DNS-запрос MX для домена `gmail.com`

  2. Получает список MX-серверов с приоритетами

  3. Подключается к MX-серверу и передаёт письмо по SMTP

  4. MX-сервер Gmail проверяет SPF - разрешён ли IP отправителя

  5. Проверяет DKIM-подпись в заголовке письма

  6. Проверяет DMARC-политику домена отправителя

  7. Принимает письмо или отправляет в спам




Если любой из этих шагов даёт ошибку, письмо либо отклоняется, либо помечается как подозрительное.

## MX-запись: куда принимать почту

MX (Mail Exchanger) говорит другим серверам, куда направлять входящую почту для вашего домена.

### Структура записи
    
    
    example.com.    IN    MX    10    mail.example.com.
    example.com.    IN    MX    20    mail2.example.com.

  * `10` и `20` \- приоритет. Сервер с меньшим числом используется первым.

  * `mail.example.com.` \- точка в конце обязательна при прямом указании в зонном файле BIND. В панелях управления точку обычно добавляют автоматически.

  * MX-запись должна указывать на A-запись (hostname), а не напрямую на IP.




### 

### 

### Пример с одним MX

Если у вас один почтовый сервер на IP 203.0.113.5:
    
    
    mail.example.com.    IN    A      203.0.113.5
    example.com.         IN    MX    10    mail.example.com.

### 

### 

### Проверка MX
    
    
    dig MX example.com
    dig MX example.com +short

![](https://cdn.zomro.com/uploads/blog/a48%40server-panel.net/2026/06/29/01-dig-mx_q50.jpg)

Ожидаемый вывод:
    
    
    10 mail.example.com.

Через веб: [checknode.io](http://checknode.io) → RECORDS → Фильтр MX.

### 

### 

### Типичные ошибки MX

**MX указывает на CNAME.** RFC 2181 запрещает это. Некоторые серверы принимают такие письма, другие нет. Всегда указывайте на A-запись.

**Нет обратной PTR-записи.** Многие серверы проверяют, что PTR-запись IP совпадает с HELO-именем сервера. Попросите хостинг-провайдера выставить PTR для вашего IP.

**TTL слишком высокий при смене.** Перед переездом почты снизьте TTL до 300 секунд за сутки. После переезда верните к 3600.

## SPF: кто имеет право отправлять

SPF (Sender Policy Framework) - это TXT-запись, которая перечисляет IP-адреса и серверы, имеющие право отправлять почту от имени вашего домена.

### Синтаксис SPF
    
    
    example.com.    IN    TXT    "v=spf1 механизмы qualifier"

Механизмы:

  * `ip4:203.0.113.5` \- конкретный IPv4-адрес

  * `ip4:203.0.113.0/24` \- подсеть

  * `ip6:2001:db8::1` \- IPv6-адрес

  * `mx` \- все серверы, указанные в MX-записях домена

  * `a` \- A-запись самого домена

  * `include:_spf.google.com` \- включить SPF другого домена (например, Google Workspace)

  * `all` \- все остальные серверы




Квалификаторы перед механизмами:

  * `+` \- разрешить (по умолчанию, можно не писать)

  * `-` \- отклонить (жёсткий запрет)

  * `~` \- мягкий запрет (softfail, письмо принято, но помечено)

  * `?` \- нейтрально




### 

### 

### Примеры реальных SPF-записей

Только свой сервер:
    
    
    "v=spf1 ip4:203.0.113.5 -all"

Свой сервер плюс Google Workspace:
    
    
    "v=spf1 ip4:203.0.113.5 include:_spf.google.com -all"

Если отправляете только через SendGrid:
    
    
    "v=spf1 include:sendgrid.net -all"

### 

### 

### Лимит lookup-операций

SPF разрешает не более 10 DNS-запросов при проверке. Каждый `include:`, `mx`, `a` \- это отдельный запрос. Если превысить лимит, проверка вернёт `permerror` и письмо может быть отклонено.

Проверить количество запросов: mxtoolbox.com → SPF Record Lookup → смотрите на "SPF Lookup Count".

### Проверка SPF
    
    
    dig TXT example.com | grep spf

![](https://cdn.zomro.com/uploads/blog/a48%40server-panel.net/2026/06/29/02-dig-spf_q50.jpg)

## 

## 

## DKIM: цифровая подпись письма

DKIM (DomainKeys Identified Mail) подписывает исходящие письма приватным ключом. Получающий сервер проверяет подпись по публичному ключу из DNS.

### Как это работает

  1. При отправке Postfix/OpenDKIM добавляет в заголовок письма подпись `DKIM-Signature`

  2. Подпись содержит хеш части заголовков и тела письма

  3. Получающий сервер извлекает из подписи имя домена и селектор (`s=default`)

  4. Делает запрос `default._domainkey.example.com` и получает публичный ключ

  5. Проверяет подпись. Если совпадает - письмо не было изменено в пути




### Генерация ключей (OpenDKIM)
    
    
    mkdir -p /etc/opendkim/keys/example.com
    opendkim-genkey -D /etc/opendkim/keys/example.com/ -d example.com -s mail2026
    chown -R opendkim:opendkim /etc/opendkim/

Файл публичного ключа `/etc/opendkim/keys/example.com/mail2026.txt`:
    
    
    mail2026._domainkey    IN    TXT    ( "v=DKIM1; k=rsa; "
        "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA..." )

Это содержимое копируют в DNS как TXT-запись.

### 

### 

### DNS-запись DKIM
    
    
    mail2026._domainkey.example.com.    IN    TXT    "v=DKIM1; k=rsa; p=ПУБЛИЧНЫЙ_КЛЮЧ"

Формат имени: `СЕЛЕКТОР._domainkey.ДОМЕН`. Селектор может быть любым словом (mail, default, 2026). Он же указывается в конфигурации OpenDKIM.

### 

### 

### Проверка DKIM
    
    
    dig TXT mail2026._domainkey.example.com

Через веб: `mxtoolbox.com` → DKIM Lookup → ввести домен и селектор.

Самый точный способ - отправить письмо и посмотреть заголовки. Gmail показывает результат прямо в интерфейсе: "Отправлено через: / Подписано:".

### 

### 

### Частые проблемы DKIM

**Перенос строк в DNS.** Публичный ключ длинный. Некоторые DNS-панели не разбивают его на части автоматически. Разбейте на строки по 255 символов, каждую в кавычках.

**Неправильный селектор в Postfix.** В `/etc/opendkim.conf` параметр `Selector` должен совпадать с именем в DNS.

**Ключ 512 бит.** Генерируйте ключи минимум 2048 бит. 512- и 1024-битные ключи не принимаются Google и Microsoft.

## DMARC: политика обработки ошибок

DMARC (Domain-based Message Authentication, Reporting and Conformance) определяет, что делать с письмами, не прошедшими SPF или DKIM. Также настраивает получение отчётов.

### Структура DMARC-записи
    
    
    _dmarc.example.com.    IN    TXT    "v=DMARC1; p=none; rua=mailto:dmarc@example.com"

Параметры:

  * `p=none` \- только мониторинг, письма не блокировать

  * `p=quarantine` \- подозрительные письма в спам

  * `p=reject` \- отклонять письма, не прошедшие проверку

  * `rua=mailto:` \- адрес для сводных отчётов (XML-файлы)

  * `ruf=mailto:` \- адрес для детальных отчётов о сбоях

  * `pct=50` \- применять политику к 50% писем (полезно при переходе)

  * `adkim=s` \- строгое выравнивание для DKIM (домен в подписи должен точно совпадать)

  * `aspf=r` \- мягкое выравнивание для SPF (по умолчанию)




### Стратегия внедрения DMARC

Не ставьте сразу `p=reject`. Можно заблокировать легитимную почту.

**Шаг 1** \- начните с `p=none`, добавьте `rua`:
    
    
    "v=DMARC1; p=none; rua=mailto:dmarc@example.com; ruf=mailto:dmarc@example.com"

**Шаг 2** \- две-четыре недели читайте отчёты. Инструменты для разбора: `dmarcanalyzer.com`, `postmarkapp.com/dmarc`.

**Шаг 3** \- перейдите на `p=quarantine; pct=10`, постепенно увеличивайте процент.

**Шаг 4** \- когда ошибок нет, переключайтесь на `p=reject`.

### 

### 

### Проверка DMARC
    
    
    dig TXT _dmarc.example.com

![](https://cdn.zomro.com/uploads/blog/a48%40server-panel.net/2026/06/29/image_q50.jpg)

## 

## 

## Полная проверка через mail-tester.com

Данный сервис даёт итоговый балл от 1 до 10:

  1. Откройте его - получите временный адрес

  2. Отправьте письмо с вашего сервера на этот адрес

  3. Нажмите "Check your score"




Сервис проверяет SPF, DKIM, DMARC, наличие в чёрных списках, содержимое письма. Балл 9–10 означает, что всё настроено правильно.

## 

## 

## Порядок настройки с нуля

Если вы только разворачиваете почтовый сервер:

  1. Настройте A-запись для `mail.example.com`

  2. Добавьте MX-запись, указывающую на `mail.example.com`

  3. Попросите провайдера добавить PTR-запись (обратная зона)

  4. Установите и настройте OpenDKIM, сгенерируйте ключи

  5. Добавьте DKIM TXT-запись в DNS

  6. Добавьте SPF TXT-запись для домена

  7. Добавьте DMARC с `p=none` для начала мониторинга

  8. Отправьте тестовое письмо, проверьте заголовки и `mail-tester.com`

  9. Через 2–4 недели ужесточьте DMARC-политику




## 

## 

## Что произойдёт без этих записей

  * Без MX: входящие письма не придут, сервер для приёма не определён.
  * Без SPF: письма часто попадают в спам у крупных провайдеров. Gmail и Outlook помечают такие письма как "не прошедшие проверку".
  * Без DKIM: нет доказательства, что письмо не было изменено в пути. Репутация домена ниже.
  * Без DMARC: Google с февраля 2024 года требует DMARC от отправителей более 5000 писем в день. Без него массовые рассылки отклоняются Gmail полностью.



## Итог

Четыре типа записей работают в паре: MX принимает почту, SPF разрешает отправителей, DKIM подписывает письма, DMARC задаёт политику и собирает отчёты. Настройка занимает 30–60 минут, зато письма перестают теряться. Начните с `p=none` в DMARC, читайте отчёты две недели, затем переходите к `reject`. Проверяйте результат через mail-tester после каждого изменения.

Похожие статьи

[Как измерить время загрузки сайта из терминала Linux и не сойти с ума](https://zomro.com/rus/blog/faq/668-how-to-measure-website-load-time-from-the-linux-terminal-without-going-crazy) [MacOS: Как выполнить проверку MTR](https://zomro.com/rus/blog/faq/101-macos-kak-vypolnit-proverku-mtr) [ISP: Как добавить альтернативную версию PHP](https://zomro.com/rus/blog/faq/73-isp-kak-dobavit-alternativnuyu-versiyu-php) [LAMP-стек на Ubuntu: Apache + MySQL + PHP для начинающих](https://zomro.com/rus/blog/faq/731-lamp-stack-on-ubuntu-apache-mysql-php-for-beginners) [Как отключить Защитник (Microsoft Defender) в Windows 2016 и 2019](https://zomro.com/rus/blog/faq/347-how-to-activate-microsoft-defender-in-windows-2016-and-2019)

[ Выделенные серверы от €88.80/мес ](/rus/dedicated-servers)
