我最近在备份我的 CentOS 7 系统后安装了 CentOS 8,并且在尝试让 cyrus-imapd 备份和运行时似乎搞砸了一些事情。邮件已正确传递,但筛子邮件过滤器抱怨各种邮箱不存在,因此无法正确归档邮件。例如,如果我在本地网络上发送消息:
[root@buttercup quota]# mail [email protected]
Subject: Test Message
Test
.
EOT
邮件日志将显示:
Dec 6 12:51:39 buttercup postfix/pickup[27670]: 07FBA216825B: uid=0 from=<root>
Dec 6 12:51:39 buttercup postfix/cleanup[27810]: 07FBA216825B: message-id=<[email protected]>
Dec 6 12:51:39 buttercup postfix/qmgr[27671]: 07FBA216825B: from=<[email protected]>, size=419, nrcpt=1 (queue active)
Dec 6 12:51:39 buttercup cyrus/lmtp[27814]: sieve runtime error for jim id <[email protected]>: Fileinto (user/jim/System Messages): Mailbox does not exist
Dec 6 12:51:39 buttercup cyrus/lmtp[27814]: LOSTQUOTA: unable to record change of 697 bytes and 1 messages in quota user.jim: Quota root does not exist
Dec 6 12:51:39 buttercup cyrus/lmtp[27814]: Delivered: <[email protected]> to mailbox: user.jim
Dec 6 12:51:39 buttercup cyrus/lmtp[27814]: USAGE jim user: 0.012321 sys: 0.005097
Dec 6 12:51:39 buttercup postfix/lmtp[27813]: 07FBA216825B: to=<[email protected]>, relay=localhost[127.0.0.1]:24, delay=0.27, delays=0.03/0.01/0.03/0.2, dsn=2.1.5, status=sent (250 2.1.5 Ok SESSIONID=<cyrus-27814-1575654699-2-7475442468148307411>)
Dec 6 12:51:39 buttercup postfix/qmgr[27671]: 07FBA216825B: removed
邮箱确实存在,如 cyradm 所示:
buttercup.home.lan> lm user/jim/System\ Messages
user/jim/System Messages (\HasNoChildren)
在安装 CentOS 8 之前,这一切都运行良好。相关的(我认为) imapd.conf 条目:
defaultpartition: default
partition-default: /data/spool/imap
sievedir: /var/lib/imap/sieve
virtdomains: off
unixhierarchysep: yes
假脱机目录如下所示:
[root@buttercup jim]# ls -l /data/spool/imap/j/user/jim
-rw-------. 1 cyrus mail 336 Nov 30 17:57 cyrus.annotations
-rw-------. 1 cyrus mail 373712 Dec 6 13:01 cyrus.cache
-rw-------. 1 cyrus mail 189 Apr 19 2013 cyrus.header
-rw-------. 1 cyrus mail 23424 Dec 6 13:01 cyrus.index
-rw-------. 1 cyrus mail 112 Nov 26 05:31 cyrus.squat
drwx------. 2 cyrus mail 20480 Nov 30 17:57 'System Messages'
我已经用尽了我的故障排除技巧,所以在我深入研究 cyrus/sieve 源代码以尝试确定发生了什么之前,我希望这里有人能认识到问题或看到我犯的一个简单错误。
cyrus-imapd 邮件列表中的某个人提供了答案。我的筛子脚本中的 fileinto 操作包括user/jim,但它应该与用户收件箱相关,因此不需要user/jim 。一旦我从每条规则中删除它们,一切都很好。