# Почта школы

Письма — это то, чем школа держит связь с человеком между заходами в кабинет.
Код входа, чек, «доступ открыт», «работа проверена» — всё это письма, и школа,
у которой они не доходят, теряет людей молча: человек не жалуется, он просто
не возвращается.

Эта страница про то, как сделать, чтобы доходили.

## Что нужно настроить, по порядку

1. **Отправка** — через какой сервер школа отдаёт письма.
2. **Три записи в DNS** — SPF, DKIM, DMARC. Без них письма уходят в спам
   даже при исправной отправке.
3. **Обратный адрес** — куда человек пишет, когда отвечает на письмо.

Первый пункт занимает пять минут, второй — полчаса вместе с ожиданием DNS,
третий — одну строку. Пропустить второй нельзя: Gmail, Яндекс и Mail.ru
проверяют эти записи у каждого письма.

## Мастер настройки почты: три шага

«Настройки → Почта школы» — это те же значения, но по порядку, с проверкой
и с разбором отказа. Открывайте его, когда настраиваете почту впервые
или когда письма перестали уходить.

**Шаг 1 — как школа отправляет письма.** Сейчас в продукте один способ:
SMTP, то есть ящик у хостинга или почтового сервиса. Второй способ, отправка
по API почтового сервиса, на шаге назван и объяснён, но не сделан: он требует
ключа у выбранного сервиса. Скажите, какой сервис вам подходит, — способ
появится настроенным под него. Пока его нет, и поля для ключа, которому
некуда идти, мы не рисуем.

**Шаг 2 — сервер и учётные данные.** Порт выбирается вместе с шифрованием:
465 — шифрование с первого байта, 587 — переход после приветствия. Порт 25
не предлагается: он закрыт почти везде и не шифрует.

Главная кнопка шага — **«Проверить отправку»**, и она стоит на месте
«Сохранить»: сохраняет и сразу отправляет письмо на ваш адрес. Настройку
можно сохранить и без проверки — отдельной кнопкой, и продукт спросит
подтверждение, назвав последствия (см. ниже).

Отказ релея разбирается на вид, и у каждого своё следующее действие:

| Что ответил релей | Что это значит | Что делать |
| --- | --- | --- |
| Соединение ушло в таймаут | Хостер закрыл исходящие почтовые порты — частый случай | Попробовать 587/STARTTLS; спросить хостера про 465 и 587 |
| 535, «authentication failed» | Логин или пароль | Логин часто полный адрес ящика; многие ящики требуют отдельный пароль для приложений |
| 550, 553 про отправителя | Адрес «от кого» не разрешён | Поставить адрес ящика, под которым входите, или подтвердить псевдоним у хостера |

Дословный ответ релея остаётся на экране: он называет причину точнее,
чем любая наша фраза. Отказ ничего не стирает — введённое остаётся в полях.

**Шаг 3 — записи домена.** Он ничего не блокирует: без записей письма уходят,
просто доходит меньшая часть. Готовое значение для копирования продукт даёт
только там, где его можно вывести: если релей в вашем же домене — готовую
строку SPF, если релей чужой (Яндекс, Mail.ru, панель хостинга) — только
объяснение, потому что точную строку `include:` знает он сам, а неверная
запись SPF отправляет письма в спам надёжнее, чем её отсутствие. Значение
DMARC предлагается безопасное: оно просит отчёты и ничего не отбрасывает.

Запись DKIM видна снаружи только по селектору, и селектор выдаёт тот, кто
подписывает письма. Впишите его в «Интеграции → Селектор подписи DKIM» —
и мастер начнёт проверять эту запись вместе с остальными. Пока селектор
пуст, строка говорит «проверить нечем», а не «записи нет»: это разные вещи.

## Пока проверка не прошла: что работает, а что нет

Почта, сохранённая без успешной проверки, помечается непроверенной. Это
не придирка: «настройки введены» и «письма доходят» — разные утверждения,
и первое ничего не обещает про второе.

Пока из школы не ушло ни одного письма:

- **рассылку по базе отправить нельзя** — отказ говорит, что нажать;
- **коды входа и письма о доступе отправляются** — иначе школа заперла бы
  учеников снаружи своей незаконченной настройкой;
- в колонке настроек у строки «Почта школы» стоит предупреждение.

