0

我想减慢来自特定域的电子邮件的传递速度。

根据我的研究,我知道我可以将 hold_domains 添加到 exim 配置文件中,但我不确定它的语法并且没有运气找到任何示例。

我知道我可以添加

hold_domains * 

并从字面上停止每个域,但我通常应该提供位于其他地方的列表还是只是添加

hold_domains example.com

任何帮助表示赞赏

谢谢

4

1 回答 1

1

这是未经测试的,我建议您获取此信息并进行测试。想象一下,您的数据库中有一个名为Delivery的表,它控制对远程域(即不是您托管的域)的交付。该表中有几个字段:域、日期、评论等。如果添加一个名为“hold”的字段,默认为 0,那么只有当您希望不发送到特定域的电子邮件时,才可以将其设置为 1 .

项目hold_domains是一个扩展项目,但它是一个主要配置选项,这意味着它在 exim 启动时进行评估,例如队列运行器。如果你有:

hold_domains = ${>\n lookup mysql {SELECT domain FROM delivery WHERE hold=1}}

然后,每次您的队列运行器启动时,它都会进行查找并跳过传送到它在该列表中找到的任何域。“如果使用 -M,-qf ... 强制传递消息,则该选项将被覆盖”,因此您可以通过使用这些选项从命令行手动传递消息来手动强制传递到域,为此设置 hold=0域,或从交付表中删除该域。您可能会决定,由于管理/法律问题,您需要一个单独的保留字段,而不是由于向该主机的交付问题而保留的字段。

您还需要某种标准方法来操作该保持字段,无论是 shell、perl 还是 python 脚本,直接从 mysql 命令行,或者您构建的一些 Web 表单来执行此操作。如何控制这完全取决于您和您拥有的资源。

--编辑根据您的问题,数据库对于您想要的东西来说太过分了,而带有您想要保留的域列表的本地文件就足够了。为此,请创建一个文本文件,例如/etc/exim/hold_domains.txt。然后将hold_domains配置为从该文件中读取。这是未经测试的,我不确定是否会按预期工作:

hold_domains = ${>\n lookup{*} wildlsearch{/etc/exim/hold_domains.txt}}
  *or*
hold_domains = lsearch;/etc/exim/hold_domains.txt

/etc/exim/hold_domains.txt中,您只需在每行放置一个域,以保持交付。

于 2014-08-20T14:34:26.153 回答