Guide pratique Hermes Agent : donner une boîte mail sécurisée à votre IA avec Agent Mail

L’e-mail n’est plus vraiment utilisé au quotidien, en dehors des codes de vérification occasionnels. Mais lorsque vous souhaitez donner à un Agent IA sa propre boîte mail pour notifications, rapports ou workflows automatisés, le coût de configuration peut être surprenant. Des outils comme Himalaya fonctionnent, mais leur syntaxe est souvent intimidante.
C’est pourquoi l’équipe QQ Mail de Tencent a créé Agent Mail, un service de messagerie conçu spécifiquement pour les Agents. Il est isolé des boîtes mail personnelles, nativement adapté aux Agents et axé sur la sécurité et l’efficacité. Associé à l’interface conversationnelle de Hermes Agent, l’e-mail devient quasi sans friction pour l’IA.
Ce guide présente le moyen le plus simple de permettre à Hermes d’envoyer et de recevoir des e-mails via Agent Mail.
1. Installer le CLI Agent Mail
La promesse d’Agent Mail est directe :
Agent Mail est un service de boîte mail dédié créé par l’équipe QQ Mail pour les Agents. Il est isolé des comptes e-mail personnels, nativement conçu pour les Agents, et vous aide à utiliser les Agents pour envoyer et recevoir des e-mails en toute sécurité et efficacement.
L’intégration est tout aussi simple. Dites simplement à Hermes :
Veuillez lire la documentation à https://agent.qq.com/doc/cli-setup.md et suivre les étapes pour installer et configurer le Agent Mail CLI pour moi.
Hermes vous guidera ensuite : télécharger agently-cli, connexion OAuth, autorisation des scopes et vérification de la boîte mail. L’ensemble du flux est conversationnel, vous n’avez pas besoin d’éditer manuellement les fichiers de configuration.
Une fois installé, vérifiez votre compte avec :
agently-cli +me
La sortie inclut votre adresse Agent Mail, vos alias et votre quota d’envoi quotidien.
2. Audit de sécurité : où Agent Mail stocke les identifiants
Avant de confier une boîte mail à l’IA, il est utile d’examiner le design de sécurité. Voici une analyse de agently-cli.
2.1 Stockage des identifiants
| Élément | Détail |
|---|---|
| Stockage chiffré des tokens | Le token OAuth est stocké dans ~/.local/share/agently-cli/bootstrap_token.enc et chiffré avec une clé aléatoire de 32 octets |
| Clé de chiffrement isolée | master.key est stocké séparément avec les permissions -rw------- (propriétaire uniquement) |
| Répertoire de données isolé | Les permissions du répertoire de données sont drwx------ (propriétaire uniquement) |
| Aucune fuite en clair | ~/.agently-cli/config.json ne stocke que app_id, pas le token |
2.2 Communication réseau
- Tout le trafic utilise HTTPS sur le port 443 ; pas de HTTP en clair.
- Les serveurs API sont des IPs d’infrastructure Tencent (157.148.28.138 / 163.177.6.12).
- La résolution DNS passe par
systemd-resolvedlocal (127.0.0.53:53). - Aucun domaine tiers n’a été trouvé dans le binaire en dehors de Tencent.
2.3 Cycle de vie du token
- Les tokens d’accès expirent après environ une heure, suivis par
granted_at→expires_at. - Rafraîchissement manuel :
agently-cli auth refresh. - Le SDK rafraîchit également automatiquement les tokens.
- Déconnexion à tout moment :
agently-cli auth logoutefface tous les identifiants locaux.
2.4 Limites de débit
| Limite | Valeur |
|---|---|
| Quota d’envoi quotidien | 50 e-mails |
| Requêtes par heure | 200 |
| Requêtes par minute | 10 |
| Pièces jointes par e-mail | 50 |
| Taille maximale d’une pièce jointe | 20 Mo |
2.5 Sécurité opérationnelle
- Confirmation en deux étapes : les actions sensibles comme envoyer, répondre, transférer et supprimer nécessitent un aperçu et un token de confirmation ; l’exécution n’a lieu qu’après validation de l’utilisateur.
- Les tokens de confirmation expirent en 5 minutes : empêche les attaques par rejeu.
- Isolation des entrées non fiables : le contenu des e-mails n’est pas exécuté comme des instructions, imposé par des règles de sécurité intégrées de haute priorité dans le skill.
2.6 Scope OAuth
Les scopes demandés sont minimaux :
alias:read— lire les alias de la boîte mailmail:read— lire les e-mailsmail:send— envoyer des e-mailsmail:delete— supprimer des e-mails
2.7 Risques
- Le binaire est propriétaire (compilé Go), donc un audit complet du code source n’est pas possible ; seul le comportement observable peut être examiné.
- Les vérifications de mise à jour contactent les serveurs Tencent pour les informations de version, enregistrées dans
update-state.json.
3. Référence complète des commandes
Après installation et connexion, voici les commandes courantes de agently-cli.
| Fonction | Commande | Description |
|---|---|---|
| Voir le profil | agently-cli +me |
Adresse e-mail, alias, quotas |
| Lister les messages | agently-cli message +list |
Prend en charge inbox / sent / trash / spam, pagination, filtres non lus / pièces jointes / plage de dates |
| Lire un message | agentially-cli message +read --id msg_xxx |
Corps complet + liste des pièces jointes |
| Rechercher des messages | agently-cli message +search --q "mot-clé" |
Recherche en texte intégral avec filtres expéditeur, destinataire, date, pièces jointes |
| Surveiller les nouveaux e-mails | agently-cli message +watch |
Long-polling, notifications de nouveaux e-mails en temps réel |
| Envoyer un e-mail | agently-cli message +send |
Plusieurs destinataires, CC / CCI, corps HTML, pièces jointes (confirmation en deux étapes) |
| Répondre | agently-cli message +reply --id msg_xxx |
Prend en charge répondre à tous, CC / CCI, pièces jointes supplémentaires |
| Transférer | agently-cli message +forward --id msg_xxx |
Conserve les pièces jointes originales, permet d’ajouter de nouvelles |
| Déplacer vers la corbeille | agently-cli message +trash --id msg_xxx |
Suppression logique ; suppression définitive après 30 jours |
| Téléverser une pièce jointe | agently-cli attachment +upload --file ./xxx |
Téléverse un fichier à utiliser comme pièce jointe |
| Télécharger une pièce jointe | agently-cli attachment +download --msg msg_xxx --att att_xxx |
Les pièces jointes normales sont enregistrées localement ; les pièces jointes surdimensionnées retournent une URL |
| Gestion de l’authentification | agently-cli auth login / logout / status / refresh |
Gestion complète du cycle de vie OAuth |
En pratique, vous n’avez pas besoin de mémoriser ces commandes. Dites à Hermes ce que vous voulez, par exemple « vérifie mon dernier e-mail » ou « envoie un rapport hebdomadaire à [email protected] », et Hermes invoquera la bonne commande et vous rapportera le résultat.
4. Cas d’usage typiques
-
Codes de vérification et notifications Enregistrez des services avec Agent Mail et laissez Hermes lire les e-mails de vérification automatiquement.
-
Rapports planifiés Combinez avec Hermes Cron pour générer des rapports quotidiens et les envoyer avec
message +send. -
Workflows déclenchés par e-mail Utilisez
message +watchpour surveiller les e-mails entrants et déclencher des actions en fonction de l’objet ou de l’expéditeur. -
Transferts de fichiers Utilisez
attachment +uploadetattachment +downloadpour déplacer des fichiers entre le stockage local et l’e-mail. Les pièces jointes volumineuses retournent une URL pour faciliter le partage.
5. Résumé
Agent Mail rend l’attribution d’une boîte mail à un Agent IA étonnamment simple. Vous n’avez plus besoin de retenir des protocoles de messagerie complexes, des paramètres IMAP/SMTP, ni de craindre de mélanger votre e-mail personnel avec l’accès de l’Agent. Avec agently-cli et l’interface conversationnelle de Hermes, vous pouvez installer, autoriser et envoyer votre premier e-mail en quelques minutes.
Le design de sécurité est solide pour un outil CLI : identifiants chiffrés, HTTPS complet, confirmation en deux étapes pour éviter les erreurs, limites de débit pour prévenir les abus et scopes OAuth minimaux. Le principal risque est que le binaire est propriétaire, donc un audit approfondi du code source n’est pas possible, mais le comportement observable ne montre aucune connexion inattendue à des tiers.
Si votre Agent doit recevoir des codes de vérification, envoyer des notifications ou gérer des workflows basés sur l’e-mail, Agent Mail mérite d’être essayé en premier.
agently-cli +me
agently-cli message +list
agently-cli message +send