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

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}.

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

ПроверкаЧто отправляетКуда
authenticationDNS-запросы записей SPF, DKIM, DMARC и ARC отправителяВаш резолвер или dnsServers
dnsblIP-адрес клиента в обратном порядке и домены из ссылок в виде DNS-запросовСерверы имён чёрных списков, через ваш резолвер или dns.servers
llmСводку письма, из которой для удалённых провайдеров удалены персональные данныеУказанный вами сервер языковой модели (приватность)
reputation.apiUrlIP-адрес, домен и адрес отправителяУказанный вами сервис
clamavВложенияВаш clamd, через его сокет

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

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

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

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

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

  • Вложения определяются по байтам и никогда не исполняются и не открываются другой программой. ZIP-архивы читаются по центральному каталогу с ограничением на число записей; вложенные архивы не распаковываются.
  • Текст письма читается до maxLength (100 000 символов), а серверы принимают письма размером до 25 МБ.
  • У каждой сетевой проверки есть тайм-аут (timeout, по умолчанию 10 секунд). Проверка, которая дала сбой или не уложилась в тайм-аут, пропускается, и проверка письма завершается без неё.
  • Заголовки X-Spam-*, уже имеющиеся в письме, удаляются milterMail filter: протокол из Sendmail, который также использует Postfix; позволяет отдельной программе проверять каждое письмо во время SMTP-сессии., контент-фильтром и --headers, поэтому отправители не могут пометить собственную почту как чистую.
  • Заголовкам с вердиктом Microsoft о спаме доверяют, только если письмо пришло напрямую с серверов Microsoft, а заголовки Received никогда не используются, чтобы определить, откуда пришло письмо.
  • Текст, обращённый к ИИ-фильтрам, оценивается как спам, а языковой модели сообщается, что письмо — это данные, а не инструкции. Внедрение инструкций

Серверы#

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

Запускайте их от непривилегированного пользователя. Модуль systemd из руководства по Postfix добавляет обычные меры усиления защиты.

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

Сообщайте о проблемах безопасности конфиденциально через систему сообщений об уязвимостях GitHub, а не в публичных issues.

Редактировать эту страницу на GitHub · Markdown ·