Boîtes mail IMAP
Ce que couvre l'IMAP
Toute boîte mail qui parle IMAP et SMTP peut être connectée avec un mot de passe. Cela inclut Yahoo, AOL, iCloud, Fastmail, GMX, WEB.DE, Yandex et un domaine personnalisé chez un hébergeur. Gmail et Zoho Mail se connectent toujours par leur propre connexion (voir Boîtes mail), et Outlook ou Microsoft 365 arrive bientôt.
Campbooks lit le courrier, applique sur le serveur les changements des membres (lu, suivi, archiver, corbeille, indésirable et flux) et envoie par le serveur SMTP de la boîte mail elle-même. Une copie de chaque message envoyé va dans le dossier Envoyés de la boîte mail.
L'activer
L'IMAP est activé par défaut. Il suffit de la clé secrète de l'instance, qui scelle le mot de passe de chaque boîte mail. Voir La clé secrète de l'instance.
-
Avec la clé définie, Réglages, puis Boîtes mail, puis Ajouter une boîte mail propose l'IMAP pour toute adresse qui n'est pas Gmail, Zoho ou Outlook.
-
Sans la clé, le serveur démarre quand même. Il journalise un avertissement et ne propose pas l'IMAP.
-
Pour désactiver l'IMAP, définissez ceci dans
.envet exécutezdocker compose up -d:CAMPBOOKS_CONNECTORS__IMAP__ENABLED=falseLe définir explicitement à
truealors que la clé manque arrête le serveur, avec une erreur qui nomme la clé.
Il n'y a aucun client à enregistrer ni rien à configurer chez le fournisseur. Chaque membre crée un mot de passe d'application chez son fournisseur ; voir Connecter votre boîte aux lettres pour les étapes chez chaque fournisseur.
Comment un membre en connecte une
- Dans Réglages, puis Boîtes mail, le membre choisit Ajouter une boîte mail (ou appuie sur
ShiftC) et saisit l'adresse. - Campbooks cherche comment cette boîte mail se connecte :
- Les adresses Gmail et Zoho passent à la connexion du fournisseur lui-même, sans mot de passe.
- Les adresses Outlook et Microsoft 365 reçoivent une note disant qu'elles arrivent bientôt.
- Toute autre adresse reçoit l'étape du mot de passe d'application. Les fournisseurs connus montrent leurs propres étapes et un lien vers leur page d'aide.
- Le membre colle le mot de passe d'application et choisit Connecter. Avant de garder quoi que ce soit, Campbooks se connecte au serveur IMAP et s'authentifie auprès du serveur SMTP.
- Une section Avancé montre le nom d'utilisateur et les deux serveurs. Elle est fermée et remplie quand les serveurs ont été trouvés, et ouverte quand ils ne l'ont pas été.
Comment les serveurs sont trouvés
Campbooks cherche dans ces endroits, dans l'ordre :
- Une copie de la base de fournisseurs de Thunderbird, incluse dans Campbooks.
- Le document d'autoconfiguration du domaine lui-même.
- Les enregistrements SRV du domaine.
- Son hôte MX.
L'adresse n'est jamais envoyée à un tiers pour la rechercher.
Chiffrement uniquement
Campbooks se connecte uniquement en TLS ou STARTTLS, et vérifie le certificat par rapport au nom du serveur. Il n'y a pas d'option en clair. Un serveur qui n'offre ni l'un ni l'autre est refusé avant l'envoi du mot de passe.
Le mot de passe
Le mot de passe d'une boîte mail vaut plus qu'une autorisation OAuth. Il n'a pas de portée, et Campbooks ne peut pas le révoquer chez le fournisseur. Campbooks le traite ainsi :
- Il est gardé chiffré avec la clé secrète de l'instance et lié à sa connexion.
- Il n'est plus jamais affiché et n'est jamais journalisé.
- Il est supprimé quand la boîte mail est déconnectée.
Demandez aux membres d'utiliser des mots de passe d'application. Ils peuvent révoquer un mot de passe d'application chez leur fournisseur sans changer leur mot de passe principal.
La vérification de l'adresse
Une boîte mail dont le nom d'utilisateur diffère de l'adresse ne peut pas envoyer tant que l'adresse n'est pas vérifiée. Quand le nom d'utilisateur est l'adresse elle-même, la connexion la prouve déjà.
- Campbooks envoie un message en texte brut, de l'adresse à l'adresse, par le serveur SMTP de la boîte mail elle-même. Son
Message-IDporte un code à usage unique. - En 15 minutes, une synchronisation de la boîte mail trouve ce message dans sa boîte de réception.
- L'adresse est alors marquée comme vérifiée, et le message est supprimé par son UID. Là où le serveur ne peut pas le faire en toute sécurité, il est déplacé dans la Corbeille, ou laissé où il est.
Le membre ne saisit rien. Réglages, puis Boîtes mail, affiche « Vérification de votre adresse… », puis Vérifiée. Si le message n'est pas trouvé à temps, la boîte mail lit le courrier mais l'envoi reste désactivé, et la ligne propose Réessayer. Une boîte mail a au plus 5 vérifications par jour.
La vérification a une limite. Le membre détient le mot de passe de la boîte mail. Quiconque peut voir le code (parce qu'il gère le serveur, ou parce que le serveur classe le courrier envoyé là où il peut le lire) peut passer la vérification. Elle empêche un serveur partagé qui laisse n'importe quelle connexion envoyer comme n'importe quelle adresse de rendre l'adresse de quelqu'un d'autre utilisable pour l'envoi via Campbooks. Elle n'arrête pas l'opérateur du serveur de messagerie.
Règles réseau
Par défaut, les serveurs de messagerie ne sont joints qu'à des adresses publiques et uniquement sur les ports 993, 143, 465 et 587. Si votre serveur de messagerie est sur votre propre réseau, ou utilise d'autres ports, définissez :
CAMPBOOKS_CONNECTORS__IMAP__ALLOW_PRIVATE_HOSTS=true
CAMPBOOKS_CONNECTORS__IMAP__ALLOW_ANY_PORT=true
ALLOW_PRIVATE_HOSTS autorise les adresses privées, de bouclage (loopback) et CGNAT. Les adresses link-local et de métadonnées du cloud ne sont jamais autorisées. Laissez les deux désactivées sur une instance partagée avec des personnes que vous ne connaissez pas.
Les tentatives de connexion sont limitées à 10 par membre et 30 par espace de travail par heure. La connexion à une boîte mail est limitée à 5 connexions échouées par heure sur toute l'instance, pour que l'écran ne puisse pas servir à deviner des mots de passe.
Comment elle se synchronise
Campbooks interroge les boîtes mail IMAP selon le même calendrier que les autres :
- Dans la minute qui suit une synchronisation qui a trouvé des changements.
- En espaçant jusqu'à
CAMPBOOKS_CONNECTORS__POLL__MAX_SECONDStant que la boîte mail est calme.
Il lit tous les dossiers (jusqu'à 200) et, toutes les 6 heures, il repasse sur les indicateurs de la fenêtre de chaque boîte mail. Une nouvelle boîte mail remonte à 90 jours.
Un flux sans dossier propre reçoit un dossier Campbooks/<Stream>, jusqu'à 10 par boîte mail. Campbooks ne supprime ni ne renomme jamais un dossier, et n'en vide jamais.
Push avec IDLE (facultatif)
IDLE permet au serveur de prévenir Campbooks d'un nouveau courrier aussitôt, au lieu d'attendre la prochaine interrogation. Il est désactivé par défaut. Pour l'activer :
CAMPBOOKS_CONNECTORS__IMAP__IDLE_ENABLED=true
Tant qu'IDLE retient une boîte mail, Campbooks l'interroge quand même par sécurité toutes les CAMPBOOKS_CONNECTORS__IMAP__IDLE_POLL_SECONDS (900 par défaut). Cette valeur doit se situer entre CAMPBOOKS_CONNECTORS__POLL__MIN_SECONDS et CAMPBOOKS_CONNECTORS__POLL__MAX_SECONDS ; sinon le serveur refuse de démarrer avec IDLE activé. Si vous avez abaissé POLL__MAX_SECONDS, abaissez aussi IDLE_POLL_SECONDS.
Réglage fin
Tous ces réglages sont facultatifs. Ajoutez-les à .env et exécutez docker compose up -d.
| Variable | Par défaut | Ce qu'elle fait |
|---|---|---|
CAMPBOOKS_CONNECTORS__IMAP__ENABLED | true | Propose les boîtes mail IMAP. Nécessite la clé secrète de l'instance. |
CAMPBOOKS_CONNECTORS__IMAP__ALLOW_PRIVATE_HOSTS | false | Autorise les serveurs de messagerie sur des adresses privées, de bouclage et CGNAT. |
CAMPBOOKS_CONNECTORS__IMAP__ALLOW_ANY_PORT | false | Autorise des ports autres que 993, 143, 465 et 587. |
CAMPBOOKS_CONNECTORS__IMAP__CONNECT_TIMEOUT_SECONDS | 10 | Délai pour ouvrir une connexion à un serveur de messagerie. |
CAMPBOOKS_CONNECTORS__IMAP__TIMEOUT_SECONDS | 30 | Durée totale que peut prendre une vérification de connexion ; pendant la lecture d'une boîte mail, durée pendant laquelle une commande peut attendre. |
CAMPBOOKS_CONNECTORS__IMAP__BACKFILL_DAYS | 90 | Jusqu'où une nouvelle boîte mail remonte, en jours. |
CAMPBOOKS_CONNECTORS__IMAP__MAX_MESSAGE_BYTES | 52428800 (50 Mio) | Les messages plus gros sont ignorés et enregistrés comme trop volumineux. |
CAMPBOOKS_CONNECTORS__IMAP__RUN_BUDGET_BYTES | 67108864 (64 Mio) | Une exécution de synchronisation ne démarre aucun téléchargement après ce nombre d'octets et continue à l'exécution suivante. |
CAMPBOOKS_CONNECTORS__IMAP__SWEEP_MINUTES | 360 | Minutes entre deux passages sur les indicateurs d'une boîte mail. |
CAMPBOOKS_CONNECTORS__IMAP__SESSIONS_PER_HOST | 4 | Sessions IMAP ouvertes en même temps vers un serveur, tous processus confondus. |
CAMPBOOKS_CONNECTORS__IMAP__PROVIDER_SESSIONS_PER_HOST | 200 | Idem, pour le serveur d'un grand fournisseur (une courte liste tenue dans le code). |
CAMPBOOKS_CONNECTORS__IMAP__WORKSPACE_SESSIONS_PER_HOST | 2 | Sessions qu'un espace de travail peut tenir sur un serveur. |
CAMPBOOKS_CONNECTORS__IMAP__MAX_FOLDERS | 200 | Le plus de dossiers lus par boîte mail. |
CAMPBOOKS_CONNECTORS__IMAP__MAX_CREATED_FOLDERS | 10 | Le plus de dossiers Campbooks/<Stream> créés par boîte mail. |
CAMPBOOKS_CONNECTORS__IMAP__SEND_PER_HOUR | 50 | Messages qu'une connexion de boîte mail envoie par heure. |
CAMPBOOKS_CONNECTORS__IMAP__SEND_RECIPIENTS_PER_MESSAGE | 50 | Destinataires qu'un message peut avoir. |
CAMPBOOKS_CONNECTORS__IMAP__SEND_RECIPIENTS_PER_DAY | 500 | Destinataires auxquels une connexion de boîte mail envoie par jour. |
CAMPBOOKS_CONNECTORS__IMAP__SEND_WORKSPACE_PER_HOUR | 200 | Messages qu'un espace de travail envoie par heure. |
CAMPBOOKS_CONNECTORS__IMAP__SEND_HOST_PER_HOUR | 1000 | Messages envoyés par heure via un serveur SMTP, par tous les espaces de travail. Les grands fournisseurs n'ont pas de plafond ; ailleurs, un espace de travail prend au plus la moitié. |
CAMPBOOKS_CONNECTORS__IMAP__SEND_MAX_MESSAGE_BYTES | 26214400 (25 Mio) | Le plus gros message envoyé. Au plus 35 Mio. |
CAMPBOOKS_CONNECTORS__IMAP__SEND_TIMEOUT_SECONDS | 300 | Durée que peut prendre une soumission. Au plus 600. |
CAMPBOOKS_CONNECTORS__IMAP__IDLE_ENABLED | false | Push avec IDLE. |
CAMPBOOKS_CONNECTORS__IMAP__IDLE_SESSIONS | 50 | Boîtes mail que chaque worker tient en IDLE. |
CAMPBOOKS_CONNECTORS__IMAP__IDLE_SESSIONS_PER_WORKSPACE | 5 | Parmi elles, le plus pour un espace de travail. |
CAMPBOOKS_CONNECTORS__IMAP__IDLE_DEBOUNCE_SECONDS | 30 | Au plus une synchronisation par boîte mail dans ce délai quand IDLE signale des changements. |
CAMPBOOKS_CONNECTORS__IMAP__IDLE_REFRESH_MINUTES | 25 | Fréquence de renouvellement d'IDLE. Au plus 29. |
CAMPBOOKS_CONNECTORS__IMAP__IDLE_QUIET_DAYS | 14 | Une boîte mail calme pendant ce temps revient à l'interrogation périodique. |
CAMPBOOKS_CONNECTORS__IMAP__IDLE_POLL_SECONDS | 900 | L'interrogation de sécurité d'une boîte mail tenue en IDLE. |
CAMPBOOKS_CONNECTORS__IMAP__WORKSPACE_IDLE_SESSIONS_PER_HOST | 10 | Sessions IDLE qu'un espace de travail peut tenir sur un serveur. |
Dépannage
| Ce que voit le membre | Cause et solution |
|---|---|
| « Le serveur de messagerie a refusé la connexion » | Mauvais mot de passe, ou le fournisseur exige un mot de passe d'application et le mot de passe habituel a été utilisé. Créez un mot de passe d'application et collez-le. Chez Yandex, un nouveau mot de passe d'application peut mettre quelques heures à fonctionner. |
| « Campbooks n'a pas trouvé les serveurs de cette boîte mail » | Le domaine ne publie aucun réglage. Saisissez les serveurs dans Avancé : les pages d'aide de l'hébergeur les indiquent. |
| « Campbooks n'a pas pu joindre le serveur de messagerie » | Le nom ou le port est erroné, ou un pare-feu bloque le serveur. Vérifiez les serveurs dans Avancé. |
| « Campbooks ne peut pas joindre ce serveur : il est sur un réseau privé… » | Le serveur est sur une adresse privée, ou utilise un port autre que 993, 143, 465 ou 587. Sur votre propre instance, définissez ALLOW_PRIVATE_HOSTS ou ALLOW_ANY_PORT (voir Règles réseau). |
| « Le certificat du serveur de messagerie n'est pas valide pour son nom » | Le nom du serveur ne correspond pas à son certificat. Utilisez le nom du certificat, souvent le nom du serveur de l'hébergeur plutôt que mail. suivi de votre domaine. |
| « Ce serveur ne propose pas de connexion chiffrée » | Utilisez le port 993 pour l'IMAP et 465 pour le SMTP, avec TLS. |
| « Trop de connexions échouées à cette boîte mail » | Cinq connexions échouées en une heure. Attendez une heure. |
| « Nous n'avons pas pu vérifier cette adresse : l'envoi reste désactivé » | Le message de vérification n'est pas arrivé dans la boîte de réception en 15 minutes. Il a pu atterrir dans les indésirables. Choisissez Réessayer, qui en envoie un nouveau ; si cela échoue encore, vérifiez le filtre antispam de la boîte mail. |
| GMX ou WEB.DE refuse la connexion | L'accès IMAP est désactivé dans les réglages de la boîte mail. Activez-le (POP3 et IMAP), puis reconnectez-vous. Les deux fournisseurs le désactivent de nouveau après de longues périodes sans utilisation. |
| L'IMAP n'est pas proposé du tout | La clé secrète de l'instance n'est pas définie, ou CAMPBOOKS_CONNECTORS__IMAP__ENABLED=false. Consultez l'avertissement dans docker compose logs server. |