23.4. 配置示例
23.4.1. SpamAssassin 和 Postfix
SpamAssasin 是一个开源邮件过滤器,它提供了一种从传入电子邮件过滤主动电子邮件(垃圾邮件)的方法。[23]
使用红帽企业 Linux 时,spam assassin 软件包提供了 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 文档。这个示例假设已安装 spamassassassin,所有防火墙都已配置为允许访问正在使用的端口上,使用了 SELinux 目标策略,并且 SELinux 以强制模式运行:
过程 23.1. 在非默认端口上运行 SpamAssassin
- 以 root 用户身份使用
semanage
工具显示 SELinux 允许spamd
守护进程默认侦听的端口:~]# semanage port -l | grep spamd spamd_port_t tcp 783
此输出显示,在spamd_port_t
中定义 TCP/783,作为要操作的 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
在 TCP 端口 10000 上正确运行,因为它已被 SELinux 策略允许访问该端口。