Достаточно одной успешной отправки — проверочного письма на свой адрес.
Один недошедший адрес потом рассылку не останавливает: переполненный ящик
получателя — это про получателя, а не про почту школы.

## Отправка: SMTP

Настройки — «Интеграции → Почта». Нужны пять значений: сервер, порт,
пользователь, пароль, адрес отправителя.

**Пароль в интерфейс не возвращается** — только маска. Он шифруется при
сохранении, и посмотреть его через продукт нельзя ни владельцу, ни нам.
Это свойство, а не неудобство: доступ к панели не должен означать доступ
к почтовому ящику школы.

### Порт и шифрование

| Порт | Шифрование | Когда |
|---|---|---|
| 587 | STARTTLS | обычный выбор, работает почти везде |
| 465 | сразу TLS | когда провайдер просит именно его |
| 25 | — | почти всегда закрыт хостером, не используйте |

### Имя сервера должно совпадать с сертификатом

Самая частая ошибка настройки — и её трудно узнать по симптому: письма
не уходят, а в журнале написано что-то про TLS.

Почтовые хостинги часто выдают сертификат на **основной домен**
(`example.ru`, `www.example.ru`), а в инструкции пишут сервер
`mail.example.ru` — имя, которого в сертификате нет. Отправка при этом
обрывается на проверке имени.

> **Проверка:** если в настройках стоит `mail.вашдомен`, а письма не уходят —
> попробуйте тот же адрес без `mail.`. Порт, логин и пароль остаются те же.

## Отправка через сервисы по API

Основа — SMTP-ящик школы. **Сервис по API** — запасной или дополнительный путь:
ключ в карточке «Настройки → Интеграции → Почта через сервисы» — и работает.
Тариф сервиса школа оплачивает сама, в его кабинете; там же подтверждается домен
отправителя. Адрес отправителя — тот же «От кого приходят письма».

| Сервис | Что указать |
|---|---|
| Unisender Go | ключ API и сервер — go1 или go2 |
| RuSender | ключ API и номер ключа отправки |
| NotiSend | ключ API |
| DashaMail | ключ API |
| Sendsay | ключ API и код аккаунта |
| Brevo | ключ API |
| SendPulse | ID и Secret — токен на час школа получает сама |
| Resend | ключ API |
| Mailgun | ключ API, домен отправки и регион |

- **Основной путь писем** — SMTP-ящик или подключённый сервис: через него уходят
  доступ к курсу, чеки, коды входа и рассылки без своего правила. Проверить сервис —
  сделать его основным и отправить тестовое письмо.
- **Правила рассылки по сегменту** — на шаге «Когда»: «кто в сегменте — через этот
  сервис». Например, российские ящики (условие «Эл. адрес содержит»: mail.ru,
  yandex.ru, bk.ru) — через российский сервис, остальные — основным путём или через
  зарубежный. Правила проверяются по порядку, срабатывает первое; кто не попал
  ни под одно, уходит основным путём. Перед отправкой каждый сервис из правил
  проверяется: без ключа рассылка не начнётся.
- **Картинка над текстом** уходит встроенной там, где сервис это умеет (Unisender Go,
  DashaMail, Resend, Mailgun); у остальных — подписанной ссылкой на файл школы.
- **Отписку** Unisender Go добавляет в письмо сам — это правило сервиса.
- **Вложения** у NotiSend и Sendsay этим путём не отправляются: письмо с файлом
  получит отказ со словами — отправьте его через SMTP-ящик.
- **Отказ сервиса** разбирается как у SMTP: неверный ключ, лимит и сбой сервиса
  останавливают рассылку, отвергнутый адрес получателя — нет.
- **Живой проверки ключами ещё не было.** Запросы собраны по документации сервисов;
  у NotiSend открытого описания метода нет, и адрес отправки взят из описания их
  библиотеки. Первое тестовое письмо через сервис — проверка на живом ключе.
- **Агент школы** ставит правила рассылки по сегменту — как шаг «Когда», — но сервисы
  не подключает: ключи вставляет владелец в настройках.

## Почта у хостинга: что нажать, чтобы письма уходили

Раздел для того случая, когда почта школы живёт у того же хостинга, что и сам
сервер (у нас — AdminVPS с панелью ispmanager). Порядок действий такой же
у любой панели, названия кнопок могут отличаться.

