Depuis de nombreuses années, je fais tourner un serveur imap dovecot sur localhost, pour stocker mes archives de courrier et y accéder avec n'importe quel client (principalement Mail.app et Thunderbird) et ne pas dépendre du format de stockage de ces applications lorsqu'elles sont mises à jour. Depuis la mise à jour vers Big Sur (MacOS 11.6.5, Mail.app 14.0), les choses fonctionnent dans Thunderbird mais plus dans Mail.app, ce qui a eu pour effet d'augmenter le nombre d'utilisateurs. affiche tous les dossiers (sauf ceux qui sont au sommet de la hiérarchie) comme vide .
Voici ma configuration dovecot :
FZs-MacBook-Pro:~ fz$ doveconf -n
# 2.0.16: /Volumes/Home/FZ/.local/etc/dovecot/dovecot.conf
# OS: Darwin 20.6.0 x86_64 hfs
default_internal_user = fz
default_login_user = fz
log_path = /Volumes/Home/FZ/.local/var/log/dovecot.log
mail_location = maildir:/Volumes/Home/FZ/Mail:LAYOUT=fs
passdb {
args = username_format=%u /Volumes/Home/FZ/.local/etc/dovecot-users
driver = passwd-file
}
service anvil {
chroot =
}
service imap-login {
chroot =
inet_listener imap {
port = 10143
}
inet_listener imaps {
port = 10993
}
}
service pop3-login {
chroot =
inet_listener pop3 {
port = 10110
}
inet_listener pop3s {
port = 10995
}
}
ssl = no
userdb {
args = username_format=%u /Volumes/Home/FZ/.local/etc/dovecot-users
driver = passwd-file
}
Voici un journal de ce qui se passe lorsque je clique sur le dossier "Topics/Computing/httpd" dans Thunderbird :
FZs-MacBook-Pro:~ fz$ cat imap.log.moz_log | grep 13bbc0000
[Parent 2577: IMAP]: D/IMAP ImapThreadMainLoop entering [this=13bbc0000]
[Parent 2577: Main Thread]: I/IMAP 13bbc0000:localhost:NA:SetupWithUrlCallback: clearing IMAP_CONNECTION_IS_OPEN
[Parent 2577: IMAP]: I/IMAP 13bbc0000:localhost:NA:ProcessCurrentURL: entering
[Parent 2577: IMAP]: I/IMAP 13bbc0000:localhost:NA:ProcessCurrentURL:imap://fz@localhost:10143/select%3E/Topics/Computing/httpd: = currentUrl
[Parent 2577: IMAP]: I/IMAP 13bbc0000:localhost:NA:CreateNewLineFromSocket: * OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN] Dovecot ready.
[Parent 2577: IMAP]: I/IMAP 13bbc0000:localhost:NA:SendData: 18 authenticate PLAIN
[Parent 2577: IMAP]: I/IMAP 13bbc0000:localhost:NA:CreateNewLineFromSocket: +
[Parent 2577: IMAP]: I/IMAP 13bbc0000:localhost:NA:SendData: Logging suppressed for this command (it probably contained authentication information)
[Parent 2577: IMAP]: I/IMAP 13bbc0000:localhost:NA:CreateNewLineFromSocket: 18 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
[Parent 2577: IMAP]: I/IMAP 13bbc0000:localhost:A:SendData: 19 namespace
[Parent 2577: IMAP]: I/IMAP 13bbc0000:localhost:A:CreateNewLineFromSocket: * NAMESPACE (("" "/")) NIL NIL
[Parent 2577: IMAP]: I/IMAP 13bbc0000:localhost:A:CreateNewLineFromSocket: 19 OK Namespace completed.
[Parent 2577: IMAP]: I/IMAP 13bbc0000:localhost:A:SendData: 20 ID ("name" "Thunderbird" "version" "91.9.0")
[Parent 2577: IMAP]: I/IMAP 13bbc0000:localhost:A:CreateNewLineFromSocket: * ID NIL
[Parent 2577: IMAP]: I/IMAP 13bbc0000:localhost:A:CreateNewLineFromSocket: 20 OK ID completed.
[Parent 2577: IMAP]: I/IMAP 13bbc0000:localhost:A:SendData: 21 ENABLE UTF8=ACCEPT
[Parent 2577: IMAP]: I/IMAP 13bbc0000:localhost:A:CreateNewLineFromSocket: 21 OK Enabled.
[Parent 2577: IMAP]: I/IMAP 13bbc0000:localhost:A:SendData: 22 select "Topics/Computing/httpd"
[Parent 2577: IMAP]: I/IMAP 13bbc0000:localhost:A:CreateNewLineFromSocket: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft $MDNSent)
[Parent 2577: IMAP]: I/IMAP 13bbc0000:localhost:A:CreateNewLineFromSocket: * OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft $MDNSent \*)] Flags permitted.
[Parent 2577: IMAP]: I/IMAP 13bbc0000:localhost:A:CreateNewLineFromSocket: * 2 EXISTS
[Parent 2577: IMAP]: I/IMAP 13bbc0000:localhost:A:CreateNewLineFromSocket: * 0 RECENT
[Parent 2577: IMAP]: I/IMAP 13bbc0000:localhost:A:CreateNewLineFromSocket: * OK [UIDVALIDITY 1325085214] UIDs valid
[Parent 2577: IMAP]: I/IMAP 13bbc0000:localhost:A:CreateNewLineFromSocket: * OK [UIDNEXT 3] Predicted next UID
[Parent 2577: IMAP]: I/IMAP 13bbc0000:localhost:A:CreateNewLineFromSocket: * OK [HIGHESTMODSEQ 1] Highest
[Parent 2577: IMAP]: I/IMAP 13bbc0000:localhost:A:CreateNewLineFromSocket: 22 OK [READ-WRITE] Select completed.
[Parent 2577: IMAP]: I/IMAP 13bbc0000:localhost:S-Topics/Computing/httpd:SendData: 23 UID fetch 1:* (FLAGS)
[Parent 2577: IMAP]: I/IMAP 13bbc0000:localhost:S-Topics/Computing/httpd:CreateNewLineFromSocket: * 1 FETCH (UID 1 FLAGS (\Seen $MDNSent))
[Parent 2577: IMAP]: I/IMAP 13bbc0000:localhost:S-Topics/Computing/httpd:CreateNewLineFromSocket: * 2 FETCH (UID 2 FLAGS (\Seen $MDNSent))
[Parent 2577: IMAP]: I/IMAP 13bbc0000:localhost:S-Topics/Computing/httpd:CreateNewLineFromSocket: 23 OK Fetch completed.
Et voici ce qui apparaît dans Connection Doctor > Show Detail lorsque j'essaie la même chose dans Mail.app :
WROTE May 19 18:20:09.706 [kCFStreamSocketSecurityLevelNone] -- host:127.0.0.1 -- port:10143 -- socket:0x600007487420 -- thread:0x6000044c3300
40.372 SELECT Topics.Computing.httpd (CONDSTORE)
READ May 19 18:20:09.707 [kCFStreamSocketSecurityLevelNone] -- host:127.0.0.1 -- port:10143 -- socket:0x600007487420 -- thread:0x6000044c3300
40.372 NO Mailbox doesn't exist: Topics.Computing.httpd
Il semble clair que le problème est que Mail.app demande les sous-dossiers en supposant le séparateur "." au lieu de "/".
Question : Comment faire pour que Mail.app et dovecot communiquent correctement ?