Sendmail access_db 配置。如何使用以及如何编写

Sendmail access_db 配置。如何使用以及如何编写

我正在阅读有关 sendmail 的 access_db 功能的文章。显然,它看起来很有希望成为阻止垃圾邮件的预防措施。

我有几个关于如何使用 access_db 的问题。基本上,我在 access 文件中指定一组规则,然后 sendmail 将检查这个数据库,看看是否应该对电子邮件执行任何操作。

  1. 不符合任何指定规则的邮件怎么办?默认行为是什么?
  2. 我可以使用正则表达式吗?例如,“To:*@spam.com REJECT”可以吗?
  3. 如果我只有“paypal.com RELAY”,是否意味着我的 sendmail 将接受和发送来自或发往 paypal.com 的电子邮件?

多谢!

答案1

  1. 如果某条规则与 access_db 中的规则不匹配,则不会影响邮件的接受或拒绝。邮件将继续由其余规则处理。
  2. 描述了 access_db(以及任何通配符,但不是正则表达式)这里。如果您想要正则表达式,您要么必须编写自己的规则集来模仿 access_db 行为,但使用正则表达式映射,要么使用 milter,例如MIME去方, 或者milter-regex
  3. 最好使用以 或 开头的规则,From:Connect:不是简单的 IP 地址或域,这样就不必考虑该规则是关于连接到您的主机的主机的域名,还是发件人地址的域名(它们不一定相同)。

答案2

如何在 Sendmail 中使用正则表达式

我收到了所有数字域名(例如 3456.com)的垃圾邮件,起初我在 access.db 中添加了 10,000 个条目,这太荒谬了。

在您的 sendmail.mc 文件的底部,邮件程序之后,您可以添加如下正则表达式。

LOCAL_CONFIG
Kallnumbers regex -a@MATCH @[0-9]+\.com
LOCAL_RULESETS
SLocal_check_mail
R$+     $: $(allnumbers $1 $)
R@MATCH     $#error $: "550 Rejected."

您可以逐字复制大部分内容,只需更改一些内容。

定义你的正则表达式并赋予它一个标识符,在其前面加上K 我的标识符是allnumbers和我的正则表达式是[0-9]+\.com

   Kallnumbers regex -a@MATCH @[0-9]+\.com

最后两个定义匹配项和采取的行动

R$+     $: $(allnumbers $1 $)
R@MATCH     $#error $: "550 Rejected.

我意识到那看起来很像 cf,但它属于 mc。

相关内容