### 1. Ящик, с которого школа пишет

«Почта» → «Почтовые ящики» → «Создать». Заведите два отдельных ящика,
а не один:

| Ящик | Зачем |
|---|---|
| `noreply@ваш-домен` | с него уходят письма школы: коды входа, чеки, рассылки |
| `school@ваш-домен` | его школа **читает** — сюда пишут люди, и письма попадают в «Обращения» |

**Почему два.** Ящик отправки копит отказы почтовых служб и автоответы;
ящик, который читает человек, должен оставаться чистым. Один ящик на обе
задачи означает, что приём писем разбирает недоставки своих же рассылок.

Пароли ящиков задаёте вы в панели. В школу вписываете их сами —
«Настройки → Интеграции»; из школы пароль обратно не отдаётся, только маска.

### 2. Отправка: что вписать в школу

| Поле школы | Значение у хостинга |
|---|---|
| Адрес релея | `mail.ваш-домен` (смотрите в панели, в разделе почты) |
| Порт | `465` — шифрование с первого байта; `587` — STARTTLS |
| Логин | полный адрес ящика: `noreply@ваш-домен` |
| Пароль | тот, что задали ящику в панели |
| Отправитель | `Название школы <noreply@ваш-домен>` |

Дальше — «Проверить отправку почты» в тех же настройках: письмо уйдёт вам
и покажет ответ сервера дословно.

### 3. Сертификат почтового домена

У хостинга почтовый сервер часто показывает **самоподписанный** сертификат —
выписанный самим сервером, с именем вида `ru-ru1-vm-shrd-33.adminvps`, а не
с именем вашего домена.

