この記事のコマンドや設定は執筆時点(2026年7月)で確認した内容です。Rspamd や Postfix のバージョンで書式が変わることがあるので、詰まったときは公式ドキュメント(rspamd.com)もあわせて確認してください。
自前でメールサーバーを立てると、遅かれ早かれスパムとの戦いが始まります。何も対策しないと受信箱は宣伝メールで埋まり、逆に自分から送るメールが相手のスパム判定に引っかかって届かない、といったことも起きます。
そこで頼れるのが Rspamd です。C言語で書かれた非同期処理のスパムフィルタで、動作が軽く、milter という仕組みで Postfix とスムーズに連携できます。この記事では、Ubuntu 上で Postfix がすでに動いている前提で、Rspamd を入れてスパム対策を一段強くするところまでを、設定ファイルの中身つきで解説します。
💡 まだサーバーの初期設定が済んでいない人は、先にUbuntu 26.04 LTSのインストールと初期設定|VPSで最初にやることを済ませておくと、この記事がスムーズに進みます。
Rspamd とは(SpamAssassin との違い)
Rspamd は、受信メールを多角的に採点してスパムかどうかを判定するフィルタです。よく比較される SpamAssassin との違いを、公平なところで挙げるとこんな感じです。
- 動作が軽い:C言語製・非同期設計で、多数のメールをさばいても負荷が上がりにくい
- 判定方法が豊富:ベイズ学習、DNSブラックリスト、SPF/DKIM/DMARC、正規表現ルールなどをまとめて評価し、合計スコアで判定する
- 設定を上書きしやすい:既定ファイルを直接いじらず、差分だけを別ディレクトリに書く仕組みになっている(後述)
- Web UI が付属:スコアの内訳や統計をブラウザで確認できる
「SpamAssassin より必ず優秀」と言い切るものではありませんが、動作の軽さと連携のしやすさから、新しく組むメールサーバーでは Rspamd を選ぶ人が増えています。
前提
- Ubuntu(24.04 / 26.04 など)で Postfix がすでに動作していること
- root もしくは
sudoが使えるユーザーで作業すること
Postfix の基本構築がまだの場合は、先にそちらを済ませてから戻ってきてください。
1. Rspamd と Redis をインストールする
Rspamd は公式の apt リポジトリから入れるのが確実です。まず署名鍵を取り込みます。Ubuntu では apt-key が廃止されたため、鍵は専用の置き場に保存して参照する signed-by 方式を使います。
curl -fsSL https://rspamd.com/apt-stable/gpg.key | \
sudo gpg --dearmor -o /usr/share/keyrings/rspamd.gpg続いてリポジトリを登録します。$(lsb_release -cs) はお使いの Ubuntu のコードネームに自動で置き換わります。
echo "deb [signed-by=/usr/share/keyrings/rspamd.gpg] https://rspamd.com/apt-stable/ $(lsb_release -cs) main" | \
sudo tee /etc/apt/sources.list.d/rspamd.listあとはインストールです。Rspamd はベイズ学習やレート制限のデータ置き場として Redis を使うので、一緒に入れます。
sudo apt update
sudo apt install rspamd redis-server -yサービスを起動して、自動起動も有効にしておきます。
sudo systemctl enable --now rspamd redis-server2. 設定の基本ルール:local.d と override.d
Rspamd の設定でいちばん最初に覚えるべきは、/etc/rspamd/ の中の既定ファイルは直接編集しないということです。更新で上書きされてしまうためです。カスタマイズは次の2つのディレクトリで行います。
/etc/rspamd/local.d/:既定の設定とマージ(追記・部分上書き)したいとき。ふだん使うのはほぼこちら。/etc/rspamd/override.d/:既定の設定をまるごと置き換えたいとき。使う場面は限られます。
以降の設定はすべて local.d/ に小さなファイルを置いていく形で進めます。
3. Redis 連携を設定する
Rspamd に Redis の場所を教えます。local.d/redis.conf を作成します。
sudo nano /etc/rspamd/local.d/redis.conf同じサーバーで Redis を動かしているなら、次の1行で十分です。
servers = "127.0.0.1:6379";4. Postfix と milter で連携する
Rspamd は proxy worker が milter モードでポート 11332 を待ち受けます。Postfix 側からこのポートへメールを渡し、判定してもらう形にします。
Postfix の main.cf を編集します。
sudo nano /etc/postfix/main.cf末尾に次の設定を追記します。
# 受信・送信メールを Rspamd(milter) に渡す
smtpd_milters = inet:localhost:11332
non_smtpd_milters = $smtpd_milters
# Rspamd が応答しないときはメールを止めず通す(保険)
milter_default_action = accept
# milter プロトコルのバージョン
milter_protocol = 6milter_default_action = accept は、万一 Rspamd が落ちていてもメール配送そのものは止めないための保険です。設定を反映します。
sudo systemctl restart postfix rspamdこれで受信メールが Rspamd を通るようになります。
5. DKIM 署名を設定する(送信メールの信頼性を上げる)
DKIM は、送信するメールに電子署名を付けて「確かにこのドメインから出した」と証明する仕組みです。設定しておくと、自分が送ったメールが相手側でスパム扱いされにくくなります。
まず署名用の鍵ペアを作ります。example.com は自分のドメインに、mail はセレクタ名(任意の識別子)に置き換えてください。
sudo mkdir -p /var/lib/rspamd/dkim
sudo rspamadm dkim_keygen -s mail -b 2048 -d example.com \
-k /var/lib/rspamd/dkim/example.com.mail.key > /tmp/dkim.txt鍵ファイルは Rspamd から読めるよう所有者を合わせておきます。
sudo chown _rspamd:_rspamd /var/lib/rspamd/dkim/example.com.mail.key次に local.d/dkim_signing.conf を作成します。
sudo nano /etc/rspamd/local.d/dkim_signing.conf内容は次のとおりです。path の中の $domain・$selector は、送信ドメインとセレクタに応じて自動で展開されます。
path = "/var/lib/rspamd/dkim/$domain.$selector.key";
selector = "mail";
# 認証済み送信・ローカル送信に署名する
sign_authenticated = true;
sign_local = true;
use_domain = "header";最後に、生成された公開鍵をDNSにTXTレコードとして公開します。先ほどの /tmp/dkim.txt に、登録すべきレコードがそのまま出力されているので、その内容を DNS に mail._domainkey.example.com の TXT レコードとして追加します。
cat /tmp/dkim.txtDNSへ反映後、sudo systemctl restart rspamd で設定を読み込ませます。
6. Web UI(コントローラ)にパスワードを設定する
Rspamd は ポート 11334 で管理用の Web UI を提供します。スコアの内訳や統計を見たり、手動で学習させたりできて便利ですが、パスワードなしで外に晒すのは危険です。まずパスワードのハッシュを生成します。
rspamadm pw好きなパスワードを入力すると $2$... で始まるハッシュ文字列が表示されます。これを local.d/worker-controller.inc に設定します。
sudo nano /etc/rspamd/local.d/worker-controller.incpassword = "$2$さっき生成されたハッシュ文字列";⚠️ Web UI は既定で
127.0.0.1(localhost)だけで待ち受けます。そのまま外部公開しないのが安全です。外から見たいときは、11334 をインターネットに直接開けるのではなく、ssh -L 11334:localhost:11334 ユーザー@サーバーIPのように SSHトンネル経由でアクセスするのがおすすめです。設定を反映するにはsudo systemctl restart rspamdを実行します。
7. 動作を確認する(GTUBE テスト)
最後に、スパム判定がちゃんと効いているかを確認します。スパム判定のテストには GTUBE という、フィルタが必ずスパムと判定するための標準テスト文字列が使えます。
本文に次の1行だけを入れたテストメールを、自分のサーバー宛てに送ってみてください。
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X処理の統計は次のコマンドで確認できます。
sudo rspamc statMessages scanned の数が増えていれば、メールが Rspamd を通っている証拠です。詳しいスコアの内訳は、先ほど設定した Web UI(http://localhost:11334、SSHトンネル経由)からも確認できます。ログを直接見たいときは次の場所です。
sudo tail -f /var/log/rspamd/rspamd.logよくある質問
Q. Rspamd を入れたらメールが全部止まってしまいました。milter_default_action = accept が入っているか確認してください。これがあると、Rspamd が応答しなくても配送自体は止まりません。加えて sudo systemctl status rspamd で Rspamd が起動しているか、ポート 11332 を待ち受けているかを確認します。
Q. SpamAssassin から乗り換えられますか?
可能です。ただし両方を同時に milter で噛ませると二重処理になり無駄が多いので、乗り換えるなら SpamAssassin 側の milter は外しておきましょう。ベイズ学習のデータは引き継げないため、Rspamd 側で改めて学習させていく形になります。
Q. DKIM の公開鍵はどのくらいで有効になりますか?
DNSの反映は環境によりますが、数分から数十分が目安です。反映後に DKIM のチェックサービスなどで、mail._domainkey.example.com の TXT が引けるか確認すると確実です。
まとめ
Rspamd と Postfix の連携で、自前メールサーバーのスパム対策を一段強くできました。要点はこの4つです。
- Rspamd と Redis を公式aptリポジトリから入れる
- 設定は既定ファイルを触らず、
local.d/に差分を置く - Postfix とは milter(ポート11332) でつなぐ
- DKIM署名で送信メールの信頼性も上げ、Web UI(11334)はSSHトンネル経由で安全に見る
スパム判定は、運用しながらベイズ学習を育てていくとさらに精度が上がります。まずはこの土台を作っておけば、受信箱も、自分から送るメールの到達性も、ぐっと安定します。
まだサーバーの初期設定から始める場合は、前の記事もどうぞ。

コメント