我正在尝试使用OpenBSD,OpenSMTPD, spamd和pf来设置邮件服务器。 我遇到的第一个问题是,许多大型networking邮件提供商(如Gmail)将重新从具有不同IP地址的其他服务器传递邮件,使他们难以将邮件列表传送到白名单。 我已经写了一个脚本,我认为可以通过对GRAY元组的IP执行PTR请求并将生成的域与我信任的手动维护的域列表进行比较来提供帮助。
spamdb -a XXXX列入白名单后从spamdb消失,然后显示为WHITElogging? 一旦他们被列入白名单,它应该是整个知识产权,我想这个灰色元组已经过时了。 这些spamdb元组的典型生命周期是什么? 我看到一些消失,一些重复(灰色然后白色),等等 pf表加载,并将这些受信任域的连接直接传递给smtpd ? 换句话说,我们应该绕过spamdb ,将它们留在灰名单中,直接转到白名单表中,而不是通过spamdb -a将这些IP列入spamdb -a白名单,然后将其添加到<spamd-white> pf表中。 以下是我编写的脚本,定期运行以自动将已遇到和灰名单列出的受信任域列入白名单:
#!/bin/sh set -A whitelist \ amazon.com \ google.com spamdb | while read line do IFS="|" set -A fields $line status=${fields[0]} if [[ $status = "GREY" ]] then ip=${fields[1]} ptr=`host ${ip}` IFS="." set -A tokens $ptr size=${#tokens[*]} domain="${tokens[size-2]}.${tokens[size-1]}" found=false IFS=" " for whitelisted in ${whitelist[@]} do if [[ $domain = $whitelisted ]] then found=true fi done if (($found)) then echo "+ $ip ($domain) has been whitelisted" spamdb -a "$ip" else echo "- $ip ($domain) is unrecognized" fi fi done exit 0
它取决于:
PTRlogging可能是错误的 – 仅仅因为您将.google.com作为PTR一部分,并不意味着它是Google控制相关IP地址。 可以肯定的是,在采取任何行动之前,您可能还需要做出正确的解决scheme(尽pipe公平地说,对灰名单的影响将非常有限,因为任何能够修改PTR都可能成功绕过您的灰名单首先)。 sh互联网input可能不是最好的方法。 随意看看http://BXR.SU/OpenBSD/usr.sbin/spamdb/spamdb.c#dbupdate 。 尽pipe如此,代码似乎没有被写入太可读。
我认为任何一种方法都应该没问题。 使用spamdb维护这个自动白名单可能会更容易一些,因为它会关注维护,过期和一些统计信息。 但是,如果您确实维护自己的列表,则还可以在networking范围内build立白名单。
此外,如果您希望仅限于Google,Amazon以及其他提供正确SPFlogging的提供商,请考虑您可以一次性获取所有IP地址,甚至通过自动方式(例如在SPF的帮助下)。 请参阅https://support.google.com/a/answer/60764 。 您甚至可以使用现有的SPF库来获取所有这些IP地址的列表。