Hermes — Envoi d'e-mails avec Himalaya¶
Résumé¶
Procédure complète pour configurer l'envoi d'e-mails via Himalaya (CLI email Rust) depuis Hermes Agent. Applicable soit à l'intérieur du conteneur Docker (pour que Hermes lui-même envoie des mails via skills ou crons), soit sur l'hôte pour des tests manuels.
Contenu structuré¶
Où exécuter la procédure ?¶
- Dans le conteneur → Hermes peut envoyer des e-mails depuis ses skills/crons
- Sur l'hôte → tests manuels uniquement
# Ouvrir un shell dans le conteneur hermes-telegram
docker exec -it --user hermes hermes-telegram bash
1. Installer Rust/Cargo¶
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source "$HOME/.cargo/env"
echo 'export PATH="$HOME/.cargo/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
# Vérifier : rustc --version && cargo --version
2. Installer Himalaya¶
cargo install himalaya --locked
# Vérifier : himalaya --version
3. Créer le fichier de configuration¶
mkdir -p ~/.config/himalaya
Contenu de ~/.config/himalaya/config.toml :
[accounts.default]
email = "VOTRE_EMAIL@exemple.com"
display-name = "Votre Nom"
default = true
backend.type = "smtp"
backend.host = "SMTP_HOST" # ex: smtp.gmail.com
backend.port = 587 # 465 pour SSL, 587 pour STARTTLS
backend.encryption.type = "start-tls"
backend.login = "VOTRE_EMAIL@exemple.com"
backend.auth.type = "password"
backend.auth.cmd = "cat $HOME/.himalaya_smtp_pass"
Exemple Gmail :
backend.host = "smtp.gmail.com"
backend.port = 587
backend.encryption.type = "start-tls"
backend.login = "votre.compte@gmail.com"
backend.auth.cmd = "cat $HOME/.himalaya_smtp_pass"
4. Créer le fichier de mot de passe (protégé)¶
echo "VOTRE_MOT_DE_PASSE_OU_TOKEN" > ~/.himalaya_smtp_pass
chmod 600 ~/.himalaya_smtp_pass
5. Tester l'envoi¶
cat << EOF | himalaya template send
From: votre.email@exemple.com
mailto: destinataire@exemple.com
Subject: Test depuis Hermes Agent
Bonjour, ceci est un test via Himalaya.
Cordialement,
EOF
6. Fonction shell réutilisable¶
envoyer_mail() {
local destinataires="$1"
local sujet="$2"
local corps="$3"
cat << EOF | himalaya template send
From: $(himalaya account list --raw | jq -r '.default.email')
mailto: $destinataires
Subject: $sujet
$corps
EOF
}
# Usage :
envoyer_mail "dest@ex.com" "Sujet" "Corps du message"
Récapitulatif copy-paste complet¶
# Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source "$HOME/.cargo/env"
echo 'export PATH="$HOME/.cargo/bin:$PATH"' >> ~/.bashrc && source ~/.bashrc
# Himalaya
cargo install himalaya --locked
# Config
mkdir -p ~/.config/himalaya
cat > ~/.config/himalaya/config.toml <<'EOF'
[accounts.default]
email = "VOTRE_EMAIL@exemple.com"
display-name = "Votre Nom"
default = true
backend.type = "smtp"
backend.host = "SMTP_HOST"
backend.port = 587
backend.encryption.type = "start-tls"
backend.login = "VOTRE_EMAIL@exemple.com"
backend.auth.type = "password"
backend.auth.cmd = "cat $HOME/.himalaya_smtp_pass"
EOF
# Mot de passe
echo "VOTRE_MOT_DE_PASSE_OU_TOKEN" > ~/.himalaya_smtp_pass
chmod 600 ~/.himalaya_smtp_pass
Points clés¶
- Installer dans le conteneur si Hermes doit envoyer des mails (skills, crons)
- Privilégier le fichier protégé
chmod 600— jamais le mot de passe en clair - Les fichiers
~/.config/himalaya/et~/.himalaya_smtp_passsont perdus si le conteneur est supprimé → monter un volume pour les persister - Himalaya gère nativement l'UTF-8 et les accents
Dépannage¶
| Erreur | Solution |
|---|---|
| Authentication failed | Vérifier mot de passe/token, port et type de chiffrement |
| Connection refused | Vérifier l'accès Internet du conteneur (pare-feu, DNS) |
| Command not found | Vérifier que ~/.cargo/bin est dans le PATH |
Diagnostic détaillé : RUST_LOG=debug himalaya template send …
Liens connexes¶
- shared/references/vps-hermes-commandes — commandes VPS Hermes (SSH, Docker, gateway Telegram)
- shared/references/hermes-commandes — commandes Hermes local (WSL)