2017-09-11 7 views
0

Cette question est liée à la question suivante: Using JavaMail to connect to IMAP getting "A1 NO LOGIN failed" exceptionJavaMail avec IMAP obtenir « A1 NO Échec de la connexion » exception

je suis tombé sur fil au-dessus puisque je reçois le même problème en utilisant JavaMail 1.6.0. Nous essayons de nous connecter à une boîte aux lettres Exchange avec IMAP. Thunderbird se connecte parfaitement et je suppose que cela est dû à un autre problème lié à JavaMail. @Bill Shannon: J'ai fait tout ce que vous avez souligné ci-dessus, sauf que nous utilisons STARTTLS puisque le support SSL est désactivé sur le serveur Exchange (Thunderbird utilise également STARTTLS et se connecte correctement).

Toute aide à ce sujet serait grandement appréciée.

INFO | jvm 1 | 2017/09/07 20:59:02 | DEBUG: setDebug: JavaMail version 1.6.0 
INFO | jvm 1 | 2017/09/07 20:59:02 | DEBUG: getProvider() returning javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle] 
INFO | jvm 1 | 2017/09/07 20:59:02 | DEBUG IMAP: mail.imap.fetchsize: 16384 
INFO | jvm 1 | 2017/09/07 20:59:02 | DEBUG IMAP: mail.imap.ignorebodystructuresize: false 
INFO | jvm 1 | 2017/09/07 20:59:02 | DEBUG IMAP: mail.imap.statuscachetimeout: 1000 
INFO | jvm 1 | 2017/09/07 20:59:02 | DEBUG IMAP: mail.imap.appendbuffersize: -1 
INFO | jvm 1 | 2017/09/07 20:59:02 | DEBUG IMAP: mail.imap.minidletime: 10 
INFO | jvm 1 | 2017/09/07 20:59:02 | DEBUG IMAP: enable STARTTLS 
INFO | jvm 1 | 2017/09/07 20:59:02 | DEBUG IMAP: closeFoldersOnStoreFailure 
INFO | jvm 1 | 2017/09/07 20:59:02 | DEBUG IMAP: trying to connect to host "mail.diversepower.com", port 143, isSSL false 
INFO | jvm 1 | 2017/09/07 20:59:02 | * OK The Microsoft Exchange IMAP4 service is ready. 
INFO | jvm 1 | 2017/09/07 20:59:02 | A0 CAPABILITY 
INFO | jvm 1 | 2017/09/07 20:59:02 | * CAPABILITY IMAP4 IMAP4rev1 LOGINDISABLED STARTTLS UIDPLUS CHILDREN IDLE NAMESPACE LITERAL+ 
INFO | jvm 1 | 2017/09/07 20:59:02 | A0 OK CAPABILITY completed. 
INFO | jvm 1 | 2017/09/07 20:59:02 | DEBUG IMAP: protocolConnect login, host=mail.abc.com, [email protected], password=<non-null> 
INFO | jvm 1 | 2017/09/07 20:59:02 | A1 STARTTLS 
INFO | jvm 1 | 2017/09/07 20:59:02 | A1 OK Begin TLS negotiation now. 
INFO | jvm 1 | 2017/09/07 20:59:02 | A2 CAPABILITY 
INFO | jvm 1 | 2017/09/07 20:59:02 | * CAPABILITY IMAP4 IMAP4rev1 AUTH=PLAIN UIDPLUS CHILDREN IDLE NAMESPACE LITERAL+ 
INFO | jvm 1 | 2017/09/07 20:59:02 | A2 OK CAPABILITY completed. 
INFO | jvm 1 | 2017/09/07 20:59:02 | DEBUG IMAP: AUTH: PLAIN 
INFO | jvm 1 | 2017/09/07 20:59:02 | DEBUG IMAP: mechanism PLAIN disabled by property: mail.imap.auth.plain.disable 
INFO | jvm 1 | 2017/09/07 20:59:02 | DEBUG IMAP: mechanism LOGIN not supported by server 
INFO | jvm 1 | 2017/09/07 20:59:02 | DEBUG IMAP: mechanism NTLM not supported by server 
INFO | jvm 1 | 2017/09/07 20:59:02 | DEBUG IMAP: mechanism XOAUTH2 disabled by property: mail.imap.auth.xoauth2.disable 
INFO | jvm 1 | 2017/09/07 20:59:02 | DEBUG IMAP: LOGIN command trace suppressed 
INFO | jvm 1 | 2017/09/07 20:59:02 | DEBUG IMAP: LOGIN command result: A3 NO LOGIN failed. 
+0

