Sendmail的access_dbconfiguration。 它是如何使用和如何写它

我正在阅读关于sendmail的access_dbfunction。 显然它看起来很有希望作为阻止垃圾邮件的预防性方法。

我有几个有关如何使用access_db的问题。 所以基本上我在访问文件中指定了一组规则,sendmail会检查这个数据库,看它是否应该对电子邮件做任何事情。

  1. 邮件如何不符合任何指定的规则? 什么是默认行为?
  2. 我可以使用正则expression式吗? 例如,将“要:* @ spam.com拒绝”工作?
  3. 如果我只有“paypal.com继电器”,这是否意味着我的sendmail将接受并发送来自或注定paypal.com的电子邮件?

非常感谢!

  1. 如果规则与access_db中的规则不匹配,则不会影响接受或拒绝该消息。 该消息继续由其余规则处理。
  2. access_db(和任何通配符,但不是正则expression式) 在这里描述。 如果你想要正则expression式,你必须编写自己的规则集来模拟access_db的行为,但是使用正则expression式映射,或者使用milter,比如MIMEDefang或者milter-regex 。
  3. 最好使用以From:Connect:开头的规则,而不是普通的IP地址或域名,以便不必考虑规则是关于连接到主机的主机的域名,还是域名发件人的地址(他们不一定是相同的)。

如何在Sendmail中使用正则expression式

我得到了所有的数字域名,如3456.com垃圾邮件,起初我添加了10,000个条目access.db,这是荒谬的。

在你的sendmail.mc文件中,在邮件的底部,你可以像这样添加一个正则expression式。

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

你可以复制大部分verbatum,只需要改变一些东西。

定义你的正则expression式,并给它一个标识符,前缀为K我的标识符是allnumbers ,我的正则expression式是[0-9]+\.com

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

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

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

我意识到,看起来很cf,但它在MC。