# Тести та бали

Лист вважається спамом від 5 балів і відхиляється від 15. Кожен тест нижче додає або знімає бали; результат перелічує ті, що спрацювали.

Змінюйте пороги за допомогою `threshold` і `rejectThreshold`. Змінюйте бали за допомогою `scores`, або за ключем налаштування (`scores: {deceptiveLink: 4}`), або за назвою тесту, що фіксує бали цього тесту (`scores: {FROM_NAME_BRAND: 4}`).


## Класифікатор

| Тест                      | Бали              | Значення                                                                                                                                                                                                                                                                                                                                                                                   |
| ------------------------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `BAYES_00` до `BAYES_999` | від −2,5 до +6,25 | Імовірність спаму за класифікатором у логарифмічній шкалі шансів: 2,4 бала при 90 %, 5 при 99 % і 6,25 при 99,9 %, тож класифікатор сам позначає спам, лише коли впевнений щонайменше на 99 %. Назва вказує діапазон: `BAYES_999` — 99,9 % або більше, `BAYES_99` — від 99 % до 99,9 %, `BAYES_50` — від 40 % до 60 %. Ключі налаштувань `bayesHam` і `bayesSpam` задають два кінці шкали. |


## Фішинг і посилання

| Тест                        | Бали | Ключ налаштування   | Значення                                                                |
| --------------------------- | ---: | ------------------- | ----------------------------------------------------------------------- |
| `PHISHING_LOOKALIKE_DOMAIN` |    5 | `homograph`         | Домен посилання імітує бренд за допомогою схожих або замінених символів |
| `MIXED_SCRIPT_DOMAIN`       |    3 | `mixedScriptDomain` | Мітка домену змішує алфавіти                                            |
| `BRAND_IN_DOMAIN`           |  1,5 | `brandInDomain`     | Назва бренду всередині чужого домену                                    |
| `TYPO_DOMAIN`               |    1 | `typoDomain`        | Відрізняється на одну літеру від домену бренду                          |
| `DECEPTIVE_LINK`            |    3 | `deceptiveLink`     | Посилання показує одну адресу, а веде на іншу                           |
| `MALICIOUS_DOMAIN`          |    6 | `maliciousDomain`   | Резолвер Cloudflare проти шкідливого ПЗ блокує домен із посилання       |
| `ADULT_DOMAIN`              |    2 | `adultDomain`       | Сімейний резолвер Cloudflare блокує домен із посилання                  |
| `URIBL_<LIST>`              |    5 | `uriblListed`       | Домен із посилання є в чорному списку доменів, наприклад `URIBL_DBL`    |

Домени, які лише згадано в тексті, а не подано посиланням, теж перевіряються на схожість, але враховуються лише тоді, коли явно імітують бренд: схожі літери або переставлені символи для бренду з п’яти й більше літер. Відповідь чи підпис може згадувати будь-який сайт, а коротка назва компанії може відрізнятися від назви бренду одним символом.


## Вкладення

| Тест                    |    Бали | Ключ налаштування                        | Значення                                                    |
| ----------------------- | ------: | ---------------------------------------- | ----------------------------------------------------------- |
| `EXECUTABLE_ATTACHMENT` |      10 | `executable`                             | Програма або скрипт                                         |
| `DISGUISED_EXECUTABLE`  |      12 | `disguisedExecutable`                    | Програма з іменем документа чи зображення                   |
| `DOUBLE_EXTENSION`      |       6 | `doubleExtension`                        | Ім’я на кшталт `invoice.pdf.exe`                            |
| `RTL_OVERRIDE_FILENAME` |       6 | `rtlOverride`                            | Символ перевизначення напрямку приховує справжнє розширення |
| `EXECUTABLE_IN_ARCHIVE` |       8 | `executableInArchive`                    | Програма всередині ZIP-архіву                               |
| `ENCRYPTED_ARCHIVE`     |       2 | `encryptedArchive`                       | Архів, який сканери не можуть відкрити                      |
| `MACRO_ATTACHMENT`      |       4 | `macro`                                  | Файл Office з макросами                                     |
| `PDF_ACTIVE_CONTENT`    |       3 | `pdfActive`                              | PDF з JavaScript, діями запуску або вбудованими файлами     |
| `RTF_EMBEDDED_OBJECT`   |       4 | `rtfObject`                              | Файл RTF із вбудованими об’єктами                           |
| `HTML_ATTACHMENT`       | 1 або 3 | `htmlAttachment`, `activeHtmlAttachment` | Файл HTML; 3, якщо він містить скрипти або форми            |
| `VIRUS`                 |     100 | `virus`                                  | ClamAV знайшов вірус                                        |


## Правила

