Aller au contenu principal

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 .env et exécutez docker compose up -d :

    CAMPBOOKS_CONNECTORS__IMAP__ENABLED=false

    Le définir explicitement à true alors 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​

  1. Dans Réglages, puis Boîtes mail, le membre choisit Ajouter une boîte mail (ou appuie sur Shift C) et saisit l'adresse.
  2. 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.
  3. 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.
  4. 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 :

  1. Une copie de la base de fournisseurs de Thunderbird, incluse dans Campbooks.
  2. Le document d'autoconfiguration du domaine lui-même.
  3. Les enregistrements SRV du domaine.
  4. 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à.

  1. 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-ID porte un code à usage unique.
  2. En 15 minutes, une synchronisation de la boîte mail trouve ce message dans sa boîte de réception.
  3. 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_SECONDS tant 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.

VariablePar défautCe qu'elle fait
CAMPBOOKS_CONNECTORS__IMAP__ENABLEDtruePropose les boîtes mail IMAP. Nécessite la clé secrète de l'instance.
CAMPBOOKS_CONNECTORS__IMAP__ALLOW_PRIVATE_HOSTSfalseAutorise les serveurs de messagerie sur des adresses privées, de bouclage et CGNAT.
CAMPBOOKS_CONNECTORS__IMAP__ALLOW_ANY_PORTfalseAutorise des ports autres que 993, 143, 465 et 587.
CAMPBOOKS_CONNECTORS__IMAP__CONNECT_TIMEOUT_SECONDS10Délai pour ouvrir une connexion à un serveur de messagerie.
CAMPBOOKS_CONNECTORS__IMAP__TIMEOUT_SECONDS30Duré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_DAYS90Jusqu'où une nouvelle boîte mail remonte, en jours.
CAMPBOOKS_CONNECTORS__IMAP__MAX_MESSAGE_BYTES52428800 (50 Mio)Les messages plus gros sont ignorés et enregistrés comme trop volumineux.
CAMPBOOKS_CONNECTORS__IMAP__RUN_BUDGET_BYTES67108864 (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_MINUTES360Minutes entre deux passages sur les indicateurs d'une boîte mail.
CAMPBOOKS_CONNECTORS__IMAP__SESSIONS_PER_HOST4Sessions IMAP ouvertes en même temps vers un serveur, tous processus confondus.
CAMPBOOKS_CONNECTORS__IMAP__PROVIDER_SESSIONS_PER_HOST200Idem, pour le serveur d'un grand fournisseur (une courte liste tenue dans le code).
CAMPBOOKS_CONNECTORS__IMAP__WORKSPACE_SESSIONS_PER_HOST2Sessions qu'un espace de travail peut tenir sur un serveur.
CAMPBOOKS_CONNECTORS__IMAP__MAX_FOLDERS200Le plus de dossiers lus par boîte mail.
CAMPBOOKS_CONNECTORS__IMAP__MAX_CREATED_FOLDERS10Le plus de dossiers Campbooks/<Stream> créés par boîte mail.
CAMPBOOKS_CONNECTORS__IMAP__SEND_PER_HOUR50Messages qu'une connexion de boîte mail envoie par heure.
CAMPBOOKS_CONNECTORS__IMAP__SEND_RECIPIENTS_PER_MESSAGE50Destinataires qu'un message peut avoir.
CAMPBOOKS_CONNECTORS__IMAP__SEND_RECIPIENTS_PER_DAY500Destinataires auxquels une connexion de boîte mail envoie par jour.
CAMPBOOKS_CONNECTORS__IMAP__SEND_WORKSPACE_PER_HOUR200Messages qu'un espace de travail envoie par heure.
CAMPBOOKS_CONNECTORS__IMAP__SEND_HOST_PER_HOUR1000Messages 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_BYTES26214400 (25 Mio)Le plus gros message envoyé. Au plus 35 Mio.
CAMPBOOKS_CONNECTORS__IMAP__SEND_TIMEOUT_SECONDS300Durée que peut prendre une soumission. Au plus 600.
CAMPBOOKS_CONNECTORS__IMAP__IDLE_ENABLEDfalsePush avec IDLE.
CAMPBOOKS_CONNECTORS__IMAP__IDLE_SESSIONS50Boîtes mail que chaque worker tient en IDLE.
CAMPBOOKS_CONNECTORS__IMAP__IDLE_SESSIONS_PER_WORKSPACE5Parmi elles, le plus pour un espace de travail.
CAMPBOOKS_CONNECTORS__IMAP__IDLE_DEBOUNCE_SECONDS30Au plus une synchronisation par boîte mail dans ce délai quand IDLE signale des changements.
CAMPBOOKS_CONNECTORS__IMAP__IDLE_REFRESH_MINUTES25Fréquence de renouvellement d'IDLE. Au plus 29.
CAMPBOOKS_CONNECTORS__IMAP__IDLE_QUIET_DAYS14Une boîte mail calme pendant ce temps revient à l'interrogation périodique.
CAMPBOOKS_CONNECTORS__IMAP__IDLE_POLL_SECONDS900L'interrogation de sécurité d'une boîte mail tenue en IDLE.
CAMPBOOKS_CONNECTORS__IMAP__WORKSPACE_IDLE_SESSIONS_PER_HOST10Sessions IDLE qu'un espace de travail peut tenir sur un serveur.

Dépannage​

Ce que voit le membreCause 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 connexionL'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 toutLa 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.