Retour au blog
HermesEmailIMAPAI Agents

Utiliser Hermes Agent comme assistant email

Configurez Hermes Agent comme assistant email avec IMAP et SMTP : mots de passe d'application, allowlist, threads, pièces jointes et options managées.

Par Hermify Team||9 min de lecture
Icône d'enveloppe à côté d'un prompt de terminal, représentant Hermes Agent répondant à des emails via IMAP et SMTP

Pourquoi l'email est une interface sous-estimée pour un agent IA

Telegram, Slack et Discord captent presque toute l'attention quand on parle de déployer un agent IA sur une vraie surface. L'email est plus ancien et plus discret, mais il a une propriété que les apps de chat n'ont pas : chaque appareil sur la planète le parle déjà nativement, et chaque flux que vous avez déjà - tickets, factures, alertes, formulaires de contact, confirmations de fournisseurs - finit tôt ou tard dans une boîte de réception.

Faire tourner Hermes Agent comme assistant email transforme cette boîte en une conversation. Vous transférez un fil à votre agent, il lit tout le contexte et répond dans le même fil avec la même mémoire persistante qu'il utilise sur Telegram ou en terminal. Pas de nouveau client, pas d'API à appeler, pas d'app supplémentaire à installer pour les personnes à qui vous transférez des messages.

Ce guide couvre la configuration exacte : compte email dédié, mot de passe d'application, variables EMAIL_* attendues par Hermes, allowlist qui tient les inconnus à distance, et règles de threading qui donnent aux réponses un rendu humain. À la fin vous pouvez démarrer avec Hermify si vous préférez la version managée plutôt que d'opérer les identifiants IMAP à la main.

Ce qu'est réellement l'adaptateur email

Hermes embarque une passerelle email construite sur les modules standards de Python imaplib, smtplib et email. Pas de paquets supplémentaires, pas de SaaS tiers dans le chemin, pas de message broker devant. L'adaptateur est une boucle de polling qui :

  1. Se connecte à votre serveur IMAP en SSL.
  2. Récupère les messages UNSEEN de la boîte à un intervalle configurable.
  3. Passe le corps (et les pièces jointes autorisées) au runtime de l'agent comme message utilisateur.
  4. Renvoie la réponse par SMTP avec les en-têtes In-Reply-To et References corrects pour que le fil reste groupé.

Comme il parle IMAP et SMTP bruts, il fonctionne avec Gmail, Outlook, Yahoo, Fastmail, ProtonMail Bridge, Migadu ou n'importe quel fournisseur qui expose les ports standards. Rien de spécifique à Gmail dans l'adaptateur, ce qui veut dire que vous pouvez changer de fournisseur sans toucher à l'agent.

Schéma du courrier entrant par une boîte IMAP, traversant le runtime de Hermes, et ressortant par SMTP

Avant de commencer : un compte dédié, toujours

Ne pointez pas Hermes vers votre email personnel. Trois raisons :

  • Les identifiants IMAP sont en clair dans .env. Quiconque peut lire ce fichier peut lire tous les messages que vous avez jamais reçus sur cette adresse.
  • L'adaptateur a un accès en lecture complet à la boîte par conception. Un bug dans une skill pourrait, en théorie, marquer des messages comme lus, supprimer des brouillons ou transférer du contenu.
  • Les démarrages à froid, les retries et les décalages d'horloge peuvent produire des réponses en doublon. Vous ne voulez pas que ça arrive dans un fil avec votre CEO.

Créez une adresse neuve : [email protected], [email protected] ou n'importe quoi d'autre que vous pouvez jeter sans regret. Transférez vers cette adresse seulement les messages que vous voulez vraiment que l'agent voie, via un filtre Gmail ou une règle Outlook. Cela vous donne une frontière nette entre "ce que l'agent peut toucher" et "tout le reste".

Étape 1 : générer un mot de passe d'application Gmail (ou l'équivalent)

Si vous utilisez Gmail, le chemin IMAP/SMTP exige un mot de passe d'application, pas votre mot de passe habituel. Google a supprimé la possibilité de désactiver IMAP en janvier 2025, donc il est activé par défaut, mais "Applications moins sécurisées" ne fonctionne plus et OAuth est excessif pour un compte unique.

