無法在具有特定伺服器的 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 上,我的郵件位置設定為「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讓事情再次正常運行的原因。我認為這與我啟用原始日誌記錄時 Dovecot 的狀態變化有關...

相關內容