Postfix的最佳设置和优化VPS上的自定义传送脚本

所以我在Linode 1080 VPS上部署了Postfix + saslauthd + Courier-IMAP。 我们是一个小公司,我们有大约30个账户(为了方便+ Maildirs使用物理* nix用户,请参阅后面的内容),但是我们广泛使用Courier的共享文件夹(对于多个账户)使用自定义脚本I在Ruby中写道。 它通过Spamassassin过滤电子邮件,用一些规则读取YAML文件,然后执行几个检查,看看在我们的复杂结构中电子邮件的位置。 Maildirs和phyiscal用户为我提供了所需的灵活性。

邮件被接收,然后传递给我的脚本,该脚本在其主目录中的用户的.forward文件中定义。

总而言之,该脚本需要大约2秒钟才能完成。 现在,我们没有相对较高的电子邮件数量(我估计大约每小时30-50封电子邮件),但是我正在寻找方法加快速度,同时确保我们的电子邮件负载变得更高(或者我们发现“垃圾邮件风暴'),我们的服务器不会突然出现内存不足等问题。我的问题是:

  1. 在传递给我的脚本之前,通过spamassassin 守护进程 (而不是每次收到邮件时都会启动应用程序)来过滤电子邮件的方式是什么? 猜猜现在这样做是不好的做法。
  2. 有没有办法限制postfix同时传递给我的脚本的电子邮件数量? 我不想最终有10个脚本在同一时间运行。
  3. 我怎么能把我的脚本变成一个守护进程? 这会让事情变得更快吗?

提前致谢。

PS:电子邮件(以及/ home)存储在一个单独的XFS分区上,并挂载noatime。

在传递给我的脚本之前,通过spamassassin守护进程(而不是每次收到邮件时都会启动应用程序)来过滤电子邮件的方式是什么? 猜猜现在这样做是不好的做法。

看看用perl编写的amavisd-new 。 它会做你想要的,在networking级别集成(你应该愿意),并提供防病毒扫描。 大多数主要的Linux发行版都将其作为预构build的软件包提供。 唯一需要担心的是一些发行版将使用一个有偶尔错误的陈旧版本。 这些错误大部分会导致amavis楔入或终止; 所以如果比官方网站的版本老3个版本,我会认真考虑手动pipe理这个软件包。

有没有办法限制postfix同时传递给我的脚本的电子邮件数量? 我不想最终有10个脚本在同一时间运行。

你在谈论速度限制。 考虑到服务器的“小”大小,我会将后缀速率限制器本身设置为每分钟3-6封电子邮件,而不是将其设置在扫描端。 如果你试图接受所有东西,那么垃圾邮件风暴就会阻塞你的队列,反正你最终还是会有积压。

我怎么能把我的脚本变成一个守护进程? 这会让事情变得更快吗?

吨! 在这方面,我无法帮到你,但是你的脚本预先启动会削减大量的开销。