![在 Postfix+Maildrop 上序列化邮件过滤器](https://linux22.com/image/729473/%E5%9C%A8%20Postfix%2BMaildrop%20%E4%B8%8A%E5%BA%8F%E5%88%97%E5%8C%96%E9%82%AE%E4%BB%B6%E8%BF%87%E6%BB%A4%E5%99%A8.png)
我有一台 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_name
99_name
mailfilters
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
。是否有可能序列化消息处理?