Я использую postfix + dovecot, и все сообщения IMAP находятся в /var/vmail/DOMAIN/USER
. Я хотел бы создать скрипт cron, который будет искать сообщения для всех пользователей в папке с названием «Ложные срабатывания», sa-learn
их как ветчину, а затем переместите их во входящие.
Вопрос в том, безопасно ли просто mv
один из этих файлов сообщений? Или это должно быть сделано с помощью каких-то «официальных» средств, чтобы сервер IMAP знал о перемещении?
Dovecot обнаруживает изменения в почтовом ящике и автоматически перестраивает индексы. Однако вместо mv вы можете использовать dovecot's Doveadm и сохраните ненужные перестроения индекса.
Примерно так должно работать:
doveadm search -A mailbox 'False Positives' 2>/dev/null | while read user guid uid; do doveadm fetch -u $user text mailbox-guid $guid uid $uid | sa-learn --ham ; doveadm move -u $user INBOX mailbox-guid $guid uid $uid ; done
Learned tokens from 1 message(s) (1 message(s) examined)
Learned tokens from 1 message(s) (1 message(s) examined)
Learned tokens from 1 message(s) (1 message(s) examined)
Пояснение:
doveadm search -A mailbox 'False Positives'
-> возвращает user / guid / uid всех сообщений в папке «Ложные срабатывания»doveadm fetch -u $user text mailbox-guid $guid uid $uid | sa-learn --ham
-> распечатывает полное сообщение (заголовок и тело) и передает его в sa-learndoveadm move -u $user INBOX mailbox-guid $guid uid $uid
-> перемещает сообщение во входящие