特定のサーバーで iOS クライアントのメール サブフォルダーを参照できない。Dovecot と Maildir

特定のサーバーで iOS クライアントのメール サブフォルダーを参照できない。Dovecot と Maildir

これは少し変わった方法なので、アドバイスをいただければ幸いです。ServerFault ではこの方法のほうが適している場合は、お知らせください。

これは AskDifferent や類似のフォーラムにはふさわしくないと思います。iOS デバイスでメールに関して見られる動作について話しているのですが、主に次の 2 つの理由から、サーバー側の問題であると考えています。

  • この動作はサーバーの更新後にのみ発生しました
  • この動作はこのサーバーのアカウントでのみ発生し、同じ方法でセットアップした2番目のメールサーバーでは、同じiOSデバイス上でこの問題は発生しません。

問題

約 1 か月前、メール サーバーを Debian 11 から 12 に更新しました。すべて問題なく進んだようで、syslog にエラーはなく、いつものクライアント ソフトウェアからメールを送受信できるので、すべて順調です。

その後数日間、iPhone または iPad でメールをサブフォルダに移動できないことがわかりました。移動したいメールを選択し、移動先のフォルダを選択すると、メールはリストから消えてすぐに表示されます。これは、メールの削除 (つまり、ゴミ箱への送信) や、受信トレイと迷惑メール フォルダ間のメールの移動には影響しません。

また、メール フォルダーを参照すると、「最上位」のフォルダーは問題ありませんが、その中のフォルダーでは「アカウント エラー」メッセージが表示され、アカウント パスワードを確認するための設定に誘導されることもわかりました。

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

mail.log ファイルを 'd した状態でこれらのアクションを実行すると、tail正常に見えます。フォルダーを参照する場合: ユーザーの接続が確立され、その後「コマンドが送信されていません」と表示されてログアウトします。電子メールを移動する場合: ユーザーの接続が 2 回確立され、それ以外は何も起こりません。

ただし、私の Mac では、これらの問題は発生しません。これらのフォルダーを参照したり、メッセージを移動したり、すべて問題なく実行できます。私の IMAP プレフィックスは、3 つのデバイスすべてで同じです (空白)。

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日):

また、同じタイミングで同じ方法で更新した2台目のメールサーバーでは、どのデバイスでもこの問題は発生していないことがわかりました。今夜、両方のサーバーから構成ファイルをダンプして比較し、動作を説明できると期待しています。

編集3(4月3日):

新しい展開。iPhone のメールでどのような IMAP コマンドと応答が行われているのかを確認するために、開発者向けの「メール」と「同期」のログ プロファイルを携帯電話にインストールしたところ、携帯電話が区切り文字なしでフォルダーを選択しようとしていることがわかりました (つまり、 では15 SELECT "FinancialReceipts"なく など15 SELECT "Financial/Receipts")。しかし、奇妙なことに、他のすべてのコマンドでは区切り文字が使用されていました ( などSTATUS)。

私は追加しました生ログconfig を Dovecot の 10-master.conf ファイルに追加し、実行してdoveadm reload自分のアカウントの IMAP セッションのログ記録を有効にしました。

最初の .in ファイルと .out ファイルのペアでは、正しい区切り文字を使用して SELECT コマンドが送信されていることが示されました。電話でいくつかのフォルダーを参照してテストしたところ、正常に同期され、メッセージをサブフォルダーに移動することもできました。

rawlog 設定を削除し、Dovecot を再度リロードしたところ、最初はメッセージの移動とサブフォルダーの参照が機能していましたが、約 30 分後に再び停止してしまいました。

以前、この問題を解決するために Dovecot を再起動しましたが、何も変わりませんでしたdoveadm reload。再起動によって問題が解決したとは思いません。rawlogging を有効にしたときに Dovecot の状態が変わったことが原因だと思います...

関連情報