Red Hat Enterprise Linux 9 にメールサーバーを構築(後編)

conoha Linux
このサイトはアフィリエイト広告(Amazonアソシエイト含む)を掲載しています。
スポンサーリンク

前編では Postfix +Dovecot + PostfixAdmin の設定をしてきました。

今回はそこに Rspamd による 迷惑メール対策、ClamAntiVirus によるウイルススキャンを連動させていこうと思います。

スパムメール対策ソフトとしては SpamAssassin が有名ですが、今回はより多機能な Rspamd を採用しました。

Rspamd は多機能で、DKIM / SPF / DMARC / ARC のすべてに対応できるので、これまで個別に使っていた SpamAssassin や OpenDKIM、pypolicyd-spf を一本化することができます。

Redis のインストール

事前準備として Redis のインストールが必要ですが、WordPress プラグイン LiteSpeed Cache の導入時に設定済みですので、まだの方はそちらをご参照ください。

ClamAV のインストール

手順が煩雑になってしまうので、先に ClamAntiVirus をインストールしておきます。

freshclam.conf を編集して、ウイルスデータベースを更新(freshclam)したときに clamd に通知する設定を行います。

次に、scan.conf を編集して clamd の設定を変更します。

メモリ不足で起動できない場合

さくらの VPS(2G プラン)で AlmaLinux9 のイメージを使用している場合などは、メモリ不足で ClamAV が起動できませんでした。その場合は 2GB 程度のスワップを作成してあげるとよいでしょう。

swapfileの追加
目次: 対象の標準OS, swapfileの追加- スワップが存在しない事を確認, スワップファイルを作成, スワップファイルの有効化.. 「さくらのVPS」の標準OSで swapfile を利...

Rspamd のインストール

Rspamd リポジトリの導入

まず、Rspamd の Centos9 用リポジトリを導入します。

ダウンロードしたリポジトリから、Rspamd をインストールします。

Redis へのアクセス権を追加

Redis グループに Rspamd のユーザー(_rspamd)を追加しておきます。

Rspamd の初期設定

Rspamd の設定ウイザードを実行すると、Web GUI のパスワードハッシュと DKIM の鍵を対話的に作成してくれます。

DKIM キーを作成した場合は、所有者を _rspamd に変更しておきます。

DKIM の設定

DKIM(DomainKeys Identified Mail)とは、メールに電子署名を付加することで、 メールの送信者および内容が改ざんされていないかどうかを検証できるようにするものです。

Rspamd の設定ウイザードで作成済ですので、DNS に公開鍵を登録します。

  • セレクタ名が dkim の場合、DNS の TXT レコードに、dkim._domainkey を追加します。
  • 値は rspamadm で表示された v=DKIM1; k=rsa; p=(公開鍵)になります。

※テスト運用の段階では、v=DKIM1; t=y; k=rsa; t=y; p=(公開鍵)としておき、確認ができたら t=y; を外すと良いでしょう。

DKIM キーを再発行する場合

SPF の設定

SPF(Sender Policy Framework)とは、DNS に登録された IP アドレスとメールサーバーの IP アドレスを比較して、送信元のドメインが詐称されていないかを検査するための仕組みです。

Rspamd は標準で SPF のチェックを行ってくれます。

DNS に自分のサーバーのグローバル IP アドレスを登録する必要があり、TXT レコードに v=spf1 ip4:(サーバーのIPアドレス) -all を登録します。

※受信者がサーバー上で自動転送設定をしていた場合、転送先で弾かれる可能性があります。問題がある場合には -all ではなく ~all で登録してください。

DMARC の設定

DMARC(Domain-based Message Authentication, Reporting, and Conformance)とは、SPF と DKIM の検査の結果や、メールの From の情報などを総合的に判断して、差出人詐称などの異常を検知した後の処理を、送信側の指定した方法で行う技術です。

Rspamd の local.d に設定(dmarc.conf)を配置することで、既存の設定にマージすることができます。

DNS の TXT レコードに _dmarc という名称で、v=DMARC1; p=quarantine; pct=100; を登録します。

ARC の設定

ARC(Authenticated Received Chain)とはメールが再配送された場合でも、メール経路上の送信ドメイン認証の検査結果を辿って、正しい経路で転送されたことを確認できるようにする技術です。

Rspamd では DKIM の秘密鍵を ARC にも流用でき、DNS の公開鍵も共通で使えます。

まずは DKIM の設定ファイル(dkim_signing.conf)を、ARC 用(arc.conf)にコピーします。

続いて、不要な行(domain セクション以外の行)を削除します。

ウイルスチェックの設定

Clam AntiVirus と連携して、メール受信時にウイルスチェックを行います。

