Français
Boîtes mail et miroir
Tous les workflows, le webmail et l’analyseur travaillent à partir du miroir : une copie synchronisée de chaque boîte que vous connectez. Cette page explique quelles boîtes peuvent être connectées, ce que le miroir conserve et où, comment il reste à jour, que faire quand une boîte ne se synchronise plus, et comment les actions décidées par un workflow atteignent la boîte réelle.
Les boîtes se gèrent sur la page Boîtes (« Les boîtes connectées et l’état de leur miroir. »). Les comptes et les accès eux-mêmes se gèrent sur la page Connexions.
Les fournisseurs que vous pouvez connecter
| Fournisseur | Affiché | Mode de connexion | Ce qu’il faut d’abord |
|---|---|---|---|
| Google (Gmail, Google Workspace) | Gmail | OAuth : vous vous identifiez chez Google et acceptez les accès demandés | un administrateur a enregistré l’application Google de l’organisation (Google) |
| Microsoft 365 (Outlook, Exchange Online), via Microsoft Graph | Microsoft 365 | OAuth : vous vous identifiez chez Microsoft et acceptez les accès demandés | un administrateur a enregistré l’application Microsoft de l’organisation (Microsoft) |
| Toute boîte IMAP/SMTP | IMAP | adresse, serveurs et mot de passe | rien ; l’instance doit disposer d’une clé de chiffrement pour conserver le mot de passe (IMAP/SMTP) |
Un membre peut connecter plusieurs boîtes, de fournisseurs différents. Chaque boîte appartient au membre qui l’a connectée.
Les accès demandés pour le courrier. Google : lire, envoyer, modifier et gérer les libellés de Gmail (gmail.readonly, gmail.send, gmail.modify, gmail.labels). Microsoft : Mail.ReadWrite et Mail.Send. L’accès aux fichiers ou aux agendas est demandé à part, seulement quand un membre l’autorise pour un nœud ; connecter une boîte ne donne aucun accès aux fichiers.
Connecter une boîte
Google ou Microsoft
- Ouvrez Boîtes.
- Sous « Connecter une boîte », choisissez le fournisseur et cliquez « Connecter une boîte Google » ou « Connecter une boîte Microsoft ».
- Identifiez-vous chez le fournisseur et acceptez les accès demandés.
- Vous revenez avec le message « Boîte {address} connectée. » et la boîte commence à se synchroniser.
Si la page affiche « L’application OAuth n’est pas configurée », un administrateur doit d’abord enregistrer l’application de l’organisation dans Administration → Applications OAuth.
IMAP/SMTP
- Ouvrez Boîtes et cliquez « Connecter une boîte IMAP ».
- Remplissez :
| Champ | Par défaut | Remarques |
|---|---|---|
| Adresse de la boîte | — | l’adresse qui reçoit le courrier, pas forcément l’identifiant de connexion |
| Réception (IMAP) : Serveur, Port | port 993 | |
| Envoi (SMTP) : Serveur, Port | port 465 | |
| Connexion chiffrée dès l’ouverture (TLS) | cochée, pour chaque serveur | décochée, la connexion s’ouvre en clair puis bascule en STARTTLS — jamais en clair jusqu’au bout |
| Identifiant de connexion (facultatif) | l’adresse | seulement si votre hébergeur vous a donné un identifiant différent |
| Mot de passe | — | jamais réaffiché ; préférez un « mot de passe d’application » quand votre fournisseur en propose |
| Avancé → Accepter un certificat que le système ne valide pas | décochée | seulement pour un serveur interne à certificat auto-signé |
- Cliquez « Connecter la boîte ». Les identifiants sont éprouvés sur une vraie connexion IMAP puis sur une vraie connexion SMTP avant d’être enregistrés : un serveur, un port, un certificat ou un mot de passe erroné est signalé tout de suite.
Les ports usuels sont 993 (ou 143 avec STARTTLS) en IMAP, 465 (ou 587 avec STARTTLS) en SMTP. Les boîtes IMAP se connectent uniquement par mot de passe.
Reconnecter une boîte existante (même adresse), par OAuth ou par le formulaire IMAP, réactive la même boîte avec son historique : rien n’est dupliqué.
Ce que le miroir conserve, et où
Pour chaque boîte, le miroir conserve tous les messages de tous les dossiers ou libellés — réception, envoyés, brouillons, archives, spam, corbeille et vos propres dossiers —, avec leurs fils, leur état lu et suivi, et leurs pièces jointes.
| Quoi | Où |
|---|---|
| Les métadonnées des messages : expéditeur, destinataires, objet, dates, extrait, dossiers et libellés, état lu/suivi, signaux détectés (réponse automatique, liste de diffusion, no-reply, émis par Mankomail) | base de données |
| Le texte servant à la recherche (le corps aplati, jusqu’à 32 000 caractères) | base de données |
| Les fils, les métadonnées des pièces jointes, la liste des dossiers | base de données |
Le message d’origine complet (.eml), chaque pièce jointe, et le contenu des messages envoyés | stockage objet |
| Le journal de réception (le sort de chaque message reçu) | base de données |
Le stockage objet est un service compatible S3, réglé par les variables STORAGE_* (voir Configuration). Sans stockage objet configuré, l’instance garde ces fichiers en mémoire seulement et les perd au redémarrage : le webmail et les workflows se rabattent alors sur l’extrait conservé en base.
Dossiers et libellés sont enregistrés dans le même vocabulaire pour tous les fournisseurs : INBOX, SENT, DRAFT, TRASH, SPAM, ARCHIVE, plus vos propres dossiers ou libellés. Gmail a des libellés plutôt que des dossiers : un message Gmail archivé est un message qui n’a plus INBOX. Les dossiers usuels de Microsoft 365 et les dossiers spéciaux IMAP sont ramenés aux mêmes noms.
Comment fonctionne la synchronisation
Chaque boîte est tenue à jour par plusieurs mécanismes qui travaillent ensemble :
| Mécanisme | Gmail | Microsoft 365 | IMAP |
|---|---|---|---|
| Notification — le fournisseur signale un changement en quelques secondes | notifications Google Pub/Sub, quand l’instance est configurée pour | notifications de changement Microsoft Graph | IMAP IDLE sur la boîte de réception |
| Relève — l’instance demande « qu’est-ce qui a changé depuis la dernière fois ? » | toutes les POLL_INTERVAL_SECONDS (300 s par défaut) | idem | idem |
| Delta — ce qui est rapatrié | l’historique Gmail depuis la dernière position | le delta Graph par dossier | les changements par dossier |
- La notification accélère ; la relève garantit. La relève tourne pour toutes les boîtes, que les notifications fonctionnent ou non : une notification manquée est rattrapée à la relève suivante. Les abonnements aux notifications sont renouvelés automatiquement avant leur expiration.
- Les notifications demandent des réglages d’instance. Celles de Gmail demandent
GMAIL_PUBSUB_TOPICetPUSH_SHARED_SECRET; celles de Microsoft demandentPUSH_SHARED_SECRETet une adresse publique. Sans eux, les boîtes se synchronisent par relève seulement. Voir Configuration. - Aucun message n’est lu à votre place. La synchronisation ne marque jamais un message comme lu chez le fournisseur.
- Aucun doublon. Un message livré par notification et par relève n’est conservé qu’une fois.
- Cliquez « Synchroniser » sur la carte d’une boîte pour demander un delta immédiat (« Synchronisation demandée. »). S’il y en a déjà un en attente, vous voyez « Une synchronisation est déjà en attente. »
Après une interruption (une longue panne, un serveur arrêté une journée), le fournisseur peut ne plus savoir dire ce qui a changé depuis la dernière position. L’instance rattrape alors automatiquement la période écoulée depuis la dernière synchronisation réussie, jusqu’à 24 heures en arrière. Pour un trou plus long, utilisez Rattraper une période.
L’historique importé à la connexion
À la connexion d’une boîte, le miroir importe son historique en arrière-plan, le plus récent d’abord : les 7 derniers jours en premier, pour que la boîte soit utilisable tout de suite, puis les périodes antérieures par tranches de BACKFILL_CHUNK_DAYS jours (30 par défaut), jusqu’à BACKFILL_MONTHS mois avant la connexion (12 par défaut). Ce sont deux réglages d’instance ; aucun choix n’est proposé à la connexion.
La carte affiche la progression sous « Backfill » (En attente, En cours, Terminé, Échoué) et « Remonté jusqu’au » avec la date la plus ancienne atteinte. L’import reprend là où il s’était arrêté après un redémarrage, sans doublon.
L’historique ne lance jamais de workflow. Les messages importés servent au webmail, à la recherche, à l’analyseur, au contexte donné à l’IA et aux essais, mais seuls les messages arrivés après la connexion peuvent déclencher un workflow. Reconnecter une boîte ne remet pas ce point de départ à zéro.
Quels messages peuvent lancer un workflow
Un message n’atteint les déclencheurs des workflows que s’il est :
- nouveau : livré par la synchronisation après la connexion de la boîte — ni historique importé, ni rattrapage, ni message déjà présent dans le miroir ;
- hors des Envoyés, du Spam, de la Corbeille et des Brouillons ;
- dans le périmètre : non exclu par les règles de périmètre de l’organisation ou par les vôtres ;
- non arrêté par un garde-fou : un message produit par Mankomail lui-même (un envoi ou un brouillon d’un workflow ou du webmail, qui revient par la synchronisation), une réponse automatique, un message de liste de diffusion ou de newsletter, ou un message venant d’une adresse no-reply.
Les messages que vous envoyez vous-même depuis votre messagerie arrivent dans les Envoyés : ils ne sont donc jamais examinés (point 2).
Chaque message qui passe les points 1 et 2 laisse une ligne dans le journal de réception, avec son sort :
| Sort | Signification |
|---|---|
| Exclu — périmètre organisation | l’expéditeur est exclu par les règles de l’organisation |
| Exclu — périmètre membre | l’expéditeur est exclu par vos règles |
| Exclu — garde-fou | produit par Mankomail lui-même (« message envoyé par soi-même »), réponse automatique, liste de diffusion ou expéditeur no-reply |
| Reçu non matché | dans le périmètre, mais aucune condition de déclencheur ne correspond |
| Traité | au moins un workflow s’est lancé |
Le journal s’affiche sous Activité → Mails reçus, avec la règle qui a tranché (« Décidé par »). Un message exclu reste dans le miroir et visible dans le webmail : l’exclusion arrête le traitement, pas la conservation. La correspondance des conditions est décrite dans Déclencheurs et conditions.
Les statuts d’une boîte
| Statut | Signification | Que faire |
|---|---|---|
| Active | la boîte se synchronise | rien |
| En erreur | le fournisseur n’accepte plus l’accès : jeton révoqué, mot de passe changé, autorisation retirée | reconnecter la boîte (« Reconnecter cette boîte ») |
| Déconnectée | vous l’avez déconnectée, ou un administrateur a désactivé votre compte | la reconnecter pour reprendre |
Seul un accès refusé met une boîte En erreur. Alors :
- la synchronisation s’arrête et plus rien n’arrive par cette boîte ; un bandeau indique « 1 boîte est en erreur : {address} ne reçoit plus rien. » ;
- vous recevez une notification « La boîte {address} ne reçoit plus rien » ;
- dès qu’une synchronisation réussit de nouveau (après reconnexion), la boîte repasse Active et vous recevez « La boîte {address} refonctionne ».
Les autres problèmes laissent la boîte Active et s’affichent sous « Dernière erreur », avec une section « Détail technique » (type, code, message du fournisseur, opération, statut HTTP) :
| Type | Signification |
|---|---|
| erreur passagère | le fournisseur n’a pas répondu ; la synchronisation suivante réessaie toute seule |
| erreur définitive sur un message | par exemple un message supprimé entre deux synchronisations ; la synchronisation continue |
| position expirée | l’interruption a été trop longue pour que le fournisseur sache où reprendre ; rattrapez la période manquée |
Quand une boîte ne s’est pas synchronisée depuis un moment, sa carte affiche « Aucune synchronisation depuis {duration}. ». Une synchronisation freinée par les quotas du fournisseur attend et reprend sans compter comme un échec.
Rattraper une période
« Rattraper une période… » rejoue la synchronisation depuis une date que vous choisissez, pour combler un trou après une interruption.
- Ouvrez Boîtes et, sur la carte de la boîte, choisissez « Rattraper une période… ».
- Choisissez la date sous « Depuis le ». Elle peut remonter à 92 jours au plus.
- Cliquez « Rattraper ». La carte confirme « Rattrapage demandé depuis le {date}. »
Ce que garantit un rattrapage :
- aucun doublon : les messages déjà présents dans le miroir ne sont ni dupliqués ni retéléchargés ; rattraper deux fois la même semaine ne coûte que du temps ;
- aucun workflow ne se lance : un rattrapage se comporte comme l’import de l’historique — rejouer trois semaines n’envoie pas trois semaines de réponses automatiques ;
- un seul à la fois par boîte.
Une boîte doit être Active pour se synchroniser ou être rattrapée ; sinon, reconnectez-la d’abord. Par l’API : POST /api/v1/mailboxes/:id/sync (delta immédiat) et POST /api/v1/mailboxes/:id/resync avec { "since": "<date ISO 8601>" }. Les deux répondent 202 { "enqueued": true | false } ; les refus sont 409 mailbox.not_active et 400 mailbox.resync_window_invalid (date dans le futur ou à plus de 92 jours).
Déconnecter ou supprimer une boîte
Le menu d’actions de la carte d’une boîte propose deux gestes différents. Avant de confirmer, la fenêtre compte ce qui est touché : messages, exécutions en cours, et workflows publiés qui se déclenchent sur cette boîte ou envoient depuis elle.
| Déconnecter | Supprimer la boîte | |
|---|---|---|
| Synchronisation | s’arrête | s’arrête |
| Accès enregistré | retiré : le mot de passe IMAP est effacé ; un compte OAuth perd son accès au courrier (il reste pour les fichiers ou les agendas si vous les avez autorisés) | retiré, de la même façon |
| Miroir (messages, fils, pièces jointes, journal de réception) | conservé et consultable dans le webmail | effacé, avec l’historique d’envoi et les exécutions qui portaient sur cette boîte |
| Workflows qui se déclenchent sur elle | ne se déclenchent plus sur cette boîte jusqu’à la reconnexion ; ils continuent sur vos autres boîtes | ne se déclenchent plus que sur vos autres boîtes |
| Workflows qui envoient depuis elle | leurs envois échouent jusqu’à la reconnexion | mis hors ligne : choisissez une autre boîte d’expédition avant de les publier de nouveau |
| Exécutions en cours | continuent ; un envoi depuis cette boîte échoue | effacées |
| Réversible | oui : reconnecter reprend la même boîte, historique compris | non |
| La boîte chez le fournisseur | pas touchée | pas touchée |
Pour supprimer, tapez l’adresse exacte de la boîte dans « Pour confirmer, tapez l’adresse de la boîte », puis cliquez « Supprimer la boîte ». Les fichiers conservés sont effacés en arrière-plan par l’entretien horaire (« Ses contenus seront effacés du stockage dans l’heure ») ; une très grosse boîte peut demander quelques heures.
Par l’API : GET /api/v1/mailboxes/:id/removal-impact (ce qui serait touché), POST /api/v1/mailboxes/:id/disconnect, et DELETE /api/v1/mailboxes/:id avec { "confirm": "<adresse de la boîte>" } (refusé avec 400 mailbox.confirmation_mismatch si l’adresse ne correspond pas).
Comment les workflows agissent sur la boîte réelle
Quand un workflow ou le webmail envoie, crée un brouillon, classe ou marque un message, l’action ne part pas directement chez le fournisseur. Elle est d’abord enregistrée comme opération sortante, puis exécutée par un traitement en arrière-plan :
| Opération | Produite par |
|---|---|
| envoi | Envoyer en mode envoi, le composeur du webmail, les demandes d’approbation |
| brouillon | Envoyer en mode brouillon, le webmail |
| déplacement, libellé | Classer, le webmail |
| marquage (lu, suivi) | Marquer, le webmail |
| suppression (vers la corbeille) et suppression définitive | le webmail ; la suppression définitive seulement là où le fournisseur l’autorise |
Ce que cela garantit :
- Jamais deux fois. Chaque opération porte une clé unique : une étape rejouée après un échec, ou un double clic, n’envoie jamais un second mail.
- Nouvelles tentatives. Une opération qui échoue est retentée, 5 tentatives au plus, en attendant 30 secondes ou le délai que demande le fournisseur quand il limite le débit.
- Limites d’envoi. Au-delà de
SEND_MAX_PER_HOUR(100 par heure par défaut), les envois attendent leur tour ; ils ne sont pas perdus. Les messages sont limités àSEND_MAX_BYTES(25 Mo par défaut). - Le coupe-circuit d’envoi ne retient que les opérations d’envoi : brouillons, déplacements et marquages continuent. Voir Gouvernance.
- Le miroir n’est pas modifié par avance. Le nouvel état revient par la synchronisation suivante, comme pour tout changement fait chez le fournisseur. Un message produit par Mankomail porte une marque d’origine : quand il revient par la synchronisation, il ne déclenche jamais de workflow.
- Un accès refusé pendant une opération met la boîte En erreur, comme pendant une synchronisation.
Conservation
| Données | Conservées |
|---|---|
| Messages, corps et pièces jointes d’une boîte connectée ou déconnectée | tant que la boîte existe dans Mankomail : jamais supprimés selon leur âge |
| Journal de réception | 365 jours |
| Exécutions réelles terminées, leurs étapes et leurs données | 180 jours (voir Exécutions) |
| Opérations sortantes terminées et historique d’envoi | 180 jours |
| Essais | 7 jours par défaut (SIMULATED_EXECUTIONS_RETENTION_DAYS) |
Le miroir d’une boîte ne disparaît que lorsque vous supprimez la boîte. Supprimer un message dans le webmail le supprime chez le fournisseur, et le changement revient au miroir par la synchronisation.