Rspamd導入

ずいぶん前に入れあったけど、あらためてメモ。

SPFやらDKIMやらDMARCやら、これまでメール関係はちまちまオプションパッケージを入れていた。でもRspamdを入れたら、これひとつに全部まとめられる。

環境

  • FreeBSD 14.1
  • postfix 3.9.1
  • rspamd 3.8.4
  • redis 7.2.5

Rspamdとは

Rspamdは、オープンソースなスパムフィルター。milterをサポートしている。

milterは「mail filter」を略して作られた造語で、その名のとおりメールフィルター。英語版Wikipediaによると、次のとおり。

milter (メールフィルターの混成語) は、広く使用されているオープンソースのメール転送エージェント (MTA) である Sendmail と Postfix の拡張機能です。管理者は、メール処理チェーン内でスパムやウイルスをフィルタリングするためのメールフィルタを追加することができます。技術用語としての「milter」はサービスを実装するプロトコルと API を指し、一般的に「milter」と言えば milter を使用してサービスを提供するフィルタアプリケーションを指すようになりました。

https://en.wikipedia.org/wiki/Milter

つまり、Rspamdはmilterのひとつというわけ。

Rspamdのインストール

mail/rspamd

portsからインストール。

# sudo portmaster mail/rspamd

オプションは次のように選択した。

BLAS=off: Use OpenBLAS to accelerate KANN
CGP=off: Install Communigate Pro(tm) helper
GPERF=off: Google perf-tools profiling
HYPERSCAN=off: Use hyperscan optimizations (amd64 only)
LUAJIT=on: Use LuaJIT instead of standard Lua

それぞれのオプションの意味は次のとおり。

  • BLAS – Use OpenBLAS to accelerate KANN
    KANNの高速化のためにOpenBLASを使用するか。
    デフォルト:off
  • CGP – Install Communigate Pro(tm) helper
    Communigate Proヘルパーをインストールするか。
    デフォルト:off
  • GPERF – Google perf-tools profiling
    Google perftoolsを使用するか。
    デフォルト:off
  • LUAJIT – Use LuaJIT instead of standard Lua
    標準Luaの代わりにLuaJITを使用するか。
    デフォルト:on

LUAJITのみチェックしてビルドした。

BLASはportsのメンテナーも「何に使っているかよくわからないけど、とりあえず入れとく」みたいなことを言ってるくらいなので、いらない。

CGPはCommunigate Proという商用ソフトウェア向けのヘルパーなので、不要。

GPERFはGoogle Performance Toolsを使って性能解析するためのオプションなので、不要。

設定ウィザード

初期設定はマニュアルで行う方法と、設定ウィザードを使用する方法がある。手軽なのはもちろん、設定ウィザード。

設定ウィザードを使うには、次のようにconfigwizardオプションをつけてrspamadmコマンドを実行する。

# sudo rspamadm configwizard

対話型で実行される。

DKIMの公開鍵が表示されるので、控えておくこと。

サブドメイン用DKIM

サブドメイン用にも鍵を作成したい場合には、コマンドを使用する。

# sudo rspamadm dkim_keygen -s 'dkim' -d sub.mydomain.jp -k /var/lib/rspamd/dkim/sub.mydomain.jp.dkim.key

表示された公開鍵を控えておくこと。

DKIM署名の設定

/usr/local/etc/rspamd/local.d/dkim_signing.confを編集し、作成した秘密鍵を登録する。

domain {
  # Domain name
  mydomain.jp {
    # Private key path
    path = "/var/lib/rspamd/dkim/mydomain.jp.key";

    # Selector
    selector = "dkim";
  }

  # サブドメイン用の鍵を追加
  sub.mydomain.jp {
    # Private key path
    path = "/var/lib/rspamd/dkim/sub.mydomain.jp.key";

    # Selector
    selector = "dkim";
  }
}

オプションも一部変更する。

allow_hdrfrom_mismatch = true;
allow_username_mismatch = true;
try_fallback = false;

try_fallbackを設定する理由については、「Rspamd: リダイレクトメールにDKIM署名をしない」を参照。

DNSサーバの設定

SPFレコード

DNSサーバの設定に、次の行を追加。

txt @ v=spf1 ip4:192.168.1.23 ip4:192.168.1.22 ~all

DKIM

Rspamdの設定ウィザードが表示した公開鍵を、次のようにDNS登録する。

txt dkim._domainkey v=DKIM1; k=rsa; p=MIIB(略)

サブドメイン用にも登録したい場合、サブドメイン用に作成した公開鍵を次のように登録する。

txt dkim._domainkey.sub.mydomain.jp v=DKIM1; k=rsa; p=MIIB(略)

メール送信してみて、ヘッダにDKIM署名がついていることを確認する。

DMARC

PowerDMARCでレポート解析することにする。

基本は有償サービスだが、個人利用は1ドメインに限り無償で利用可。ダッシュボードから管理対象ドメインを登録し、DMARC用のコードを取得して、DNSに登録する。

xt _dmarc v=DMARC1; p=none; rua=mailto:abc012xyz@rua.powerdmarc.com; ruf=mailto:abc012xyz@ruf.powerdmarc.com;main.jp

登録用のメールアドレスは、PowerDMARCから自動的に割り当てられる。

設定確認

DNSの確認をできるツールはいろいろあるが、次のツールは一か所でSPFやDKIMなどすべてまとめて確認できて便利。

DNS登録した後60秒以上待ってから、ツールで設定状態を確認する。

参考

タイトルとURLをコピーしました