在Postfix邮件服务器上,如何设置灰名单服务

・4 分钟阅读

使用Postfix在Centos上实现灰名单技术的最方便的方法是使用postgrey

由于postgray在主存储库中,我们可以在运行



 # yum install postgrey

然后运行守护进程,并且在引导时启用它:



 #systemctl start postgrey
 #systemctl enable postgrey

它使用标准的smtpd_recipient_限制机制,通过UNIX套接字处理postgray ,只需将套接字路径添加到check_policy_service :



 smtpd_recipient_restrictions =
 permit_mynetworks,
 check_policy_service unix:postgrey/socket,
 permit

这将告诉smtpd进程在其他检查之后将消息发送到postgray的socket (我们不想简单地过滤掉的电子邮件),只在postgray接受它之后才接受它。

Postgrey本身没有真正的配置文件,唯一选项是你希望消息延迟多长时间,因此在/etc/sysconfig/postgrey中,我们可以定义守护进程的启动选项,默认情况下延迟是300秒,但是即使是60秒对于大多数机器人来说也足够了。



 OPTIONS=\"--unix=/var/spool/postfix/postgrey/socket --delay=60\"

如果你看到"access denied",可以使用audit2allow解决SELinux问题,它将告诉SELinux postgray守护进程可以写入UNIX套接字:



 # grep smtpd_t /var/log/audit/audit.log | audit2allow -m postgreylocal > postgreylocal.te
 # cat postgreylocal.te
 module postgreylocal 1.0;
 require {
 type postfix_smtpd_t;
 type postfix_spool_t;
 type initrc_t;
 class sock_file write;
 class unix_stream_socket connectto;
 }
 #============= postfix_smtpd_t ==============
 allow postfix_smtpd_t initrc_t:unix_stream_socket connectto;
 allow postfix_smtpd_t postfix_spool_t:sock_file write; 

这个是我们可以看到发送者,接收者和发送者主机的消息例子



Sep 21 14:38:04 andreybondarenko postgrey[518]: action=pass, reason=triplet found, client_name=mail2.static.mg.example.com, client_address=192.127.58.166, [email protected], [email protected]

以下是延迟消息的例子:



Sep 22 11:20:31 andreybondarenko postgrey[518]: action=greylist, reason=new, client_name=ppp91-122-100-196.pppoe.avonddsl.com, client_address=91.12.10.196, [email protected], [email protected]

postgray的缺点是从新服务器发送的第一封邮件将延迟几分钟,

最后,我想说的是,greylisting技术反弹了大部分垃圾邮件,因为它背后的想法和软件都是自由的,它不会像Bayes过滤器那样出现误报。

讨论
Beryl profile image