Vous pouvez définir la propriété 'mail.debug.auth' sur true pour obtenir les détails de l'échange d'authentification (mais ne le publiez pas ici). Cela pourrait fournir plus d'informations sur ce qui ne va pas. Sinon, assurez-vous que vous utilisez vraiment le bon nom d'utilisateur (dans le bon format) et le bon mot de passe] (https://javaee.github.io/javamail/FAQ#Exchange-login). –

+0

Etes-vous sûr que c'est le bon nom d'utilisateur? Voir le lien @Bill Shannon pour le format du nom d'utilisateur. – Max

Répondre

-1

Voici la partie de votre journal vous dire, ce qui se passe:

INFO | jvm 1 | 2017/09/07 20:59:02 | * CAPABILITY IMAP4 IMAP4rev1 AUTH=PLAIN UIDPLUS CHILDREN IDLE NAMESPACE LITERAL+ 
INFO | jvm 1 | 2017/09/07 20:59:02 | A2 OK CAPABILITY completed. 
INFO | jvm 1 | 2017/09/07 20:59:02 | DEBUG IMAP: AUTH: PLAIN 
INFO | jvm 1 | 2017/09/07 20:59:02 | DEBUG IMAP: mechanism PLAIN disabled by property: mail.imap.auth.plain.disable 
INFO | jvm 1 | 2017/09/07 20:59:02 | DEBUG IMAP: mechanism LOGIN not supported by server 
INFO | jvm 1 | 2017/09/07 20:59:02 | DEBUG IMAP: mechanism NTLM not supported by server 
INFO | jvm 1 | 2017/09/07 20:59:02 | DEBUG IMAP: mechanism XOAUTH2 disabled by property: mail.imap.auth.xoauth2.disable 

Le serveur vous informe sur les moyens possibles pour faire l'authentification. Le client passe par ses propres mécanismes et vérifie si le serveur prend en charge ou s'il y a une raison de ne pas l'utiliser:

  • PLAIN est pris en charge par les deux côtés, mais l'utilisation est désactivé sur votre côté, à cause d'un JavaMail session-propriété mail.imap.auth.plain.disable mis à true
  • LOGIN est pas pris en charge par le serveur
  • NTLM est pas pris en charge par le serveur
  • XOAUTH2 est pas pris en charge par le serveur et l'utilisation est désactivé sur votre côté, à cause d'un Ja vaMail session-propriété mail.imap.auth.xoauth2.disable mis à true

Parce qu'il n'y a pas de mécanismes d'authentification communs, l'authentification échoue.

La solution pour vous ici est de supprimer le paramètre mail.imap.auth.plain.disable (ou de le définir sur false) dans vos propriétés de session.

+0

Après STARTTLS, la connexion est activée par le serveur (AUTH = LOGIN ne l'est pas), car la capacité 'LOGINDISABLED' a été supprimée. – Max

+0

@Max Les mécanismes d'authentification disponibles signalés par le serveur sont débogués dans la troisième ligne du bloc de journaux que j'ai cité dans ma réponse: 'DEBUG IMAP: AUTH: PLAIN'. Il n'y a aucune mention du mécanisme d'authentification 'LOGIN' comme vous l'avez proposé. Si je l'ai négligé, veuillez prouver votre réclamation en citant la ligne correspondante du journal d'origine. – Lothar

+0

'AUTH = LOGIN' et' LOGIN' ne sont pas la même chose. Vous avez raison que 'AUTH = LOGIN', le mécanisme SASL, est désactivé. Basic 'LOGIN' n'a pas besoin d'être activé, il est activé par défaut. Il peut être désactivé par 'LOGINDISABLED' (RFC 3501 §6.2.3.). C'est pourquoi JavaMail tente de l'utiliser ici: 'DEBUG IMAP: commande LOGIN trace supprimed'. Il n'essaie pas AUTH = LOGIN ici. – Max

0

@Bill Shannon: Merci beaucoup pour votre aide. J'apprécie beaucoup.

Merci à tous pour votre contribution. Finalement, nous avons réussi à comprendre le problème. Nous devions activer PLAIN et le nom d'utilisateur ne doit être spécifié que comme la première partie de l'adresse e-mail (abc pour l'adresse [email protected]). Je crois que le serveur Exchange dans ce cas était Exchange Server 2013.

Espérons que cela aide pour quiconque trébuche sur ce même problème.