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: