# Безопасность и приватность

Spam Scanner читает почту, которая является личной, от отправителей, которые могут быть враждебны. На этой странице перечислено, что он куда-либо отправляет и как обращается с тем, что читает.


## Что покидает машину

По умолчанию — одно: **имена хостов из ссылок** в письме проверяются через фильтрующие резолверы Cloudflare: 1.1.1.2 и 1.0.0.2 (вредоносные программы и фишинг) и 1.1.1.3 и 1.0.0.3 (также контент для взрослых). Это обычные DNS-запросы для имён вроде `example.com`; никакая часть письма или его адресов не отправляется. Они отключаются через `phishing: {cloudflare: false}` или `--no-cloudflare`, а одна только проверка на контент для взрослых — через `phishing: {adult: false}`.

Всё остальное выключено, пока не настроено:

| Проверка            | Что отправляет                                                                  | Куда                                                                  |
| ------------------- | ------------------------------------------------------------------------------- | --------------------------------------------------------------------- |
| `authentication`    | DNS-запросы записей SPF, DKIM, DMARC и ARC отправителя                          | Ваш резолвер или `dnsServers`                                         |
| `dnsbl`             | IP-адрес клиента в обратном порядке и домены из ссылок в виде DNS-запросов      | Серверы имён чёрных списков, через ваш резолвер или `dns.servers`     |
| `llm`               | Сводку письма, из которой для удалённых провайдеров удалены персональные данные | Указанный вами сервер языковой модели ([приватность](https://spamscanner.net/ru/docs/llm/#privacy)) |
| `reputation.apiUrl` | IP-адрес, домен и адрес отправителя                                             | Указанный вами сервис                                                 |
| `clamav`            | Вложения                                                                        | Ваш clamd, через его сокет                                            |

Нет телеметрии, проверки обновлений и загрузок во время работы. Модель поставляется внутри пакета.


## Что сохраняется

Ничего, если не попросить. Проверки не записываются в журнал и не сохраняются. `learn()` меняет классификатор в памяти; на диск он записывается только через `saveModel()`, `spamscanner learn` или параметр серверов `--out`. Файл модели содержит хешированные счётчики признаков, а не слова или текст писем.

Ответы языковой модели кешируются в памяти по хешу отправленного, поэтому о повторяющихся копиях одного письма модель спрашивают один раз. Ответы DNS кешируются в памяти на десять минут.


## Враждебные входные данные

* Вложения определяются по байтам и никогда не исполняются и не открываются другой программой. ZIP-архивы читаются по центральному каталогу с ограничением на число записей; вложенные архивы не распаковываются.
* Текст письма читается до `maxLength` (100 000 символов), а серверы принимают письма размером до 25 МБ.
* У каждой сетевой проверки есть тайм-аут (`timeout`, по умолчанию 10 секунд). Проверка, которая дала сбой или не уложилась в тайм-аут, пропускается, и проверка письма завершается без неё.
* Заголовки `X-Spam-*`, уже имеющиеся в письме, удаляются milter, контент-фильтром и `--headers`, поэтому отправители не могут пометить собственную почту как чистую.
* Заголовкам с вердиктом Microsoft о спаме доверяют, только если письмо пришло напрямую с серверов Microsoft, а заголовки Received никогда не используются, чтобы определить, откуда пришло письмо.
* Текст, обращённый к ИИ-фильтрам, оценивается как спам, а языковой модели сообщается, что письмо — это данные, а не инструкции. [Внедрение инструкций](https://spamscanner.net/ru/docs/llm/#prompt-injection)


## Серверы

Серверы milter, HTTP, TCP и spamd слушают 127.0.0.1, если в `--host` не указано иное. HTTP API сравнивает токен за постоянное время и без него отклоняет `/learn`. Ни один из них не поддерживает TLS: чтобы обращаться к ним по сети, используйте частную сеть, SSH-туннель или обратный прокси с TLS.

Запускайте их от непривилегированного пользователя. [Модуль systemd из руководства по Postfix](https://spamscanner.net/ru/docs/postfix/#1-run-the-milter) добавляет обычные меры усиления защиты.


## Сообщение об уязвимости

Сообщайте о проблемах безопасности конфиденциально через [систему сообщений об уязвимостях GitHub](https://github.com/spamscanner/spamscanner/security/advisories/new), а не в публичных issues.
