「Almalinux9」にインストールされた「Rspamd」にメールの許可・拒否リスト(ホワイトリスト・ブラックリスト)の設定を追加する方法です。
Rspamd構築手順
- 【AlmaLinux9】Rspamdをインストールする方法
- 【AlmaLinux9】RspamdにDKIM、ARC、DMARC機能を追加する方法
- 【AlmaLinux9】Rspamdに許可・不許可リスト(ホワイトリスト・ブラックリスト)の設定を追加する方法<
メールの許可・拒否リスト(ホワイトリスト・ブラックリスト)を設定
「/etc/rspamd/local.d/multimap.conf」にルールを設定することで、メールの許可・拒否の設定することが出来ます。
# cd /etc/rspamd/local.d # cp -p multimap.conf multimap.conf_$(date +%Y%m%d-%H%M%S) # vi multimap.conf
設定内容
ルールの設定は以下のような書式で行います。
設定名 { type = "マップタイプ"; filter = "フィルター"; map = "マップファイル"; action = "ルールにマッチした場合の動作"; regexp = true; description = "マップ説明"; } 設定名 { type = "マップタイプ"; map = "マップファイル"; filter = "フィルター"; score = 数値; regexp = true; description = "マップ説明"; }
それぞれの設定項目を説明ます。
設定名
設定内容が分りやすい名前をつけることを推奨します。
type
マッチング対象となる情報の種類を設定します。
私は以下の種類を使用してルールを作成することが多いです。
- from: From ヘッダーのメールアドレス
- ip: 送信元のIPアドレス
他にも多くの「type」がありますので、下記のページでより詳しい情報を確認してみてください。
https://rspamd.com/doc/modules/multimap.html#map-types
filter
どのような形式でフィルタリングを行うかを設定します。
「type」が「from」や「ip」の場合は、以下の形式を使用することが多いです。
「filter」が設定されていない場合は、「real_ip」が初期設定として有効となります。
- email:addr メールアドレスでのマッチング ※設定例 user@example.com
- email:domain ドメインでマッチング ※設定例 example.com
- real_ip IPアドレスでのマッチング ※設定例 192.168.0.1 192.168.0.0/24
その他の「filter」形式については、下記のページを参照願います。
https://rspamd.com/doc/modules/multimap.html#from-rcpt-and-header-filters
map
「filter」で設定した形式にマッチした、メールアドレスやIPアドレスを記載するファイルを指定します。
このファイルは「_rspamd」ユーザで読み書き出来る必要があります。
action
設定したルールにマッチした際の動作を設定します。
- accept: 許可
- reject: 拒否
「Action」か「score」のどちらかを選択して設定します。
score
ルールにマッチした際の「score」を設定します。
- 正の数: スパムスコアを増加させスパム判定されやすくする
- 負の数: スパムスコアを現象させてスパム判定されにくくする
- 0: スコアを変更しない
regexp
正規表現を使用したい場合に「true」と設定します。
description
このリストの目的や内容を説明するテキストで、ログや管理画面などでも表示されます。
設定例
私が使用している以下のルールを設定例として紹介します。
- ALLOW_MAIL_ADDRESS: 受信を許可するメールアドレス
- ALLOW_MAIL_DOMAIN: 受信を許可するメールドメイン
- DENY_MAIL_ADDRESS: 受信を拒否するメールアドレス
- DENY_MAIL_DOMAIN: 受信を拒否するメールドメイン
- DENY_IP: 受信を拒否するIPアドレス
ALLOW_MAIL_ADDRESS { type = "from"; filter = "email:addr"; map = "/var/lib/rspamd/allow_mail_address.map"; action = "accept"; regexp = true; description = "Allow Mail Address"; } ALLOW_MAIL_DOMAIN { type = "from"; filter = "email:domain"; map = "/var/lib/rspamd/allow_mail_domain.map"; action = "accept"; regexp = true; description = "Allow Mail Domain"; } DENY_MAIL_ADDRESS { type = "from"; filter = "email:addr"; map = "/var/lib/rspamd/deny_mail_address.map"; action = "reject"; regexp = true; description = "Deny Mail Address"; } DENY_MAIL_DOMAIN { type = "from"; filter = "email:domain"; map = "/var/lib/rspamd/deny_mail_domain.map"; action = "reject"; regexp = true; description = "Deny Mail Domain"; } DENY_IP { type = "ip"; map = "/var/lib/rspamd/deny_ip_list.map"; prefilter = true; action = "reject"; description = "Deny IP addresses"; }
mapファイル作成
mapファイルの作成場所に決まりは無いのですが、「/var/lib/rspamd」は所有者とグループが「_rspamd」で、パーミッションの設定も都合が良いので作成場所としています。
# ls -l /var/lib/ | grep rspamd drwxr-xr-x 3 _rspamd _rspamd 24576 Mar 15 14:55 rspamd
「touch」コマンドで空のmapファイルを作成します。
# touch /var/lib/rspamd/allow_mail_address.map # touch /var/lib/rspamd/allow_mail_domain.map # touch /var/lib/rspamd/deny_mail_address.map # touch /var/lib/rspamd/deny_mail_domain.map # touch /var/lib/rspamd/deny_ip_list.map
作成したmapファイルの所有者とグループを「_rspamd」に設定します。
# chown _rspamd:_rspamd /var/lib/rspamd/allow_mail_address.map # chown _rspamd:_rspamd /var/lib/rspamd/allow_mail_domain.map # chown _rspamd:_rspamd /var/lib/rspamd/deny_mail_address.map # chown _rspamd:_rspamd /var/lib/rspamd/deny_mail_domain.map # chown _rspamd:_rspamd /var/lib/rspamd/deny_ip_list.map
設定反映
すべての設定が完了しましたら、設定ファイルの構文チェックを行います。
# rspamadm configtest syntax OK
問題がなければ「Rspamd」を再起動して設定を反映させます。
# systemctl restart rspamd
動作確認
「Rspamd」のWebUIに管理者としてログインしたあとに、メニューの「Configuration」を選択し、設定したルールが表示されていることを確認してください。
mapファイルの設定方法
作成したmapファイルに設定をする方法として、直接編集する方法とWebUIから編集する方法があります。
直接編集
マップファイルを直接編集して、許可・拒否をしたいメールアドレスやIPアドレスを記述します。
# vi /var/lib/rspamd/deny_mail_address.map
複数設定する場合は以下のように、1つずつ改行して記述していきあます。
user_01@example.com user_02@example.com user_03@example.net
編集完了後に設定内容はすぐに反映されます。
WebUIから編集
RspamdのWebUIに管理者としてログインしたあとに、メニューの「Configuration」を選択し、編集を行いたいmapファイルクリックします。
編集用の画面が表示されるので、メールアドレスやIPアドレスを入力後に「Save changes」をクリックして保存します。
動作確認
WebUIにログインし、メニューの「history」から設定したルールの動作状況を確認することが出来ます。
「multimap.conf」に設定したルールに合致した場合、「Pass-through module」部分に「multimap」と表示されますので、指定した「Action」が実行されているか、「score」を設定した場合は設定した数値が反映されているかを確認してください。
メールをrejectした場合
メールを「reject」した場合は、メール送信元に以下のようなエラーメッセージを返します。
<tamohiko@server-memo.net>: host mail.server-memo.net[xxx.xxx.xxx.xxx] said: 554 5.7.1 Matched map: DENY_MAIL_ADDRESS (in reply to end of DATA command)
コメント