tutte le guide

// come risolvere

Microsoft 365 "535 5.7.139 Authentication unsuccessful": come risolvere

La tua app o la tua stampante non riesce ad accedere a smtp.office365.com. Perché compare 535 5.7.139 (SMTP AUTH disattivato, security defaults, MFA) e come risolvere.

Cosa significa

La tua applicazione, il tuo sito, la tua stampante o il tuo script si è collegato a Microsoft 365 (smtp.office365.com) per inviare un'email e ha provato ad accedere con nome utente e password. Microsoft ha rifiutato l'accesso. L'errore arriva durante la conversazione SMTP, prima che venga inviata qualsiasi email. Le varianti più comuni sono:

535 5.7.139 Authentication unsuccessful, SmtpClientAuthentication is disabled for the Tenant.
535 5.7.139 Authentication unsuccessful, the user credentials were incorrect.
535 5.7.139 Authentication unsuccessful, user is locked by your organization's security defaults policy.
535 5.7.139 Authentication unsuccessful, the request did not meet the criteria to be authenticated successfully.

Il testo dopo la virgola ti dice quale impostazione ha bloccato l'accesso, quindi leggilo con attenzione. Questo modo di accedere per inviare posta si chiama SMTP AUTH (o "authenticated client submission") e di solito usa la porta 587.

Perché succede

  • SMTP AUTH è disattivato per l'intera organizzazione (tenant) o per quella casella. Microsoft consiglia di tenerlo disattivato e di attivarlo solo per gli account che ne hanno bisogno, e lo ha già disattivato nei tenant che non lo usavano.
  • I security defaults sono attivi in Microsoft Entra ID. La documentazione di Microsoft indica che con i security defaults attivi SMTP AUTH è disattivato, anche se lo attivi su una casella.
  • L'autenticazione di base è bloccata da una policy di autenticazione o da una policy di Conditional Access che blocca la "legacy authentication". In quel caso il messaggio di solito dice che la richiesta "did not meet the criteria".
  • Credenziali errate o MFA. Una password sbagliata o scaduta, oppure un account protetto dall'autenticazione a più fattori, non possono accedere con una semplice password. Le password per le app non funzionano più con l'autenticazione di base.
  • L'account non ha una casella utilizzabile: nessuna licenza Exchange Online, oppure una cassetta postale condivisa con l'accesso bloccato.

Il ritiro dell'autenticazione di base

Microsoft sta ritirando l'autenticazione di base (un semplice nome utente e password) per SMTP AUTH. Il calendario è cambiato più volte. Al momento in cui scriviamo, l'ultimo annuncio di Microsoft (gennaio 2026) dice che il comportamento resta invariato fino a dicembre 2026; alla fine di dicembre 2026 l'autenticazione di base per SMTP AUTH sarà disattivata per impostazione predefinita nei tenant esistenti, gli amministratori potranno ancora riattivarla, e una data di rimozione definitiva sarà annunciata nella seconda metà del 2027. Controlla il blog dell'Exchange Team per le date aggiornate. La soluzione a lungo termine è OAuth 2.0 ("modern authentication").

Come verificare

  1. Copia l'errore completo dal log della tua applicazione. La parte dopo "Authentication unsuccessful" indica la causa.
  2. In Exchange Online PowerShell controlla le impostazioni dell'organizzazione e della casella:
    Connect-ExchangeOnline
    Get-TransportConfig | Format-List SmtpClientAuthenticationDisabled
    Get-CASMailbox -Identity app@yourdomain.com | Format-List SmtpClientAuthenticationDisabled
    True significa disattivato. Sulla casella, un valore vuoto significa "segui l'impostazione dell'organizzazione".
  3. Nell'interfaccia di amministrazione di Microsoft 365 vai su Users > Active users, seleziona l'account, poi Mail > Manage email apps e guarda Authenticated SMTP.
  4. Nell'interfaccia di amministrazione di Microsoft Entra controlla se i security defaults sono attivi e se una policy di Conditional Access blocca la legacy authentication. I log di accesso di Entra mostrano il tentativo fallito e la policy che l'ha bloccato.
  5. Prova a mano con swaks (vedrai la risposta esatta del server):
    swaks --server smtp.office365.com --port 587 --tls \
      --auth LOGIN --auth-user app@yourdomain.com --auth-password 'your-password' \
      --from app@yourdomain.com --to you@example.com

Se invece il server risponde che devi autenticarti prima di MAIL FROM, il tuo strumento non sta affatto effettuando l'accesso: consulta 530 5.7.57 Client not authenticated.

Come risolvere

Opzione migliore: passa l'app a OAuth 2.0

Se la tua applicazione supporta l'accesso "Microsoft 365 / OAuth", usalo. Microsoft documenta come registrare un'app in Microsoft Entra ID e usare OAuth con SMTP AUTH. In nodemailer, per esempio, passi un token di accesso al posto della password:

const transporter = nodemailer.createTransport({
  host: 'smtp.office365.com',
  port: 587,
  secure: false,       // STARTTLS on port 587
  requireTLS: true,
  auth: { type: 'OAuth2', user: 'app@yourdomain.com', accessToken: token }
});

Per il tuo codice, inviare tramite la Microsoft Graph API (sendMail) evita completamente SMTP AUTH.

Se per ora devi mantenere una password

  1. Attiva SMTP AUTH solo per la casella che invia, non per l'intera organizzazione:
    Set-CASMailbox -Identity app@yourdomain.com -SmtpClientAuthenticationDisabled $false
  2. Se i security defaults sono attivi, SMTP AUTH resta bloccato. L'alternativa è sostituire i security defaults con policy di Conditional Access (serve una licenza Entra ID P1) che continuino a richiedere l'MFA per le persone ma consentano questo unico account di servizio. Valuta l'impatto sulla sicurezza prima di cambiarlo.
  3. Usa una casella dedicata con una password lunga e unica, una licenza e nessuna richiesta MFA, e assicurati che l'app usi la porta 587 con STARTTLS (la porta 465 con TLS implicito non è quella che Microsoft documenta per questo endpoint).
  4. Le modifiche non sono immediate: lascia passare un po' di tempo (spesso fino a un'ora) prima di riprovare.

Dispositivi che non supportano OAuth

Le vecchie stampanti e i vecchi scanner spesso supportano solo una password. Invece di SMTP AUTH, possono inviare tramite un connettore SMTP relay (da un IP pubblico fisso) oppure con il direct send verso il tuo endpoint MX. Le due opzioni sono confrontate nella guida 5.7.57.

Verifica che sia risolto

  • Invia un'email dall'applicazione all'indirizzo unico mostrato nella home page di Delivmail. Se arriva, l'accesso funziona; il report mostra anche se SPF, DKIM e DMARC sono superati per il tuo dominio tramite Microsoft 365. Se non lo sono, segui SPF, DKIM e DMARC per Microsoft 365.
  • Poi invia un'email reale al destinatario che avrebbe dovuto riceverla.
  • Pianifica fin da ora il passaggio a OAuth, così il cambiamento sull'autenticazione di base non bloccherà l'app in futuro.

Verifica che sia risolto

Una modifica DNS può richiedere da pochi minuti a qualche ora. Poi invia una nuova email di test o scansiona di nuovo il tuo dominio.

Guide correlate