| Тест                      | Бали | Значення                                                                                      |
| ------------------------- | ---: | --------------------------------------------------------------------------------------------- |
| `GTUBE`                   | 1000 | Тестовий рядок GTUBE                                                                          |
| `SEXTORTION_SUBJECT`      |    6 | Тема, яку використовують шахраї із сексторшеном і захопленням облікових записів               |
| `PAYPAL_INVOICE`          |    6 | Рахунок або запит на гроші в PayPal, канал, яким зловживають шахраї                           |
| `MICROSOFT_SPAM_VERDICT`  |    5 | Microsoft позначила лист як спам перед пересиланням (довіряється лише від серверів Microsoft) |
| `MICROSOFT_HIGH_SCL`      |    3 | Microsoft присвоїла йому високий рівень упевненості в спамі (так само)                        |
| `PROMPT_INJECTION`        |    3 | Текст, звернений до ШІ-фільтра                                                                |
| `SELF_SPOOF`              |    3 | Нібито надходить із власного домену отримувача, але не проходить автентифікацію               |
| `FROM_NAME_OTHER_ADDRESS` |  2,5 | Ім’я відправника містить іншу адресу електронної пошти                                        |
| `FROM_NAME_BRAND`         |    2 | Ім’я відправника називає бренд, якому адреса не належить                                      |
| `DATE_IN_FUTURE`          |    1 | Дата більш ніж на добу вперед                                                                 |
| `MISSING_DATE`            |  0,5 | Немає заголовка Date                                                                          |
| `MISSING_MESSAGE_ID`      |  0,5 | Немає заголовка Message-ID                                                                    |

Правила, вартість яких не менша за поріг спаму, також з’являються в `results.arbitrary`, як і в попередніх версіях.


## Обфускація і мова

| Тест                   | Бали | Ключ налаштування     | Значення                                                            |
| ---------------------- | ---: | --------------------- | ------------------------------------------------------------------- |
| `INVISIBLE_CHARACTERS` |    2 | `invisibleCharacters` | Три або більше невидимих символів у тексті                          |
| `MIXED_SCRIPT_WORDS`   |  2,5 | `mixedScriptWords`    | Два або більше слів змішують літери з різних алфавітів              |
| `STYLED_LETTERS`       |  1,5 | `styledLetters`       | Математичні або обведені літери, що видають себе за звичайний текст |
| `LANGUAGE_NOT_ALLOWED` |    3 | `languageNotAllowed`  | Мови немає в `allowedLanguages`                                     |


## Автентифікація

Потребує IP-адреси клієнта та `authentication: true`.

| Тест           | Бали | Ключ налаштування (в `authentication.weights`) |
| -------------- | ---: | ---------------------------------------------- |
| `SPF_PASS`     | −0,5 | `spfPass`                                      |
| `SPF_FAIL`     |    2 | `spfFail`                                      |
| `SPF_SOFTFAIL` |    1 | `spfSoftfail`                                  |
| `DKIM_PASS`    | −0,5 | `dkimPass`                                     |
| `DKIM_FAIL`    |    1 | `dkimFail`                                     |
| `DMARC_PASS`   | −1,5 | `dmarcPass`                                    |
| `DMARC_FAIL`   |  3,5 | `dmarcFail`                                    |
| `ARC_PASS`     | −0,5 | `arcPass`                                      |
| `ARC_FAIL`     |    1 | `arcFail`                                      |


## Репутація і чорні списки

| Тест           | Бали | Ключ налаштування | Значення                                                    |
| -------------- | ---: | ----------------- | ----------------------------------------------------------- |
| `DENYLISTED`   |  100 | `denylisted`      | IP-адреса, домен або адреса відправника є в списку заборони |
| `ALLOWLISTED`  |  −20 | `allowlisted`     | Відправник є в списку дозволу                               |
| `TRUTH_SOURCE` |   −5 | `truthSource`     | Сервіс репутації позначає відправника як довіреного         |
| `RBL_<LIST>`   |    4 | `rblListed`       | IP-адреса клієнта є в чорному списку, наприклад `RBL_ZEN`   |


## Мовна модель і додаткові моделі

| Тест                                                  | Бали  | Ключ налаштування | Значення                                          |
| ----------------------------------------------------- | ----- | ----------------- | ------------------------------------------------- |
| `LLM_SPAM`, `LLM_PHISHING`, `LLM_SCAM`, `LLM_MALWARE` | до +6 | `llmSpam`         | Вердикт моделі, помножений на її впевненість      |
| `LLM_HAM`                                             | до −3 | `llmHam`          | Так само                                          |
| `TOXIC_CONTENT`                                       | 3     | `toxicity`        | Надана вами модель токсичності позначила текст    |
| `NSFW_IMAGE`                                          | 3     | `nsfw`            | Надана вами модель зображень позначила зображення |
