# 01 · Зачем это нужно

## Проблема, из которой выросла панель

Зона DNS — место, где ошибка не выдаёт себя. Кабинет Fornex позволяет нажать «сохранить» и
получить «готово», а результат проявляется через часы и в другом месте: письма не доходят,
отправитель получает отказ, клиент пишет «у нас не работает почта».

Четыре отказа, которые встречаются чаще всего, и все четыре молчат в момент записи:

| Что сделали | Что произошло | Чем видно |
|---|---|---|
| Добавили вторую SPF вместо правки старой | `permerror` для всего домена | письма начинают уходить в спам или отбиваться |
| Добавили вторую MX на ту же цель с другим приоритетом | половина писем ушла на другой сервер | часть адресатов «не отвечает» |
| Повторно применили пресет | в зоне два DKIM, проверка подписи не сходится | подпись не проходит |
| Удалили «похожую» запись по шаблону | пропала чужая запись, о которой никто не помнил | через недели: не работает поддомен или подтверждение сервиса |

Панель сделана вокруг одного принципа: **изменение зоны — это план, который можно прочитать
до записи**. План говорит: создать 2, изменить 1, пропустить 4, конфликт 1 — и объясняет
каждую строку. Пока план не прочитан, ничего не меняется.

## Что панель делает иначе

**Правила в одном месте.** Планировщик (`ZonePlanner`) решает, что считается дублем, как
сливать SPF и как не ослабить DMARC. Интерфейс, JSON API и командная строка вызывают его же,
поэтому не могут разойтись в правилах.

**Снимок перед записью.** Перед изменением зона сохраняется в двух видах: BIND-файл (читаемый
глазами) и JSON с идентификаторами записей (по ним можно вернуть запись точно). Снимок
называется в записи журнала.

**Удаление по идентификатору.** В API Fornex у каждой записи есть числовой `id`; панель
удаляет и правит только по нему. Шаблонное удаление невозможно по устройству, а не по
договорённости.

**Мастер вместо «применить всё сразу».** Google выдаёт ключ DKIM только после подтверждения
домена, поэтому пресет разбит на четыре шага, и каждый шаг применяется отдельно. Шаг 3
заблокирован, пока не выполнен шаг 1.

**Отказ объясняется.** Fornex, например, запрещает создание зон через API на части аккаунтов.
Панель показывает это как задачу с готовым текстом тикета в поддержку, а не как «ошибка 403».

## Для кого это

- Для того, кто ведёт десяток доменов и хочет видеть состояние зоны, а не искать записи в
  кабинете.
- Для того, кто переводит почту домена на Google Workspace и не хочет угадывать порядок
  записей.
- Для агента или скрипта, которому нужно читать и менять зону без браузера: те же операции
  доступны по HTTP с токеном и из командной строки.

## Чего здесь нет

Панель не заменяет кабинет Fornex: она не оплачивает домены, не работает с хостингом и не
показывает баланс. Её предмет — зона и почтовые записи домена.
