23.4. 設定の例
23.4.1. SpamAssassin および Postfix
SpamAssasin は、オープンソースのメールフィルターで、受信したメールから迷惑メール (spam メッセージ) をフィルターにかける方法を提供します。[23]
Red Hat Enterprise Linux を使用する場合は、spamassassin パッケージにより SpamAssassin が提供されます。以下のコマンドを実行して、spamassassin パッケージがインストールされているかどうかを確認します。
~]$ rpm -q spamassassin
package spamassassin is not installed
インストールされていない場合は、root で
yum
ユーティリティーを使用してインストールします。
~]# yum install spamassassin
SpamAssassin は、Postfix などのメーラーと一緒に動作し、スパムフィルターリング機能を提供します。SpamAssassin がメールを効果的に傍受、分析、フィルターリングするには、ネットワークインターフェイスでリッスンする必要があります。SpamAssassin のデフォルトポートは TCP/783 ですが、これは変更できます。以下の例は、SELinux が、デフォルトで特定のポートへのアクセスのみを許可することで、SpamAssassin を補完する実際のデモンストレーションを示しています。次に、この例では、ポートを変更し、SpamAssassin がデフォルト以外のポートで動作するようにする方法を示します。
これは単なる例で、SELinux が SpamAssassin の単純な設定にどのように影響するかを示していることに注意してください。SpamAssassin に関する包括的なドキュメントは、このドキュメントの範囲外です。詳細は、公式の SpamAssassin のドキュメント を参照してください。この例では、spamassassin がインストールされていることを前提としています。ファイアウォールは、使用中のポートへのアクセスを許可するように設定されており、SELinux Targeted ポリシーが使用され、SELinux が Enforcing モードで実行されていることを前提としています。
手順23.1 デフォルト以外のポートで SpamAssassin を実行する
semanage
ユーティリティーを root で実行し、SELinux によりspamd
デーモンがデフォルトでリッスンできるようになっているポートを表示します。~]# semanage port -l | grep spamd spamd_port_t tcp 783
これは、TCP/783 がspamd_port_t
で SpamAssassin の動作ポートとして定義されていることを示しています。/etc/sysconfig/spamassassin
設定ファイルを編集して、サンプルポート TCP/10000 で SpamAssassin を起動するように変更します。# Options to spamd SPAMDOPTIONS="-d -p 10000 -c m5 -H"
この行では、SpamAssassin がポート 10000 で動作することを指定するようになりました。以下の例では、このソケットを開くことができるように SELinux ポリシーを変更する方法を説明します。- SpamAssassin を起動すると、以下のようなエラーメッセージが表示されます。
~]# systemctl start spamassassin.service Job for spamassassin.service failed. See 'systemctl status spamassassin.service' and 'journalctl -xn' for details.
この出力は、SELinux がこのポートへのアクセスをブロックしたことを示しています。 - 以下のような拒否メッセージが SELinux により記録されます。
SELinux is preventing the spamd (spamd_t) from binding to port 10000.
- root で
semanage
を実行して SELinux ポリシーを変更し、SpamAssassin がサンプルポート (TCP/10000) で動作できるようにします。~]# semanage port -a -t spamd_port_t -p tcp 10000
- SpamAssassin が起動し、TCP ポート 10000 で動作していることを確認します。
~]# systemctl start spamassassin.service ~]# netstat -lnp | grep 10000 tcp 0 0 127.0.0.1:10000 0.0.0.0:* LISTEN 2224/spamd.pid
- この時点で、
spamd
は、SELinux ポリシーでそのポートへのアクセスが許可されているため、TCP ポート 10000 で適切に動作しています。