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を使うこととなります。
しかし他のメールサーバから送る場合、その途中の経路で検知されて拒否される可能性が高いので、同じメールサーバ内のメールで行うことをおすすめします。
このとき、同じメールサーバ内のメールはチェックしないような設定にしていないか注意してください。(このサイトではそのような設定の説明はしていませんが、他で設定しているかもしれないので念のため)