La procédure :

  1. Activez la validation en deux étapes sur myaccount.google.com/security. Les mots de passe d'application n'apparaissent pas avant que la 2FA ne soit active.
  2. Allez sur myaccount.google.com/apppasswords.
  3. Générez un mot de passe pour "Mail". Google renvoie une chaîne de 16 caractères en quatre blocs de quatre.
  4. Copiez-la sans les espaces. Les espaces sont uniquement visuels et cassent certains clients.

Pour Outlook/Microsoft 365, l'équivalent se trouve sur account.microsoft.com/security sous "Mots de passe d'application" (la 2FA est requise aussi). Pour Fastmail, générez un mot de passe par application dans Settings > Password & Security. Pour Postfix/Dovecot auto-hébergé, utilisez le mot de passe SMTP/IMAP que vous avez défini en provisionnant la boîte.

Étape 2 : câbler les variables email de Hermes

L'adaptateur email se configure entièrement via des variables d'environnement EMAIL_*. Le minimum viable pour Gmail :

# Identité
[email protected]
EMAIL_PASSWORD=abcd1234efgh5678   # 16 caractères, sans espaces

# IMAP (entrant)
EMAIL_IMAP_HOST=imap.gmail.com
EMAIL_IMAP_PORT=993               # SSL

# SMTP (sortant)
EMAIL_SMTP_HOST=smtp.gmail.com
EMAIL_SMTP_PORT=587               # STARTTLS

# Polling
EMAIL_POLL_INTERVAL=15            # secondes

EMAIL_POLL_INTERVAL est le rythme auquel l'adaptateur demande à IMAP les nouveaux messages. Les 15 secondes par défaut sont un bon compromis : assez bas pour donner une impression de réactivité, assez haut pour que Gmail ne se mette pas à vous brider. Si vous descendez sous 5 secondes, Google finira par renvoyer des échecs d'authentification temporaires et vous allez passer une heure à déboguer des erreurs "mot de passe incorrect" qui n'ont rien à voir avec le mot de passe.

Mettez ces variables dans .env (le fichier que Hermes charge au démarrage) et faites chmod 600 .env pour qu'il ne soit pas lisible par tout le monde. Si vous lancez Hermes dans Docker, montez le fichier en lecture seule et n'embarquez jamais les identifiants dans l'image.

Étape 3 : fermer la boîte avec une allowlist

C'est l'étape de sécurité la plus importante de toute la configuration, et celle que la plupart des tutoriels sautent.

Par défaut, un agent Hermes qui écoute l'email répond à n'importe qui. Si votre adresse est [email protected], n'importe qui qui la devine, la fuit ou la scrape peut envoyer des commandes. L'email est public par adresse. Il n'y a pas d'équivalent au filtre Telegram "l'utilisateur doit démarrer le chat d'abord".

Hermes expose trois modes :

| Mode | Comportement | |---|---| | [email protected],[email protected] | Seules ces adresses sont traitées. Le reste est jeté silencieusement. | | Non défini | Les expéditeurs inconnus reçoivent un code d'appairage à usage unique auquel ils doivent répondre pour s'enrôler. | | EMAIL_ALLOW_ALL_USERS=true | Tout expéditeur est accepté. À n'utiliser que sur une adresse privée jamais publiée. |

Utilisez l'allowlist explicite pour tout déploiement réel :

[email protected],[email protected]

Ajoutez votre adresse plus la poignée de personnes autorisées à piloter l'agent. Traitez l'allowlist comme un fichier SSH authorized_keys : petite, revue et, si possible, versionnée dans un repo privé.

Étape 4 : threading et pièces jointes

Quand Hermes répond, il pose les en-têtes In-Reply-To et References selon la RFC 2822 et préserve le Subject original préfixé d'un seul Re: (pas de chaînes Re: Re: Re:). Résultat, les réponses tombent dans le fil d'origine sur Gmail, Apple Mail, Outlook web, Spark et Fastmail. Certaines vieilles versions d'Outlook bureau ignorent les en-têtes et ouvrent un nouveau fil : c'est un bug client, pas un bug agent.