Clam AntiVirus のグループ(virusgroup)に Rspamd のグループ(_rspamd)を追加して、ソケットにアクセス権を追加します。

antivirus.conf を新規作成して、Clam AntiVirus の設定をします。

※ウイルスチェックのテストをする際に、EICAR のテスト用文字列をメール本文に入れても反応しません。テスト用文字列を記載したテキストを添付ファイルとして送信するようにしてください。

Download Anti Malware Testfile - EICAR
Download Anti Malware Testfile, What is the eicar test file? Who needs the Anti-Malware Testfile, Download Anti Malware ...

フィッシングメール対策

メール本文に記載された URL をフィッシングサイトのブラックリストで判定するように設定します。

phishing.conf を新規作成して、フィッシングメール対策の設定をします。

ブラックリスト・ホワイトリスト設定

差出人のメールアドレスやドメイン、IP アドレスごとに個別のブラックリスト・ホワイトリストの設定をできるようにします。

それぞれの map ファイルを作成します。

管理画面から操作できるように、所有者を変更します。

Rspamd の管理画面で Configuration のタブから、これらの設定を編集することができるようになりました。

Rspamd がアップデート(dnf-automatic など)されると /etc/rspamd/local.d/ ディレクトリの所有者が root に戻ってしまいます。管理画面でパーミッションエラーとなる場合は、ディレクトリの所有者を再び _rspamd に変更してください。

スコアに応じたアクションの設定

Rspamd のデフォルトではスコアが 15 ポイントを超えると Reject され、メールを受け取らずにエラーを送信元へ突き返します。誤判定も考えられる状況で、内容を確認できないのは危ないので、Reject は無効(null)にしておきます。

Rspamd の override.d に設定(actions.conf)を配置することで、スコアに応じた挙動を上書きします。

メールヘッダーに付与する情報の設定

milter_headers.conf を作成して、受信したメールのヘッダに追加したい項目をカスタマイズします。

Web GUI の編集権限を設定

Rspamd の初期設定で行った configwizard によって、worker-controller.inc に password の設定がされています。

ただし、これだけだと閲覧権限しかありませんので、 ルール等の編集可能な権限の enable_password も設定しておきます。

Rspamd のパスワードハッシュ作成方法

Rspamd の起動

ここまで出来たら Rspamd を起動し、自動開始も設定しておきましょう。

Postfix と連動する

Rspamd のデフォルトでは INET ドメインで連携しますが、大量のメールを捌くサーバーの場合は UNIX ドメインソケットの方がスループットが優れているので、変更しておくと良いでしょう。

Rspamd のソケットを UNIX ドメインに変更

Rspamd の override.d に worker-proxy.inc を作成して、ソケットの設定を上書きします。

Rspamd を再起動(systemctl restart rspamd)すると、worker-proxy.sock が作成されます。これを Postfix からアクセスできるように Rspamd グループに Postfix ユーザーを追加します。

Postfix の設定変更

Rspamd を Postfix の Milter(Mail Filter) に登録するため、main.cf の最終行に下記の設定を追加します。

設定したら、Postfix を再起動(systemctl restart postfix)しておきましょう。

Rspamd の Web GUI 設定

Rspamd の管理画面は http://サーバーの IP アドレス:11334 から開くことができますが、ポートが塞がっているため外部からアクセスするにはファイヤーウォールの設定変更が必要です。

OpenLiteSpeed でリバースプロキシを設定して、ポートを開放せずにアクセスできるようにし、必要に応じてアクセス制限もできるようにします。

OpenLiteSpeed のリバースプロキシ設定

OLS の管理画面で、サーバー設定 ⇒ 外部アプリ に移動し「Web サーバー」を追加します。

  • 名前:Rspamd
  • アドレス:127.0.0.1:11334

次に、バーチャルホスト ⇒(バーチャルホスト名)⇒ Rewrite から Rewrite 制御の項目を下記に変更します。

  • Rewrite を有効にする:はい
  • Auto Load from .htaccess:はい

そして、Rewrite ルールを追加します。

RewriteCond でアクセスできる IP アドレスを制限し、RewriteRule で外部アプリに設定したアドレスに転送しています。(※アクセス制限が必要な場合のみ)

設定を変更したら、管理画面から OLS を再起動して反映させます。

ブラウザで https://(ドメイン名)/rspamd/ にアクセスして、Rspamd のログイン画面が表示されることを確認してください。

参考にしたサイト

迷惑メール対策ツール「Rspamd」の導入。Postfix,CentOS7
SpamAssassinでの除去は、設定が大変で、精度がもう少し高かったらなー。 で、「RSPAMD」を! 確かに、postfix回り、その他のツール系も設定が楽になりました。 かつ、迷惑メールの判断も、それなりにいいですー。 関連記事 2

コメント