无法浏览具有特定服务器的 iOS 客户端上的邮件子文件夹。Dovecot 和 Maildir

无法浏览具有特定服务器的 iOS 客户端上的邮件子文件夹。Dovecot 和 Maildir

这有点奇怪,我很感激任何建议。如果这对 ServerFault 来说更好,请告诉我。

我认为这不属于 AskDifferent 或类似程序。虽然我谈论的是 iOS 设备上看到的与邮件相关的行为,但我认为这是服务器端的问题,主要有两个原因:

  • 该行为仅在服务器更新后才开始
  • 此行为仅出现在此服务器的账户中,我以相同方式设置的第二个邮件服务器在相同的 iOS 设备上没有出现此问题

问题

大约一个月前,我将我的邮件服务器从 Debian 11 更新到 12。一切似乎都顺利进行,系统日志中没有错误,可以从我常用的客户端软件发送和接收电子邮件,所以一切都很好。

在接下来的几天里,我发现我无法将电子邮件移动到 iPhone 或 iPad 上的子文件夹中。我可以选择要移动的电子邮件,然后选择要将它们移动到的文件夹,它们会从列表中消失并立即返回。这不会影响删除电子邮件(例如,将它们发送到垃圾箱),也不会影响在收件箱和垃圾邮件文件夹之间移动邮件。

我还发现,如果我浏览邮件文件夹,“顶级”文件夹没问题,但其中的任何文件夹都会导致“帐户错误”消息,引导我进入设置来检查帐户密码。

Inbox <–– Accessible
Financial <–– Accessible
Financial/Receipts <–– Inaccessible on iOS clients

当我在 mail.log 文件被删除的情况下执行上述任何操作时,tail它看起来都很正常。对于浏览文件夹:为我的用户建立了连接,然后注销并显示“未发送命令”。对于移动电子邮件:为我的用户建立了连接,出现两次,仅此而已。

不过,在我的 Mac 上,这些都不是问题,我仍然可以浏览这些文件夹,在文件夹之间移动消息,一切都没有问题。我的 IMAP 前缀在这三台设备上都相同(空白)。

在 Dovecot 上,我的 mailbox_location 设置为“maildir:~/Maildir:LAYOUT=fs”。

我希望这里有人以前遇到过类似的事情。或者可以告诉我从哪里可以获得来自我的服务器或客户端的更多信息,以帮助我找到原因。

谢谢阅读!

编辑 1 (4 月 2 日)

IMAPList命令生成了我期望看到的所有邮件文件夹,例如:

2 list "" "*"
* LIST (\HasChildren) "/" Financial
* LIST (\HasChildren) "/" Financial/Receipts
* LIST (\HasNoChildren) "/" "Financial/Receipts/eBay Receipts"
* LIST (\HasNoChildren \Sent) "/" Sent
* LIST (\HasNoChildren \Drafts) "/" Drafts
* LIST (\HasNoChildren \Trash) "/" Trash
* LIST (\HasNoChildren \Junk) "/" Junk
* LIST (\HasNoChildren) "/" INBOX
...

同样,lsub对我来说看起来并不奇怪......

3 lsub "" "*"
* LSUB (\Junk) "/" Junk
* LSUB (\Trash) "/" Trash
* LSUB (\Drafts) "/" Drafts
* LSUB (\Sent) "/" Sent
* LSUB () "/" Financial
* LSUB () "/" Financial/Receipts
* LSUB () "/" "Financial/Receipts/eBay Receipts"
...

抱歉,我忘了提及,我确实将分隔符设置为“/”,这namespace确认:

4 namespace
* NAMESPACE (("" "/")) NIL NIL

编辑 2(4 月 3 日)

我现在还发现,我同时以同样的方式更新的第二台邮件服务器在我的任何设备上都没有这个问题。今晚我将从两台服务器上转储配置文件以进行比较,希望这能解释这种行为

编辑 3(4 月 3 日)

新变化。我将开发人员的“邮件”和“同步”日志记录配置文件安装到手机上,以查看 iPhone 上的邮件中发生了哪些 IMAP 命令和响应,结果发现手机试图选择没有分隔符的文件夹(例如,15 SELECT "FinancialReceipts"而不是15 SELECT "Financial/Receipts")。但奇怪的是,其他所有命令都会使用分隔符(例如STATUS)。

我添加了原始日志配置为 Dovecot 的 10-master.conf 文件并运行doveadm reload以启用我的帐户的 IMAP 会话日志记录。

现在,第一对 .in 和 .out 文件显示使用正确分隔符发送的 SELECT 命令。我在手机上测试浏览几个文件夹,它们同步得很好,我也可以将消息移动到子文件夹中。

我删除了 rawlog 配置并再次重新加载 Dovecot,最初移动消息和浏览子文件夹正常,但大约半小时后,它又停止了。

鉴于我之前曾重启过 Dovecot 来尝试解决此问题,但并没有什么效果,我认为运行并不是doveadm reload让一切恢复正常的原因。我认为这与我启用 rawlogging 时 Dovecot 的状态变化有关...

相关内容