Самый простой и ненавязчивый способ - передать все сообщения на syslog
. Эта функция уже встроена для postfix
и dovecot
. Скажем, dovecot
конфигурация должна выглядеть так:
. . . .
log_path = syslog
syslog_facility = mail
. . . .
syslog
может направлять все сообщения, полученные из определенного двоичного файла, в канал.
mail.* |/tmp/maillog.pipe
Тогда какой-то сценарий должен прочитать этот канал, проанализировать строки и вызвать клиент CLI mysql, который сохраняет данные в базе данных.
#!/bin/sh
while read LINE
do
# all the parsing should be written here
mysql -e "USE maillog; INSERT INTO $table VALUES ($a, $b, $c);"
# any additional proceeding can be performed here
done < /tmp/maillog.pipe
####
Все это не рабочее решение, а лишь подсказка. Точная конфигурация и код скрипта зависят от ваших реальных потребностей.