**Правильный выход — выпустить сертификат для почтового домена.**
В ispmanager: «SSL-сертификаты» → «Получить бесплатный сертификат»
(Let's Encrypt) → выберите домен, включите галочку **«Включить SSL-сертификат
для почтового домена»**, проверка — по DNS. После выпуска и отправка,
и приём писем работают без оговорок.

Пока сертификата нет, приём писем в «Обращения» принимает самоподписанный
**только по отпечатку**, который вы подтверждаете кнопкой «Доверять»
(про это — ниже, в разделе «Входящие письма»). Отправка при этом требует,
чтобы имя сервера в настройках совпадало с сертификатом, — иначе релей
отвергнет соединение.

### 4. Три записи в DNS — там же, в панели

Записи SPF, DKIM и DMARC хостинг обычно предлагает добавить сам: «Домены» →
ваш домен → «Записи DNS», а текст записей — в разделе почты. Что именно
в них должно быть, написано следующим разделом этой страницы.

### Если письма не уходят

| Ответ сервера | Что это значит |
|---|---|
| `535 authentication failed` | неверен логин или пароль ящика |
| `550 relay denied` / `not permitted` | адрес отправителя не принадлежит этому ящику |
| `Connection timeout` | неверен адрес релея или закрыт порт (у некоторых хостингов исходящий 25 закрыт всегда — используйте 465) |
| `certificate name mismatch` | имя сервера в настройках не совпадает с сертификатом — впишите то, что в сертификате, или выпустите Let's Encrypt |

**Своего почтового сервера на сервере школы нет и не будет.** Письма от только
что поднятого сервера почти гарантированно попадают в спам: у адреса нет
истории, у домена — репутации. Поэтому школа отправляет через ящик у почтового
провайдера, а не сама.

## Три записи в DNS

Их ставят у того, кто держит DNS вашего домена. Значения даёт почтовый
хостинг — кроме DMARC, его вы пишете сами.

### SPF — кому можно отправлять от вашего имени

Одна запись `TXT` на домен. Двух быть не должно: два SPF — то же самое,
что ни одного, проверка считает такую настройку сломанной.

### DKIM — подпись, по которой письмо узнают

Почтовый хостинг даёт имя записи (селектор) и длинный ключ. Без DKIM
письма от школы выглядят как письма без обратного адреса: дойти могут,
а могут и нет.

### DMARC — что делать с письмами, которые не прошли проверку

Эту запись пишете вы, и в ней есть выбор. Начните мягко и ужесточайте:

```
v=DMARC1; p=none; rua=mailto:отчёты@вашдомен
```

`p=none` — «ничего не делай, но присылай отчёты». Неделю посмотрите отчёты,
убедитесь, что ваши собственные письма проходят проверку, и меняйте на:

```
v=DMARC1; p=quarantine; pct=100; rua=mailto:отчёты@вашдомен; fo=1
```

`p=quarantine` — «подозрительное клади в спам». Это разумная постоянная
настройка для школы. `p=reject` строже, но при малейшей ошибке в SPF или DKIM
ваши письма перестанут доходить совсем.

> **Почему не начать сразу со строгого.** Ужесточение защищает не вас,
> а получателя: оно говорит почтовым службам, что делать с подделками
> под ваш домен. Пока вы не убедились по отчётам, что настоящие письма
> проходят, строгое правило бьёт по вашим же письмам.

## Обратный адрес

«Настройки школы → Адрес поддержки». Он печатается в подвале **каждого**
письма строкой «Ответьте на это письмо или напишите на …».

**Адрес должен принимать почту.** Звучит очевидно, но ошибиться легко:
поддомен школы (`school.вашдомен`) обычно почту не принимает — MX-записи
у него нет. Письмо на такой адрес отбивается, и обещание «прочитаем»
оказывается ложным.

Ставьте ящик на том домене, с которого школа отправляет.

## Тексты писем школы

Всё, что продукт пишет ученику сам, правится в «Настройки → Письма школы»:
код входа, квитанция, «доступ открыт», «работа принята», возврат денег,
напоминания о рассрочке и конце доступа, ответ поддержки. Тридцать четыре
письма, по группам. Писем вебинара здесь нет — записавшимся пишет школа рассылками.

**Исходный текст всегда можно вернуть.** Неудачная правка письма про деньги
иначе чинится только через поддержку: исходного текста у школы нет нигде.

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

**Куда ведёт кнопка, решает продукт.** Надпись на кнопке правится, адрес — нет:
он собирается под конкретного человека и ведёт в его кабинет, и «поправленная»
ссылка превратила бы письмо в письмо в никуда.

**«Принята» и «вернули на доработку» — два разных письма, а не одно
с условием.** У них разная тема, разный текст и разная кнопка, и отказ обычно
пишут мягче принятия. То же с возвратом полностью и частично, с одним открытым
материалом и несколькими.

**Если правка перестала подходить к письму,** письмо уходит исходным текстом,
а не с дыркой на месте подстановки. Так бывает после обновления продукта,
когда подстановку переименовали: покупатель не получит «Доступ к «» открыт».
Причина пишется в журнал.

**Пробное письмо — себе.** У каждого письма есть кнопка «Прислать себе пробное»:
письмо придёт на вашу почту с образцовыми данными («Анна, заказ № 1042»), вашим
текстом и в оформлении школы, с пометкой «[Пробное]» в теме. Так видно, как письмо
выглядит в Gmail, Outlook или почте телефона, — не дожидаясь настоящего повода.
Пробное уходит только на почту того, кто нажал: «пробное на любой адрес» было бы
способом написать от имени школы кому угодно. Ссылки в нём ведут на страницу входа
и ничего не открывают. Правку сначала сохраните — пробное уходит с сохранённым
текстом. Агент пробные письма не присылает: кнопка — у того, кто смотрит письмо.

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

## Обращения учеников

### Один чат на человека, обращения внутри

Раздел «Обращения» устроен как мессенджер. **Слева — люди, а не обращения:** одна
строка на человека — метка канала, откуда он написал последним (@ почта, «каб»
кабинет, TG, MAX, VK), имя и время; ниже **тема обращения**, ещё ниже — последняя
реплика; число в кружке — сколько его сообщений ждут ответа. Без темы десять
разговоров выглядят одинаково, поэтому она стоит отдельной строкой и по ней же
ищет поиск. **Тот, кто ждёт дольше суток, подписан словами** — «ждёт 2 дня»
жёлтым: порядок «самые старые сверху» на глаз читается как «перемешано».
Вкладки: «Открытые» со счётчиком — у человека есть открытое обращение,
«Мои» — чаты, где вы уже отвечали, «Все» со счётчиком.

**Справа — одна лента за всё время знакомства.** Номера обращений входят в неё
разделителями: «Обращение №118 открыто 12 сентября», «…закрыто · Мария Величко»,
ниже — подсвеченное открытое №124. У каждой реплики подписаны канал и время:
человек пишет из MAX, месяц назад писал с почты — в ленте это видно построчно.
Колонка человека — куда ему можно писать, его обращения с номерами, курсы
и заказы, «Открыть карточку целиком».

**«Закрыть обращение» закрывает номер, а не чат.** Человек остаётся в списке,
и следующее его сообщение само откроет новый номер в этой же ленте — сотруднику
ничего нажимать не нужно. Закрыть обращение может только школа. Закрыли
рано — **«Открыть снова»** в шапке чата открывает последний номер: у человека
одно открытое обращение, поэтому старый номер при живом новом не открывается,
и отказ называет номер, в который писать.

**На телефоне** — список, переписка на весь экран, человек по нажатию на имя;
назад — стрелкой «‹». Когда человек написал впервые, под сообщением сказано, что
истории нет, и куда уйдёт ответ.

Длинное письмо свёрнуто: в нём цитата прошлой переписки и подпись на шесть
строк. «Показать письмо целиком» разворачивает.

### Ответить сразу в несколько каналов

Над полем ответа — переключатели каналов «Отправить: MAX · Почта · Telegram».
Отмечен канал, откуда человек написал последним; отметьте ещё один — ответ
уйдёт в оба, снимите — туда не уйдёт. Рядом написано словами, куда именно уйдёт,
а если у вас заведена подпись — что она добавится.

**Недоступный канал не прячется, а объясняется.** «Не привязан» — человек
не подключал этот мессенджер; «бот школы не подключён» — канал не настроен
у школы. Первое решается просьбой к человеку, второе — в «Настройках →
Интеграции».

**Отказ одного канала не отменяет ответ.** Реплика уже в разговоре; если
в Telegram не дошло (человек заблокировал бота), это написано у самой реплики:
«Не ушло в Telegram: …». На почту при этом ушло.

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

**Обращение из кабинета** отвечается в чат кабинета всегда, а галочки добавляют к нему почту
и мессенджеры. Галочек нет — ответ только в чате, и ученик видит число у «Поддержки» кабинета;
письма нет. Отмечена почта — уходит служебное письмо в оформлении школы: тема «Ответ на обращение
№7: Как стать партнёром», текст ответа, кнопка «Открыть обращение» и файлы ответа вложениями —
те, что влезают в предел почты (18 МБ); остальные ждут в обращении. Письмо «Обращение принято»,
которое человек получает, написав в поддержку из кабинета, — тоже служебное: номер, причина,
его текст и кнопка в обращение. Ответ человеку без кабинета и ответ в цепочку письма — в том
же оформлении; цепочку держит тема «Re: …».

**Имя человека в шапке обращения — ссылка на его карточку** (у тех, кому открыты карточки людей):
искать человека в «Пользователях» не нужно.

### Ответ голосом, снимком и записью экрана

У поля ответа — «Приложить файл», «Записать голосовое», «Снимок экрана» и «Запись экрана».
Запись идёт прямо в поле: кнопка во время записи красная, рядом полоса записи с ■, длительность,
«Остановить» и «Отменить». Остановить можно ■, «Остановить» или вторым нажатием на кнопку —
запись прикладывается к ответу. Снимок экрана — один кадр показа экрана; запись экрана — видео
из него же **с голосом**: браузер спросит и микрофон, голос смешивается со звуком экрана. Микрофон
не дали — экран пишется без голоса, и об этом написано под полем. До десяти вложений, каждое до 50 МБ —
больше мессенджеры от бота не принимают.

**Вложения остаются в обращении** (правка 19 сентября): ученик смотрит их прямо в чате кабинета —
снимок картинкой, видео и голосовое с проигрывателем, с перемоткой; сотрудник — в ленте обращения.
Открыть такой файл может только сам человек и сотрудники с правом отвечать на обращения; картинки
SVG и прочие файлы — только скачать. В мессенджер и на почту вложения уходят по галочкам: в Telegram —
голосом, снимком, видео или файлом; в MAX — загрузкой; во ВКонтакте — фотографией, голосовым
или документом; письмом — вложениями письма. В «Файлы школы» вложение не попадает.

### Подпись под ответом

Сотрудник заводит подпись сам: «Мой профиль → Данные → Подпись в обращениях»
(до 300 знаков, например «Анна, менеджер школы»). Она встаёт под каждым его ответом
через пустую строку — в письме, в мессенджере и в кабинете ученика, и в разговоре
хранится ответ с подписью: что человек получил, то школа и видит. В мессенджере имени
ответившего не видно вовсе, и подпись — то, по чему человек знает, кто ему ответил.
Подписи нет — ответ уходит как написан.

### В кабинете ученика: «Мои обращения» и «Написать в поддержку»

В кабинете у «Поддержки» два экрана. **«Мои обращения»** — список номеров: тема, причина, что
сейчас («ждёт ответа», «школа ответила», «закрыто») и последняя реплика; «школа ответила» выделено,
а у «Поддержки» в меню кабинета горит число таких обращений. **«Написать в поддержку»** — форма:
тема одной строкой, причина (оплата, доступ, задание, техническая проблема, другое), заказ или курс,
о котором речь, описание и файл — картинка или PDF до 10 МБ.

Отправленное **открывается чатом**: тема, причина, описание и файл — первым сообщением, ниже переписка
и поле ответа, к которому тоже можно приложить файл. Файл ученика хранится у обращения — его открывает
и сам ученик, и школа; в «Файлы школы» он не попадает. Сообщение в закрытое обращение открывает
**следующий номер** с той же темой — рассказывать заново не нужно.

### Из Telegram, MAX и ВКонтакте

Сообщение боту школы в Telegram, MAX или ВКонтакте — тоже обращение. Первое
сообщение открывает обращение с номером, и бот отвечает человеку «Ваше обращение
№124 принято. Ответит человек.»; следующие сообщения дописываются в то же
обращение без этой фразы — из какого бы мессенджера человек ни писал: открытый
номер у человека один. Ответ школы уходит туда, откуда человек написал последним, —
если не ушёл, под репликой написано почему. Закрытое обращение заново
не открывается: новое сообщение открывает следующий номер в том же чате.

Писать боту так может только тот, кто привязал мессенджер к аккаунту школы:
незнакомому бот объясняет, где взять код привязки.

**Вложения — ссылками мессенджера.** Голосовое, кружочек, снимок экрана, видео
и файл, присланные боту, попадают в ленту обращения: голосовое слушается, кружочек
остаётся круглым, снимок открывается по нажатию, файл скачивается. В «Файлы школы»
они **не кладутся** — школа хранит только ссылку мессенджера, и файл забирается у него
в момент просмотра. Поэтому такие вложения обведены пунктиром и подписаны
«в „Файлы школы“ не попадает», а файл школы — сплошной рамкой. Видео из ВКонтакте
открывается в самом ВКонтакте. Если мессенджер уже не отдаёт вложение (ссылка устарела),
откройте его в самом мессенджере.

**Ответ на вопрос сценария обращением не становится.** Если сценарий ждёт
ответа («напишите 1 или 2»), сообщение человека идёт сценарию, а не в «Обращения».

Ученик пишет в школу из кабинета — раздел «Поддержка». Обращение **остаётся
в продукте**: у школы оно в разделе «Обращения», у человека — в его же
кабинете, вместе с ответом.

**Ответ уходит и письмом, и в кабинет.** Только в кабинет — значит человек
узнает об ответе, когда зайдёт, то есть, может быть, никогда: он написал
«не открывается урок» и ждёт. Только письмом — значит история разговора
теряется на второй реплике.

**Это не тикет-система.** Нет ни сроков реакции, ни очередей,
ни ответственных, ни приоритетов. Разговор: вопрос, ответ, конец. Закрывает
разговор школа; если вопрос остался, ученик пишет новое обращение.

**Сначала те, что ждут ответа, и внутри — старые сверху.** Обычное «новые
сверху» здесь работает против вас: обращение, на которое не ответили три
дня, уезжает вниз ровно потому, что о нём забыли. Число ждущих стоит рядом
с разделом в меню.

**Ждёт дольше суток — карточка жёлтая**, и вместо времени написано словами:
«Ждёт 3 дня». Ждёт — с последней реплики ученика: дописавший вчера в старый
разговор ждёт со вчера, а не с первого письма. На вкладках — сколько ждут
ответа и сколько отвечено.

**Поле ответа открыто у первого обращения**, у остальных — кнопка «Ответить»:
десять открытых полей подряд — это десять форм, а не очередь. «Ответить
и закрыть» отправляет ответ и закрывает разговор одним действием, «Закрыть
без ответа» — для того, на что отвечать нечего. У обращения о курсе написано,
кто куратор: личный куратор ученика, если он назначен, иначе кураторы курса.

**Отвечать может администратор, менеджер и куратор** — право
«отвечать на обращения учеников». Автор курса не может: он пишет курс.

**Почта поддержки для обращений не обязательна.** Не настроена — обращение
всё равно записано и видно в разделе «Обращения»; не уйдёт только письмо-копия
на ваш ящик.

**Файл из формы кабинета уходит письмом** на почту поддержки и в системе
не хранится: библиотека файлов — инструмент школы для содержимого курса,
и скриншот из обращения попал бы в выбор файла при вставке картинки в урок.
А вот **вложения письма, пришедшего на ящик школы, хранятся** у обращения
и открываются из разговора — про них ниже.

## Входящие письма: ящик школы → «Обращения»

Человек может написать школе не из кабинета, а просто письмом — на адрес, который
стоит в подписи писем. Школа забирает этот ящик и складывает письма
в «Обращения»: **написал ученик — письмо ложится в его разговор**, с историей;
написал кто-то, кого в школе нет, — обращение всё равно заводится, просто без
карточки человека.

Ответ школы уходит **письмом в ту же цепочку**, так что у человека это выглядит
обычной переписКой, а у школы — разговором в «Обращениях».

### Что нужно у хостинга

1. **Почтовый ящик** на домене школы — например `school@ваш-домен.ru`.
   В панели хостинга: «Почта» → «Почтовые ящики» → «Создать». Тот же ящик
   годится и для обратного адреса писем.
2. **Доступ по IMAP** — почти всегда включён; нужен порт **993** (шифрование
   с первого байта). Без шифрования школа ящик не подключает: пароль ушёл бы
   по сети открытым.
3. **Запись MX** у домена — та, что уже стоит для почты хостинга. Ничего менять
   не нужно: школа только читает ящик, письма по-прежнему приходят в него.

### Что заполнить в школе

«Настройки» → «Интеграции» → **«Входящая почта»**: сервер, порт, логин и пароль
ящика. Пароль в интерфейс не возвращается — только маска.

Дальше — **«Проверить подключение»**. Кнопка сначала показывает сертификат
почтового сервера и **только потом** пробует войти: пароль не уходит, пока
не видно, кому он отдаётся.

### Сертификат почтового сервера

У многих хостингов почтовый сервер показывает **самоподписанный** сертификат —
выписанный самим сервером, с чужим именем в поле «Кому выдан». Браузер на таком
показал бы предупреждение.

| Что показала проверка | Что делать |
|---|---|
| Сертификат выдан удостоверяющим центром | ничего, ящик подключится |
| Самоподписанный | сверьте отпечаток с тем, что показывает хостинг, и нажмите **«Доверять»** |
| «Отпечаток не совпадает с доверенным» | сертификат сменился. Если смену подтвердил хостинг — проверьте подключение и нажмите «Доверять» заново. Если нет — не нажимайте: письма не забираются, пароль никуда не отправлен |

**Почему так, а не «не проверять сертификат».** Выключенная проверка означает,
что пароль ящика получит любой, кто встанет между сервером школы и почтой.
Доверие по отпечатку — это «принимаю ровно этот сертификат и никакой другой».

Лучший путь — **выпустить сертификат Let's Encrypt для почтового домена**
в панели хостинга (в ispmanager: «SSL-сертификаты» → Let's Encrypt, галочка
«Включить SSL-сертификат для почтового домена», проверка по DNS). Тогда
отпечаток не нужен вовсе.

### Как это работает дальше

- Ящик проверяется **раз в минуту**. Письма в ящике остаются: школа их
  не удаляет и не помечает прочитанными.
- При первом подключении забираются письма **за последние три дня** — иначе
  «Обращения» завалило бы перепиской прошлых лет.
- **Обращением не становятся**: автоответы («в отпуске до 5-го»), отчёты
  о недоставке, ежедневные отчёты DMARC от Google, Яндекса и Mail.ru, письма
  самой школы (уведомление «новое обращение» приходит на тот же ящик)
  и письмо, которое уже забрали.
- **Вложения письма хранятся** у обращения: до 10 файлов, по 10 МБ, 25 МБ
  на письмо. Открываются из разговора и только школе и автору. Что не
  поместилось — написано строкой в разговоре, а не потеряно молча.
- В теме ответа стоит метка вида `[#a1b2c3d4]`. Не украшение: по ней ответ
  человека находит свой разговор, даже если его почтовая программа потеряла
  служебные заголовки. Удалять её из темы не нужно.

### Если письма не приходят в «Обращения»

Строка «Входящая почта» в списке интеграций говорит состояние словами:
чего не хватает, когда была последняя проверка, сколько писем принято
и чем закончилась последняя попытка. Частые причины: неверный пароль
(хостинг отвечает «authentication failed»), закрытый порт 993, несменённый
отпечаток после перевыпуска сертификата.

## Подтверждение адреса: двойное согласие

После регистрации человек получает письмо с кнопкой «Подтвердить почту».
Пока он её не нажал, адрес считается неподтверждённым.

**Что это блокирует и что нет:**

| | Неподтверждённый адрес |
|---|---|
| вход в кабинет | работает |
| код входа, чек, «доступ открыт» | приходят |
| массовые рассылки | **не приходят** |

Это не строгость ради строгости. Школа, рассылающая по неподтверждённым
адресам, копит отказы; почтовые службы считают их долю и по ней решают,
класть ли письма этой школы во «Входящие». **Один список опечаток топит
доставку всей школы.**

Ссылка подтверждения живёт **неделю**, а не пятнадцать минут: приветственное
письмо открывают вечером, в выходные, с телефона в метро.

Не дошло — человек запрашивает письмо заново из кабинета, в разделе
«Уведомления».

## Как выглядят письма школы

Все письма — и служебные, и рассылки — собираются одной оболочкой: логотип
школы, её цвет на кнопке, подпись с адресом поддержки. Человек получает
от одной школы письма одного вида, а не код входа отдельным шрифтом.

Настраивается это не в письмах, а в оформлении школы:

- **логотип** — «Настройки → Оформление»;
- **цвет кнопок** — оттуда же; цвет надписи на кнопке подбирается сам
  по яркости фона, поэтому жёлтая кнопка не станет кнопкой с белой
  нечитаемой надписью;
- **название и адрес школы** — «Настройки школы».

> **Логотип обязан быть загружен в школу, а не вставлен ссылкой на чужой
> сайт.** Почта грузит картинки по кнопке «показать изображения», и картинка
> с чужого домена у части получателей не покажется никогда.

## Что делать, если письма уходят в спам

По порядку, от частого к редкому:

1. **Проверьте три записи DNS.** Больше половины случаев — здесь.
2. **Проверьте, что домен отправителя совпадает с доменом в DNS-записях.**
   Отправлять с `@gmail.com` через свой сервер нельзя — это ровно то,
   что SPF и запрещает.
3. **Посмотрите темп рассылки.** Тысяча писем за минуту с нового домена —
   быстрый способ попасть в спам. В форме рассылки есть поле «Темп отправки»;
   для нового домена начинайте с 5–10 писем в секунду.
4. **Проверьте текст.** Письмо только из картинки, без текстовой версии,
   с десятью восклицательными знаками в теме — то, что фильтры и ищут.
   Продукт собирает текстовую версию сам, но тему пишете вы.
5. **Посмотрите отчёты DMARC.** Они приходят на адрес из записи и прямо
   говорят, какие письма не прошли проверку и почему.

## Журнал: что ушло, а что нет

«Рассылки → Журнал сообщений». У каждого письма есть состояние, и они
разные по смыслу:

| Состояние | Что произошло |
|---|---|
| отправлено | сервер принял письмо |
| не ушло | отказ: рядом написана причина |
| человек отписался | не ошибка, а его решение |
| нет адреса | человеку некуда писать |

«Отправлено» означает, что письмо принял почтовый сервер, — не что человек
его прочитал. Это разные события, и путать их дорого.
