我正在运行 postfix + dovecot,所有 IMAP 消息都在 中/var/vmail/DOMAIN/USER
。我想制作一个 cron 脚本,它将在名为“False Positives”的文件夹中查找所有用户的消息,并将sa-learn
其视为 ham,然后将其移动到收件箱中。
这里的问题是,只mv
保留其中一个邮件文件是否安全?还是必须通过某种“官方”方式才能让 IMAP 服务器知道这一移动?
答案1
Dovecot 会检测邮箱更改并自动重建索引。不过,除了“mv”,您还可以使用 dovecot 的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'
-> 返回“误报”文件夹中所有邮件的用户/guid/uiddoveadm fetch -u $user text mailbox-guid $guid uid $uid | sa-learn --ham
-> 打印出完整消息(标题和正文)并通过管道传输到 sa-learndoveadm move -u $user INBOX mailbox-guid $guid uid $uid
-> 将消息移至收件箱