ずいぶん前に入れあったけど、あらためてメモ。
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などすべてまとめて確認できて便利。
- パワーツール (PowerDMARC)
DNS登録した後60秒以上待ってから、ツールで設定状態を確認する。
参考
- Rspamd (公式サイト)
- Red Hat Enterprise Linux 9 にメールサーバーを構築(後編)
- Gentoo Linuxのpostfixにrspamdを導入
- メール送信者のガイドライン (Google Workspace管理者ヘルプ)