# Безпека й приватність

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/uk/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/uk/docs/llm/#prompt-injection)


## Сервери

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

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


## Повідомлення про вразливість

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