Base de connaissances
1 000 FAQ, 500 tutoriels et vidéos explicatives. Ici, il n'y a que des solutions !
Résoudre une erreur mail ($ dans mot de passe)
Ce guide détaille les règles spécifiques à respecter lors de l’utilisation d’un mot de passe contenant le caractère “dollar” $ pour envoyer un e-mail via le SMTP Infomaniak dans un script (PowerShell, Python, etc.).
Préambule
- Si lors de l’envoi d’un e-mail via SMTP vous obtenez une erreur d’authentification (par exemple
auth failed,invalid login or password) alors que le mot de passe est correct et fonctionne dans un logiciel comme Outlook, le problème peut venir du traitement du caractère$dans votre script ou fichier de configuration. - Pour garantir une exécution fiable de vos scripts SMTP, il est fortement conseillé d’éviter tout caractère spécial ayant une signification syntaxique, en particulier
$, dans les mots de passe utilisés dans les scripts et fichiers de configuration. - Le problème peut également survenir pour se connecter aux bases de données.
Règles à respecter
Le caractère $ est un symbole spécial dans de nombreux langages et environnements. Lorsqu’il est utilisé dans un mot de passe dans un script ou un fichier de configuration, il peut être interprété à tort comme une variable ou un caractère de contrôle.
Voici des cas fréquents où il ne faut pas utiliser le caractère $ dans un mot de passe :
- PowerShell :
$est utilisé pour déclarer des variables. Un mot de passe contenant$peut provoquer des erreurs de syntaxe ou être tronqué. - Bash / Shell (Linux) :
$est également un préfixe de variable. Il peut déclencher des substitutions inattendues. - Fichiers YAML (par exemple Home Assistant, GitHub Actions, Docker Compose) :
$peut être interprété comme une variable d’environnement. - Fichiers
.env,.ini, ou autres fichiers de configuration : les outils qui lisent ces fichiers peuvent tenter d’interpréter les variables. - Commandes ou URL avec authentification : un mot de passe contenant
$peut être mal encodé ou échoué lors de l’analyse.
Pour corriger ou prévenir ce type d’erreur :
- Évitez d’utiliser le caractère
$dans les mots de passe destinés à être utilisés dans des scripts ou systèmes automatisés. - Si vous devez absolument l’utiliser, encadrez toujours la chaîne de mot de passe correctement selon le langage :
- En PowerShell : utilisez des guillemets simples
'password$Test'si possible. - En Python : assurez-vous que la chaîne est bien entre guillemets simples ou doubles, sans interprétation.
- En Bash : échappez le
$avec un antislash\$.
- En PowerShell : utilisez des guillemets simples
Lien vers cette FAQ: