Impossible d’envoyer des e‑mails Hotmail avec NeoMutt + msmtp ? Voici une analyse concrète de l’erreur SMTP 535 5.7.139 “Authentication unsuccessful, account locked”, ses causes probables et une solution durable basée sur l’alias Outlook, avec des conseils pour passer sereinement à OAuth2.
Vue d’ensemble
Un utilisateur constate soudainement l’échec de l’envoi SMTP depuis NeoMutt via msmtp avec son adresse Hotmail/Outlook.com. Le serveur répond :
535 5.7.139 Authentication unsuccessful, account locked
Le même compte fonctionne dans Outlook Web et d’autres clients graphiques, tandis qu’un second compte Hotmail, configuré à l’identique dans NeoMutt, continue d’émettre correctement. Ce contraste indique un problème ciblé sur l’identité SMTP plutôt qu’un souci global de configuration.
Ce qui a été tenté (et avec quels résultats)
Au fil des essais, plusieurs pistes ont été explorées. Le tableau ci‑dessous récapitule l’efficacité de chaque action.
Étape | Action proposée | Résultat / utilité |
---|---|---|
1 | Supprimer puis ré‑ajouter le compte dans NeoMutt / msmtp | Pas concluant pour ce compte particulier. |
2 | Réinstaller le client | Aucun changement. |
3 | Tester sans validation en deux étapes | Échec identique. |
4 | Générer un nouveau mot de passe d’application | Fonctionne un temps, puis l’échec réapparaît. |
5 | Créer un alias Outlook.com et l’utiliser comme identifiant SMTP | ✅ Solution durable : l’envoi redevient possible. |
6 | Vérifier la compatibilité OAuth2 ou contacter les développeurs NeoMutt/msmtp | Recommandé pour anticiper la fin de l’authentification « Basic ». |
Pourquoi cette erreur se produit‑elle ?
- Blocage sélectif de l’identité SMTP : le back‑end Outlook.com peut verrouiller une adresse principale après une séquence de tentatives jugées risquées (IP inhabituelle, rafale d’essais, agent non reconnu). Le message “account locked” n’empêche pas forcément l’accès via l’interface Web, mais bloque l’authentification SMTP « Basic » pour cet identifiant précis.
- Authentification « Basic » sur la sellette : l’accès SMTP par simple couple utilisateur/mot de passe est progressivement restreint et remplacé par des mécanismes modernes, en particulier OAuth2 (XOAUTH2). Selon les vagues de déploiement, certains comptes peuvent être traités plus strictement que d’autres.
- Alias = nouvelle identité d’authentification : créer un alias Outlook.com et l’utiliser comme login SMTP contourne le verrou spécifique de l’adresse principale. Pour le moteur d’évaluation du risque, l’alias est un objet “neuf”, non pénalisé par l’historique d’échecs.
Ajoutez à cela que certains caches d’authentification (ou des mots de passe d’application périmés) peuvent s’emmêler avec des politiques anti‑abus ; le résultat observable est un échec 535 répété côté msmtp pour l’identité impactée, alors que d’autres clients ou comptes restent fonctionnels.
Solution recommandée : utiliser un alias Outlook.com comme identifiant SMTP
La mesure la plus fiable observée consiste à ajouter un alias à votre compte Microsoft, puis à renseigner cet alias comme user
dans la configuration msmtp. L’adresse d’expédition (from
) peut rester l’adresse principale si vous le souhaitez.
<h3>Avantages</h3>
<ul>
<li>Contourne immédiatement le verrou “account locked” de l’adresse principale.</li>
<li>Permet de <strong>reprendre l’envoi</strong> sans modifier radicalement votre pile logicielle.</li>
<li>Compatible avec une future migration vers OAuth2 (l’alias fonctionne également comme principal pour XOAUTH2).</li>
</ul>
<h3>Limites</h3>
<ul>
<li>Nécessite la gestion d’une identité supplémentaire (alias).</li>
<li>Si vous persistez en « Basic Auth », vous restez exposé aux futures restrictions ; la trajectoire de fond reste <strong>OAuth2</strong>.</li>
</ul>
<h3>Procédure condensée</h3>
<ol>
<li>Créez un alias dans les paramètres de votre compte Microsoft (section <em>Alias/adresses</em>).</li>
<li>Dans msmtp, référencez <strong>l’alias comme <code>user</code></strong> (voir modèle ci‑dessous) et laissez éventuellement <code>from</code> sur votre adresse principale dans NeoMutt.</li>
<li>Testez un envoi de message court en ligne de commande (<code>msmtp -v -a hotmail-alias</code>).</li>
<li>Surveillez les journaux pendant quelques jours pour confirmer la stabilité.</li>
</ol>
Configuration msmtp : modèle prêt à l’emploi
Voici un compte msmtp paramétré avec un alias Outlook.com et stockage du secret chiffré via GnuPG. Adaptez les chemins à votre environnement.
account hotmail-alias
host smtp.office365.com
port 587
auth on
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
user alias@outlook.com
passwordeval "gpg --quiet --for-your-eyes-only --decrypt ~/.mail/alias.gpg"
account default : hotmail-alias
logfile ~/.cache/msmtp.log
<h3>Bonnes pratiques de sécurité</h3>
<ul>
<li><strong>Activez la validation en deux étapes (2FA)</strong> sur votre compte Microsoft.</li>
<li>Utilisez un <strong>mot de passe d’application</strong> dédié à msmtp si disponible, et chiffrez‑le dans un fichier GPG (ex. : <code>echo "motdepasse" | gpg -e -r <VotreID> -o ~/.mail/alias.gpg</code>).</li>
<li>Placez <code>~/.mail</code> en permissions strictes (<code>chmod 700 ~/.mail</code>).</li>
</ul>
<h3>Intégration NeoMutt</h3>
<p>Dans NeoMutt, assurez‑vous d’utiliser msmtp comme <code>sendmail</code>, définissez l’expéditeur et, si nécessaire, un <em>envelope-from</em> propre.</p>
# ~/.neomuttrc (extrait)
```
set sendmail="/usr/bin/msmtp"
set from="[votre.adresse.principale@outlook.com](mailto:votre.adresse.principale@outlook.com)"
set realname="Prénom Nom"
set envelope_from=yes
# Si vous avez plusieurs comptes msmtp, vous pouvez sélectionner le profil via des hooks:
send-hook '~f .*@outlook.com' 'set sendmail="/usr/bin/msmtp -a hotmail-alias"' </code></pre>
```
<h3>Test d’envoi et de diagnostic</h3>
<pre><code># Informations serveur (capabilités annoncées)
```
msmtp --serverinfo --host=smtp.office365.com --port=587 --tls --tls-starttls
# Envoi de test (mode verbeux)
echo -e "Subject: Test SMTP\n\nCorps de test" | msmtp -v -a hotmail-alias [destinataire@example.com](mailto:destinataire@example.com)
# Lecture rapide des journaux msmtp
tail -f ~/.cache/msmtp.log </code></pre>
</section>
<section>
<h2>Alternative provisoire : mot de passe d’application</h2>
<p>Pour certains comptes personnels, Microsoft propose des <em>mots de passe d’application</em> (APPPW) lorsque la 2FA est activée. En pratique :</p>
<ol>
<li>Activez la 2FA.</li>
<li>Générez un mot de passe d’application dédié à msmtp.</li>
<li>Remplacez la commande <code>passwordeval</code> ou son contenu chiffré par ce mot de passe.</li>
</ol>
<p>Cette approche peut <strong>fonctionner temporairement</strong>, mais plusieurs retours montrent une rechute ultérieure de l’erreur 535. Elle est donc à considérer comme <em>mesure transitoire</em> en attendant la bascule vers OAuth2.</p>
</section>
<section>
<h2>Cap sur l’avenir : passer msmtp/NeoMutt à OAuth2 (XOAUTH2)</h2>
<p>La voie pérenne consiste à <strong>abandonner “Basic Auth”</strong> et adopter <strong>XOAUTH2</strong>. msmtp sait parler XOAUTH2 en s’appuyant sur un <em>helper</em> qui fournit le jeton d’accès. Plusieurs outils existent ; l’idée reste identique : obtenir un <em>refresh token</em> une fois, puis fournir régulièrement un <em>access token</em> au client SMTP.</p>
<h3>Principe de configuration</h3>
<pre><code>account hotmail-xoauth2
host smtp.office365.com
port 587
tls on
tls_starttls on
auth xoauth2
user alias@outlook.com
# Le helper retourne la chaîne "bearer <JETON>" pour msmtp
passwordeval "/usr/local/bin/msmtp-oauth2-helper --user=alias@outlook.com \
--client-id=<ID_CLIENT> --tenant=<TENANT_ID> --refresh-token=<REFRESH>"
</code></pre>
<p><strong>Points d’attention</strong> :</p>
<ul>
<li>Conservez le <em>refresh token</em> de manière chiffrée (GPG, pass, ou coffre système).</li>
<li>Prévoyez un <em>fallback</em> propre : un profil msmtp “alias en Basic” peut dépanner le temps de finaliser OAuth2.</li>
<li>Vérifiez côté NeoMutt que la sélection du profil msmtp “XOAUTH2” se fait bien par <code>send-hook</code> ou macro selon le contexte.</li>
</ul>
</section>
<section>
<h2>Déverrouiller un compte marqué « account locked »</h2>
<p>Si le message persiste malgré l’alias, agissez sur la sécurité du compte :</p>
<ol>
<li>Connectez‑vous au <em>portail de sécurité</em> de votre compte Microsoft.</li>
<li>Validez votre identité (code SMS/Authenticator).</li>
<li>Consultez <strong>Activité récente</strong> : marquez comme “c’était moi” les connexions légitimes ou sécurisez celles suspectes.</li>
<li>Changez le mot de passe principal si nécessaire.</li>
<li>Révoquez d’éventuels <em>mots de passe d’application</em> compromis et régénérez‑les.</li>
<li>Patientez quelques minutes, puis retestez <code>msmtp -v</code>.</li>
</ol>
</section>
<section>
<h2>Checklist de diagnostic (rapide & exhaustive)</h2>
<table>
<thead>
<tr>
<th>Symptômes / Indices</th>
<th>Vérifications</th>
<th>Commande / Action</th>
</tr>
</thead>
<tbody>
<tr>
<td>Erreur 535 5.7.139 “account locked” (msmtp)</td>
<td>Identité SMTP spécifique bloquée</td>
<td>Tester avec un <strong>alias</strong> comme <code>user</code></td>
</tr>
<tr>
<td>Fonctionne avec un 2ᵉ compte</td>
<td>Configuration locale OK</td>
<td>Comparer uniquement le champ <code>user</code></td>
</tr>
<tr>
<td>App PW marche puis échoue</td>
<td>Restriction progressive</td>
<td>Planifier <strong>OAuth2</strong></td>
</tr>
<tr>
<td>Handshake TLS parfait mais auth échoue</td>
<td>Politiques côté serveur</td>
<td>Revue sécurité du compte + alias</td>
</tr>
<tr>
<td>Délai/timeout réseau</td>
<td>DNS/pare‑feu/IPv6</td>
<td><code>msmtp --serverinfo</code>, <code>dig</code>, test IPv4‑only</td>
</tr>
</tbody>
</table>
</section>
<section>
<h2>FAQ ciblée</h2>
<h3>Puis‑je envoyer avec l’adresse principale tout en m’authentifiant avec l’alias ?</h3>
<p>Oui. L’<em>identifiant</em> (<code>user</code>) utilisé pour l’authentification peut être l’alias, tandis que le champ <code>From:</code> visible par les destinataires reste votre adresse principale. Assurez‑vous simplement que les deux appartiennent au même compte.</p>
```
<h3>Le serveur SMTP à utiliser ?</h3>
<p><code>smtp.office365.com</code>, port <code>587</code> avec <strong>STARTTLS</strong> est le choix recommandé. Évitez SSL implicite sur 465 si votre distribution ou votre politique réseau ne l’exige pas expressément.</p>
<h3>Quels mécanismes SASL sont concernés ?</h3>
<p>En “Basic”, <em>PLAIN/LOGIN</em> sont proposés. En moderne, utilisez <strong>XOAUTH2</strong>. Vérifiez les capacités publiées via <code>msmtp --serverinfo</code>.</p>
<h3>Dois‑je garder « Basic Auth » ?</h3>
<p>Non : considérez‑le comme une <em>compatibilité de transition</em>. Mettez en place OAuth2 dès que vos outils le permettent.</p>
```
</section>
<section>
<h2>Procédure pas‑à‑pas : de l’erreur 535 à un envoi stable</h2>
<ol>
<li><strong>Geler l’existant</strong> : sauvegardez vos fichiers (<code>~/.msmtprc</code>, <code>~/.neomuttrc</code>).</li>
<li><strong>Nettoyer les essais</strong> : révoquez les mots de passe d’application obsolètes, videz les caches locaux si utilisés.</li>
<li><strong>Créer un alias</strong> : ajoutez <code>alias@outlook.com</code> à votre compte.</li>
<li><strong>Configurer msmtp</strong> avec l’alias comme <code>user</code> (modèle fourni plus haut).</li>
<li><strong>Chiffrer le secret</strong> : stockez le mot de passe (ou le refresh token) sous GPG.</li>
<li><strong>Tester en verbeux</strong> : <code>msmtp -v -a hotmail-alias</code>.</li>
<li><strong>Stabiliser</strong> : surveillez <code>~/.cache/msmtp.log</code> quelques jours.</li>
<li><strong>Préparer OAuth2</strong> : mettez en place le helper et basculez vers <code>auth xoauth2</code> lorsque prêt.</li>
</ol>
</section>
<section>
<h2>Modèles de configuration complémentaires</h2>
<h3>Compte msmtp “Basic” sécurisé par GPG</h3>
<pre><code>account hotmail-basic
host smtp.office365.com
port 587
tls on
tls_starttls on
auth on
user alias@outlook.com
passwordeval "gpg --decrypt ~/.mail/hotmail-basic.gpg"
Compte msmtp en XOAUTH2 (helper externe)
account hotmail-oauth2host smtp.office365.com
port 587
tls on
tls_starttls on
auth xoauth2
user [alias@outlook.com](mailto:alias@outlook.com)
passwordeval "/usr/local/bin/msmtp-oauth2-helper --config ~/.mail/oauth2-hotmail.json" </code></pre>
Hooks NeoMutt pour alterner Basic → OAuth2
# Basculer automatiquement vers OAuth2 pour Outlook.com
```
send-hook '~f .*@outlook.com' 'set sendmail="/usr/bin/msmtp -a hotmail-oauth2"'
macro index 'set sendmail="/usr/bin/msmtp -a hotmail-basic"' "Fallback Basic"
Pièges courants & conseils Mot de passe d’application recyclé : créez‑en un par client, ne partagez pas entre plusieurs machines. Fichier msmtp mal protégé : chmod 600 ~/.msmtprc, répertoires en 700. Fuseau/DNS : des résolutions DNS erratiques ou des bascules IPv6/IPv4 peuvent provoquer des “auth timeouts” qui miment un 535 ; tracez avec msmtp -v pour différencier réseau vs auth. From/Envelope‑From divergents : si un serveur applique des politiques strictes, alignez l’envelope‑from sur une adresse appartenant au compte. Résumé en une phrase Le problème provient d’un verrou ciblé sur l’authentification “Basic” de l’adresse Hotmail ; en attendant l’adoption généralisée d’OAuth2, la solution la plus efficace et durable est d’utiliser un alias Outlook.com comme identifiant SMTP (ou, à court terme, un mot de passe d’application régénéré), tout en préparant la migration XOAUTH2. Annexe : décoder les codes d’erreur Code SMTP Signification Action typique 535 5.7.139 Échec d’authentification, compte verrouillé Déverrouiller le compte / utiliser un alias / basculer vers OAuth2 535 5.7.57 Échec d’authentification renforcée Vérifier mécanisme SASL, passer à XOAUTH2 454 4.7.0 Temporisateur/rate limit Attendre et réduire la fréquence d’essais 550 5.7.1 Interdit/politique (souvent côté destinataire) Vérifier SPF/DMARC/DKIM de l’expéditeur Ce qu’il faut retenir Constat : votre configuration n’est pas cassée ; c’est l’identité SMTP qui est verrouillée. Solution rapide : utiliser un alias Outlook.com comme user msmtp. Stratégie : planifier la migration vers OAuth2 pour rester compatible et sécurisé. Hygiène : 2FA, secrets chiffrés, journaux surveillés.