セキュリティとプライバシー

Spam Scannerが読むのは、私的な内容であるメールで、その送信者は敵対的な場合があります。このページでは、Spam Scannerがどこに何を送るか、そして読んだものをどう扱うかを説明します。

マシンの外に出るもの#

デフォルトでは1つだけです。メッセージ内のリンクのホスト名を、Cloudflareのフィルタリング用リゾルバーである1.1.1.2と1.0.0.2(マルウェアとフィッシング)、1.1.1.3と1.0.0.3(アダルトコンテンツも対象)で照会します。これはexample.comのような名前に対する通常のDNSクエリで、メッセージやそのアドレスの一部が送られることはありません。無効にするにはphishing: {cloudflare: false}または--no-cloudflareを、アダルトコンテンツの検査だけを無効にするにはphishing: {adult: false}を使います。

それ以外はすべて、設定するまで無効です。

検査送るもの送り先
authentication送信者のSPF、DKIM、DMARC、ARCレコードに対するDNSクエリ自分のリゾルバー、またはdnsServers
dnsbl逆順にしたクライアントのIPアドレスとリンクのドメイン(DNSクエリとして)ブロックリストのネームサーバー(自分のリゾルバーまたはdns.servers経由)
llmメッセージの要約(リモートのプロバイダーには個人データを削除して送る)指定した言語モデルのサーバー(プライバシー)
reputation.apiUrl送信者のIPアドレス、ドメイン、アドレス指定したサービス
clamav添付ファイル自分のclamd(ソケット経由)

テレメトリー、更新の確認、実行時のダウンロードは一切ありません。モデルはパッケージに含まれています。

保持するもの#

求められない限り、何も保持しません。スキャンはログに記録も保存もされません。learn()はメモリ上の分類器を変更するだけで、ディスクに書き込まれるのはsaveModel()、spamscanner learn、サーバーの--outオプションを使った場合だけです。モデルファイルが保持するのはハッシュ化した特徴の件数で、単語やメッセージのテキストは含みません。

言語モデルの回答は、送った内容のハッシュをキーとしてメモリにキャッシュされるため、同じメッセージの複製について問い合わせるのは1回だけです。DNSの回答は10分間メモリにキャッシュされます。

敵対的な入力#

  • 添付ファイルはバイト列で識別し、実行したり別のプログラムで開いたりすることはありません。ZIPアーカイブはセントラルディレクトリから読み、エントリ数に上限を設けています。入れ子になったアーカイブは展開しません。
  • 本文のテキストはmaxLength(100,000文字)まで読み、サーバーは25 MBまでのメッセージを受け付けます。
  • すべてのネットワーク検査にはタイムアウト(timeout、デフォルトは10秒)があります。失敗またはタイムアウトした検査はスキップされ、スキャンはその検査なしで完了します。
  • メッセージにすでにあるX-Spam-*ヘッダーは、milterメールフィルター。Sendmail由来でPostfixも使うプロトコルで、別のプログラムがSMTPセッション中に各メッセージを検査できるようにします。、コンテンツフィルター、--headersが削除するため、送信者が自分のメールを問題なしと偽ることはできません。
  • Microsoftのスパム判定ヘッダーは、メッセージがMicrosoftのサーバーから直接届いた場合にだけ信頼します。また、メッセージがどこから来たかの判断にReceivedヘッダーを使うことはありません。
  • AIフィルターに宛てたテキストはスパムとして採点し、言語モデルにはメッセージが指示ではなくデータであることを伝えます。プロンプトインジェクション

サーバー#

milter、HTTP、TCP、spamdの各サーバーは、--hostで指定しない限り127.0.0.1で待ち受けます。HTTP APIはトークンを定数時間で比較し、トークンなしの/learnは拒否します。どのサーバーもTLSを話しません。ネットワーク越しに接続するには、プライベートネットワーク、SSHトンネル、TLSを使うリバースプロキシのいずれかを使ってください。

サーバーは特権のないユーザーで実行してください。Postfixガイドのsystemdユニットには、一般的なハードニングの設定が含まれています。

脆弱性の報告#

セキュリティの問題は、公開のissueではなく、GitHubの脆弱性報告から非公開で報告してください。

このページをGitHubで編集 · Markdown ·