Eu tenho um servidor Postfix, que usa o Maildrop como filtro. Os filtros enviam dados da mensagem para um banco de dados. No momento, tenho alguns erros estranhos: alguns e-mails serão entregues, mas o processamento levará mais de 30 minutos. Existe um erro
Command time limit exceeded:
"/usr/local/bin/maildrop -d ${USER}". Command output: maildrop: Timeout
quota exceeded.
que ocorre em tais mensagens. O servidor recebe ca. 20 e-mails por hora, por isso não é um servidor de alto desempenho.
Eu uso um script base, que examina uma pasta, onde armazenei vários scripts de filtro, que são incluídos dinamicamente no script base
Este é o filtro geral:
cc "|scripts/buildfilters"
include "mailfilters/filters"
O script buildfilters
Shell combina todos os arquivos 00_name
.. 99_name
no diretório 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
Assim, pode ser que essa construção tenha problemas no processamento paralelo de mensagens. Um segundo processo do Maildrop pode encontrar um arquivo danificado mailfilters/filters
. Existe a possibilidade de serializar o processamento de mensagens?
Tags postfix