Mais pourquoi mon client IMAP timeout !!
Ahhhh (ceci est un soupir de béatitude), quelle belle journée ! Le soleil brille, les oiseaux chantent, la soirée fut arrosée et un poil charnelle. Ce matin personne dans les transports, une place assise vous tend les bras, wwwooowww que la journée commence bien, ça ne peut que s’améliorer !
Une fois assis(e) à votre poste et connecté(e), vous ouvrez comme à votre habitude votre client mail préféré mais là c’est la drame ! La récupération des messages mouline, c’est long, très long… quand tout à coup un splendide message d’erreur vous indique que votre client est timeout ! 😆 (oui je suis un sadique)
La cause de ce désarroi
Dans les logs Zimbra le message « Too many IMAP sessions, closing ImapSession » fait son apparition, il signifie que le nombre de session maximales par utilisateur a été atteint. Par défaut Zimbra définit la valeur maximale à 5 sessions par utilisateur, c’est peu mais souvent suffisant quand la boîte mail est personnelle mais quand c’est une boîte de type support accédée par plusieurs personnes cela devient insuffisant.
# su - zimbra $ tail -f /opt/zimbra/log/mailbox.log | grep "Too many IMAP"
Résultat :
2013-09-20 16:14:47,946 INFO [ImapSSLServer-2114] [name=support@incloudus.com;ip=82.91.186.134;ua=Thunderbird/17.0.8;] session - Too many IMAP sessions, closing ImapSession{sessionId=260203, accountId=99c6f31c-acc5-48b2-b57e-bb5ca592e2dc, lastAccessed=2013-09-20 16:14:06,902} 2013-09-20 16:14:56,049 INFO [ImapSSLServer-1907] [name=support@incloudus.com;ip=80.91.211.33;ua=Thunderbird/17.0.8;] session - Too many IMAP sessions, closing ImapSession{sessionId=260224, accountId=99c6f31c-acc5-48b2-b57e-bb5ca592e2dc, lastAccessed=2013-09-20 16:14:17,411} 2013-09-20 16:14:56,496 INFO [ImapSSLServer-2105] [name=support@incloudus.com;ua=iPhone Mail/8J2;] session - Too many IMAP sessions, closing ImapSession{sessionId=260251, accountId=99c6f31c-acc5-48b2-b57e-bb5ca592e2dc, lastAccessed=2013-09-20 16:14:31,812}
L’antidote
La solution est simple, elle consiste à augmenter le nombre de session IMAP par utilisateur. Si le nombre de session doit être augmenté cela peut vouloir dire que le nombre d’utilisateur a augmenté, il convient donc de vérifier certains paramètres liés à l’IMAP.
Dans notre cas le nombre de threads maximal est de 2000.
$ zmprov gs mx01.incloudus.com | grep ImapNumThreads
Résultat :
zimbraImapNumThreads: 2000
En listant les connections actives on peut voir que la limite est loin d’être atteinte.
$ netstat -ant | egrep "993|143" | wc -l
Résultat :
1065
Pour solutionner notre problème il suffit d’augmenter le nombre de session IMAP par utilisateur en modifiant la valeur zimbra_session_limit_imap
$ zmlocalconfig -i zimbra_session_limit_imap
Résultat :
zimbra_session_limit_imap: Maximum number of IMAP folders a single user can have open at once * Changes are in effect after server restart.
Vérification de la valeur actuelle :
$ zmlocalconfig zimbra_session_limit_imap
Résultat :
zimbra_session_limit_imap = 5
Augmentation du nombre de session IMAP par utilisateur
$ zmlocalconfig -e zimbra_session_limit_imap=15
Vérification :
$ zmlocalconfig zimbra_session_limit_imap
Résultat :
zimbra_session_limit_imap = 15
Pour que le changement soit pris en charge il est nécessaire que Zimbra soit relancé.
$ zmcontrol restart
Résultat :
Host mx01.incloudus.com Stopping vmware-ha...Done. Stopping zmconfigd...Done. Stopping stats...Done. Stopping mta...Done. Stopping spell...Done. Stopping snmp...Done. Stopping cbpolicyd...Done. Stopping archiving...Done. Stopping opendkim...Done. Stopping antivirus...Done. Stopping antispam...Done. Stopping proxy...Done. Stopping memcached...Done. Stopping mailbox...Done. Stopping convertd...Done. Stopping logger...Done. Stopping ldap...Done. Host mx01.incloudus.com Starting ldap...Done. Starting zmconfigd...Done. Starting logger...Done. Starting convertd...Done. Starting mailbox...Done. Starting antispam...Done. Starting antivirus...Done. Starting opendkim...Done. Starting snmp...Done. Starting spell...Done. Starting mta...Done. Starting stats...Done.
Une fois Zimbra relancé, on peut vérifier que tous les services soient bien démarrés.
$ zmcontrol status
Résultat :
Host mx01.incloudus.com antispam Running antivirus Running convertd Running ldap Running logger Running mailbox Running mta Running opendkim Running snmp Running spell Running stats Running zmconfigd Running
En théorie le message d’erreur a du disparaître des logs, si ce n’est pas le cas c’est que le nombre de session n’est pas encore assez élevé.
Gaëtan Trellu (goldyfruit)
Derniers articles parGaëtan Trellu (goldyfruit) (voir tous)
- Qinling, let’s the journey begin! - 23 mai 2019
- systemd-networkd, l’âge de la maturité ? - 13 mars 2018
- Hyper-V, Nova, VxLAN et Open vSwitch, enfin une belle histoire ! - 31 décembre 2017
Too many IMAP sessions, closing ImapSession par Gaëtan Trellu (goldyfruit) est sous Licence Creative Commons Internationale Attribution 4.0.