Exim保持域配置格式

时间:2014-08-20 11:55:59

标签: exim

我想减慢从特定域发送电子邮件的速度。

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

我知道我可以添加

hold_domains * 

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

hold_domains example.com

任何帮助表示赞赏

感谢

1 个答案:

答案 0 :(得分: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 中,您只需在每行中放置一个要保留传递的域。