在 Postfix+Maildrop 上序列化邮件过滤器

在 Postfix+Maildrop 上序列化邮件过滤器

我有一台 Postfix 服务器,它使用 Maildrop 作为过滤器。过滤器将消息数据发送到数据库中。目前我遇到了一些奇怪的错误:一些邮件将被发送,但处理时间将超过 30 分钟。出现错误

 Command time limit exceeded:
"/usr/local/bin/maildrop -d ${USER}". Command output: maildrop: Timeout
quota exceeded.

此类邮件会出现这种情况。该服务器每小时接收约 20 封邮件,因此它不是一个高性能服务器。

我使用一个基本脚本,它会查看一个文件夹,其中存储了多个过滤脚本,这些脚本会动态包含在基本脚本中

这是通用过滤器:

cc "|scripts/buildfilters"
include "mailfilters/filters"

Shell脚本将目录内的所有buildfilters文件合并在一起:00_name99_namemailfilters

TMPFILE=$(mktemp)
ls -1 mailfilters/* | grep "^.*/[0-9]\{2,\}_.*" | sed -e 's/^/include "/' | sed -e 's/$/"/' > $TMPFILE
mv $TMPFILE mailfilters/filters
chmod 600 mailfilters/filters

因此,这种结构在并行处理消息方面可能存在问题。第二个 Maildrop 进程可能会发现损坏的文件mailfilters/filters。是否有可能序列化消息处理?

相关内容