RSPAMDによって迷惑メールの対策は出来ていますが、ウィルスメールのチェックは出来ていません。
迷惑メールと判断されるような如何にもなスパムメールであれば弾いてくれますが、そうではないメールの場合、添付ファイルにウィルスが仕込まれていてもスルーしてしまいます。
なので、今回はRSPAMDにClamAVと連携させてウィルスメールのチェックも行えるようにしたいと思います。
この記事で行うこと
1. 必要なソフトウェア
RSPAMDとClamAVが必要となります。
2. RSPAMDの設定
WebUIの設定を行う際にも触れましたが、RSPAMDの設定を変更する際には local.d
というディレクトリ内にデフォルト値の設定のファイル名と同じファイルを作ります。
ウィルススキャンの設定は modules.d/antivirus.conf
がデフォルト値となりますので、 local.d
内に antivirus.conf
というファイルを作ります。(デフォルト値の入っているディレクトリ名は無視します)
RSPAMDの公式リポジトリからCentOS8にインストールした場合のフルパスは /etc/rspamd/local.d/antivirus.conf
となります。
作成する内容は以下の通りです。
clamav {
action = "reject";
message = '${SCANNER}: virus found: "${VIRUS}"';
symbol = "CLAM_VIRUS";
type = "clamav";
servers = "/run/clamd.scan/clamd.sock";
whitelist = "/etc/rspamd/antivirus.wl";
}
clamav { }
で括られている部分が一連の設定となります。ここの clamav
は単なる設定名で、分かれば何でも良かったりします。
設定値の意味は以下の通りです。
action = "reject";
: 検知されたメールは拒否する事を示します。受信はして置きたい場合はreject
の代わりにadd header
にすることでウィルスが検知したというヘッダーを付けて受信します。メールクライアントによってこのヘッダーを表示するかは変わるので、add header
にする場合はメールの振り分け機能などでちゃんと分かるようにして置いてください。message = '${SCANNER}: virus found: "${VIRUS}"';
: ウィルスを検知したときにRSPAMDのログに出力するメッセージです。symbol = "CLAM_VIRUS";
: RSPAMDでの検査名です。RSPAMDでは複数の検査を行ってスコアリングを行うことでスパム判定をします。設定した検査名にスコアを設定することでウィルスチェックの結果を加えることが出来ます。type = "clamav";
: ウィルスチェックに使うソフトウェアです。今回はClamAVを使うのでclamav
に設定します。servers = "/run/clamd.scan/clamd.sock";
: ウィルスチェック用サーバへのアドレスです。今回はUNIXドメインソケットを使うので、その場所を記載します。(ClamAVの設定記事の「2-1.scan.conf
の設定」で一番最初に設定した部分です。)whitelist = "/etc/rspamd/antivirus.wl";
: ここで指定したファイル内に記載されているIPアドレスから来たメールはホワイトリストとなり、ウィルチェックを行いません。ホワイトリストが必要となった時にファイルを作成すれば大丈夫です。(指定されたファイルが存在しなくてもエラーとはなりません)
他にも設定は存在しますが、今回は不要なので割愛します。
どのような設定があるか気になる場合は modules.d/antivirus.conf
のデフォルト設定に(英語ですが)設定の説明が載っています。
3. virusgroup
グループにRSPAMDを追加
先ほどUNIXドメインソケットを指定しましたが、RSPAMDの起動ユーザである _rspamd
はこのソケットの権限を持っていないため接続出来ません。
_rspamd
が接続出来るようにするために、ソケットの権限を持つ virusgroup
に _rspamd
を加えます。
[root@localhost ~]# groupmems --group virusgroup --add _rspamd
groupmems
: グループのユーザを管理するコマンドです。--group virusgroup
: 管理するグループ名をvirusgroup
に指定しています。--add _rspamd
: ユーザの追加を指定しています。対象は_rspamd
です。
4. RSPAMDの再起動
設定を反映させるためにRSPAMDを再起動します。
ClamAVの設定は変更していないため、ClamAVの再起動は不要です。
[root@localhost ~]# systemctl restart rspamd
まとめ
これでRSPAMDでウィルスメールのチェックが行えるようになりました。
テストをする際にはClamAVのテスト同様にeicar.comを使うこととなります。
しかし他のメールサーバから送る場合、その途中の経路で検知されて拒否される可能性が高いので、同じメールサーバ内のメールで行うことをおすすめします。
このとき、同じメールサーバ内のメールはチェックしないような設定にしていないか注意してください。(このサイトではそのような設定の説明はしていませんが、他で設定しているかもしれないので念のため)