SnappyMail CardDAV : un fork qui n’efface pas vos contacts
Le pendant « contacts » de notre fork CalDAV. Même origine, même raison de forker — mais un défaut supplémentaire, celui-là destructeur : le plugin amont réactivait de force une synchronisation bidirectionnelle qu’un administrateur avait délibérément coupée.
Pourquoi forker
Le plugin CardDAV Auto de Mailbux vise une infrastructure précise, celle de son auteur. Deux hypothèses codées en dur le rendent inutilisable ailleurs :
- le nom d’hôte du fournisseur est écrit dans le code ; les contacts ne partent donc jamais vers un autre serveur ;
- l’entrée
contacts_syncdu compte est réécrite à chaque connexion. Une correction manuelle est silencieusement écrasée à la connexion suivante — le genre de comportement qui fait douter de sa propre configuration.
Cyrus sert /dav/addressbooks/user/<user>/<collection>, découvrable par la propriété standard addressbook-home-set (RFC 6352). Là encore, rien d’exotique : c’est la disposition des serveurs conformes.
L’URL est une configuration, pas du code
L’URL vient désormais de la page de réglages du plugin, sous forme de gabarit avec les substitutions {user}, {email}, {login} et {domain} :
| Réglage | Exemple |
|---|---|
| Gabarit d’URL CardDAV | https://dav.example.com/dav/addressbooks/user/{user}/Default/ |
| Domaine DAV par défaut | example.com — les adresses de ce domaine utilisent la partie locale seule ; vide = toujours l’adresse complète |
Le domaine par défaut correspond au virtdomains: userid de Cyrus : une boîte du domaine par défaut s’adresse par sa partie locale, les autres par l’adresse complète.
Et comme pour le CalDAV : aucune valeur par défaut. Sans gabarit configuré, le plugin journalise et laisse contacts_sync intact, plutôt que d’y écrire une URL qui ne peut pas fonctionner. Ne rien faire est le comportement correct quand on ne sait pas.
Une synchronisation désactivée doit rester désactivée
C’est le correctif qui justifie à lui seul le fork.
Le hook d’auto-configuration s’exécute à chaque connexion et réarmait inconditionnellement la synchronisation bidirectionnelle, y compris quand un administrateur l’avait explicitement mise à Mode: 0.
Ce n’est pas un désagrément cosmétique. Une synchronisation bidirectionnelle contre un carnet d’adresses qui semble vide supprime les contacts locaux : un carnet fraîchement créé, un index DAV corrompu côté serveur, une réponse PROPFIND non analysée — et la première synchronisation efface. Couper la synchronisation est précisément ce qu’on fait quand on soupçonne un problème ; la voir se réactiver toute seule à la connexion suivante annule la seule protection dont on disposait.
Un Mode: 0 existant est désormais préservé.
Ce n’est pas un scénario théorique : sur un serveur Cyrus dont l’index DAV d’un utilisateur avait perdu ses enregistrements, le PROPFIND du carnet d’adresses renvoyait zéro entrée alors que la boîte contenait toujours ses vCards. Une synchronisation bidirectionnelle lancée dans cet état supprime les contacts locaux, et la récupération se fait à la pelle dans la base. Pouvoir couper la synchronisation — et qu’elle reste coupée — est la protection élémentaire contre ce genre de moment.
Licence et attribution
Le fork conserve la licence du plugin d’origine (© 2025 Mailbux) et garde le README amont intact, en dessous du nôtre. Il n’existe que pour faire fonctionner le plugin contre des serveurs CardDAV conformes aux standards.
À installer avec le plugin CalDAV, qui porte la logique partagée entre les deux.
→ https://github.com/FathiBenNasr/SnappyMail-CardDAV-Plugin
Vous exploitez une messagerie Cyrus, Postfix ou Sendmail et vous voulez un webmail avec agenda et contacts, hébergé chez vous ? Découvrez nos services ou parlons-en. Et suivez-nous sur GitHub.