Les pièces jointes fonctionnent dans les deux sens :

  • Entrant : l'adaptateur sauve les pièces jointes dans ~/.hermes/inbox/email/<message-id>/ pour que l'agent puisse les lire avec ses outils système de fichiers. Les PDF sont extraits en texte par la skill PDF embarquée si elle est active, et les images sont envoyées aux modèles avec vision quand le fournisseur configuré le supporte.
  • Sortant : les skills qui produisent des fichiers peuvent les joindre à la réponse. L'adaptateur monte un corps MIME multipart pour que le destinataire voie à la fois le texte et le fichier.

En pratique, vous pouvez transférer un contrat de 40 pages à l'agent, demander un résumé et recevoir la réponse dans le même fil avec le résumé dans le corps. Combinez ça avec la mémoire persistante de Mémoire et skills de Hermes Agent et l'agent se souviendra du contrat trois semaines plus tard quand vous demanderez "c'était quoi ce NDA reçu en mai ?".

Photo réaliste d'une baie serveur avec une seule unité allumée, suggérant un listener de boîte mail discret et toujours en marche

Étape 5 : vérifier de bout en bout

Un smoke test de cinq minutes :

  1. Démarrez Hermes avec le nouveau .env. Regardez les logs : le premier poll IMAP doit afficher connected et une ligne idle. Si vous voyez 535 5.7.8 Username and Password not accepted, votre mot de passe d'application est faux ou contient des espaces.
  2. Envoyez un email simple depuis votre propre adresse (présente dans l'allowlist) à l'agent. Sujet : "ping". Corps : "que sais-tu faire ?".
  3. Attendez un intervalle de polling. La réponse doit arriver dans le fil, avec Re: ping comme sujet.
  4. Répondez à cette réponse avec une question de suivi. L'agent doit répondre en gardant le tour précédent en contexte, parce que la passerelle thread sur Message-ID.
  5. Envoyez un email depuis une adresse qui n'est pas dans l'allowlist. Vérifiez que rien ne revient. Vérifiez que les logs montrent un rejet d'expéditeur, pas un succès silencieux.

Si les cinq étapes passent, vous avez un assistant email fonctionnel.

Quand utiliser AgentMail plutôt que IMAP natif

L'adaptateur IMAP natif est la bonne réponse pour les comptes personnels et les petites équipes. Il y a un cas où une boîte séparée a plus de sens : construire des produits où des utilisateurs finaux écrivent au produit et un agent leur répond à grande échelle. Pour ce chemin, le serveur MCP d'AgentMail donne à l'agent une boîte structurée par utilisateur sans toucher à votre vrai domaine. Le prix à payer est un fournisseur de plus dans le chemin ; le bénéfice est la séparation par utilisateur et une API propre pour l'analytique produit.

Pour tout le reste - votre propre assistant, une boîte d'opérations, un agent de formulaires entrants, un trieur de confirmations fournisseurs - IMAP/SMTP natif est plus rapide à monter et gratuit.

Ou sauter tout ça avec un hébergement managé

Chaque étape ci-dessus est du vrai travail. Les mots de passe d'application expirent quand vous faites tourner la 2FA, les fournisseurs IMAP vous bloquent de temps en temps pour "activité suspecte" sur un nouveau login, et une boucle de polling unique sur un portable meurt au moment où le portable s'endort. La majeure partie du support sur un Hermes auto-hébergé porte exactement sur cette couche : identifiants, allowlists et uptime.

Hermify fait tourner le runtime de Hermes Agent en tant que service managé. Email, Telegram, Slack et Signal se branchent depuis un tableau de bord, les identifiants sont chiffrés au repos, la boucle de polling tourne sur une infra qui ne dort pas et l'agent persiste sa mémoire entre sessions sans que vous mainteniez quoi que ce soit. Si vous voulez la surface email sans baby-sitter l'IMAP, démarrez avec Hermify et sautez les étapes 1 à 5 en entier. Pour comparer le déploiement email à d'autres surfaces, voyez le guide de déploiement Telegram : les compromis sont très proches.

Sources

Lancez votre propre agent Hermes

Apportez votre clé API, connectez Telegram et obtenez un agent IA auto-améliorant opérationnel en 60 secondes.

Commencer