Utilisation de JavaMail pour vous connecter à un serveur Exchange avec IMAP Active

StackOverflow https://stackoverflow.com//questions/23024806

  •  21-12-2019
  •  | 
  •  

Question

J'utilise JavaMail 1.5.1 pour vous connecter à plusieurs comptes de messagerie (différents fournisseurs, etc.). Il semble parfait pour beaucoup de services, mais j'ai rencontré des problèmes pour essayer de se connecter à quelques d'entre eux. Les deux semble avoir la même réponse.

L'un des services qui me donnent des problèmes sont fournis par APTITIX.COM. Comme je l'ai lu depuis leur Documents en ligne (page 21) Les paramètres SMTP / IMAP sont les suivants:

J'ai l'utilisateur et le mot de passe de mon utilisateur de test. Je suis capable de se connecter à SMTP mais pas à IMAP. Voici mon code pour se connecter à imap

public static IMAPStore connectToImap(String host, int port, String username, String password) throws MessagingException {
    Properties props = System.getProperties();
    props.setProperty("mail.imap.sasl.enable", "true");
    props.setProperty("mail.imap.starttls.enable", "true");

    props.setProperty("mail.imap.auth.ntlm.disable", "true");
    props.setProperty("mail.imap.auth.plain.disable", "true");
    props.setProperty("mail.imap.auth.gssapi.disable", "true");
    props.setProperty("mail.imap.ssl.enable", "true");

    Session imapSession = Session.getInstance(props);
    IMAPStore store = new IMAPStore(imapSession, null);
    store.connect(host, port, username, password);

    return store;
}

Et voici la trace que je reçois après avoir exécuté la méthode pour se connecter à SMTP et à IMAP

DEBUG: setDebug: JavaMail version 1.5.1
DEBUG SMTP: useEhlo true, useAuth false
DEBUG SMTP: trying to connect to host "smtp.apptixemail.net", port 587, isSSL false
220 smtp.apptixemail.net Microsoft ESMTP MAIL Service ready at Fri, 11 Apr 2014 19:50:15 -0500
DEBUG SMTP: connected to host "smtp.apptixemail.net", port: 587

EHLO 10.58.0.246
250-smtp.apptixemail.net Hello [10.2.64.1]
250-SIZE 57671680
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-STARTTLS
250-AUTH LOGIN
250-8BITMIME
250-BINARYMIME
250 CHUNKING
DEBUG SMTP: Found extension "SIZE", arg "57671680"
DEBUG SMTP: Found extension "PIPELINING", arg ""
DEBUG SMTP: Found extension "DSN", arg ""
DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
DEBUG SMTP: Found extension "STARTTLS", arg ""
DEBUG SMTP: Found extension "AUTH", arg "LOGIN"
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Found extension "BINARYMIME", arg ""
DEBUG SMTP: Found extension "CHUNKING", arg ""
STARTTLS
220 2.0.0 SMTP server ready
EHLO 10.58.0.246
250-smtp.apptixemail.net Hello [10.2.64.1]
250-SIZE 57671680
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-AUTH LOGIN
250-8BITMIME
250-BINARYMIME
250 CHUNKING
DEBUG SMTP: Found extension "SIZE", arg "57671680"
DEBUG SMTP: Found extension "PIPELINING", arg ""
DEBUG SMTP: Found extension "DSN", arg ""
DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
DEBUG SMTP: Found extension "AUTH", arg "LOGIN"
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Found extension "BINARYMIME", arg ""
DEBUG SMTP: Found extension "CHUNKING", arg ""
DEBUG SMTP: Attempt to authenticate using mechanisms: LOGIN PLAIN DIGEST-MD5 NTLM 
DEBUG SMTP: AUTH LOGIN command trace suppressed
DEBUG SMTP: AUTH LOGIN succeeded
DEBUG: setDebug: JavaMail version 1.5.1
DEBUG IMAP: mail.imap.fetchsize: 16384
DEBUG IMAP: mail.imap.ignorebodystructuresize: false
DEBUG IMAP: mail.imap.statuscachetimeout: 1000
DEBUG IMAP: mail.imap.appendbuffersize: -1
DEBUG IMAP: mail.imap.minidletime: 10
DEBUG IMAP: disable AUTH=PLAIN
DEBUG IMAP: disable AUTH=NTLM
DEBUG IMAP: enable STARTTLS
DEBUG IMAP: enable SASL
DEBUG IMAP: trying to connect to host "imap.apptixemail.net", port 993, isSSL true
* OK The Microsoft Exchange IMAP4 service is ready.
A0 CAPABILITY
* CAPABILITY IMAP4 IMAP4rev1 AUTH=NTLM AUTH=GSSAPI AUTH=PLAIN CHILDREN IDLE NAMESPACE LITERAL+
A0 OK CAPABILITY completed.
DEBUG IMAP: AUTH: NTLM
DEBUG IMAP: AUTH: GSSAPI
DEBUG IMAP: AUTH: PLAIN
DEBUG IMAP: protocolConnect login, host=imap.apptixemail.net, user=XXX@YYY.com, password=<non-null>
DEBUG IMAP: SASL authentication command trace suppressed
DEBUG IMAP: SASL Mechanisms:
DEBUG IMAP:  NTLM
DEBUG IMAP:  GSSAPI
DEBUG IMAP:  PLAIN
DEBUG IMAP: 
2014-04-11 17:50:26.614 java[32026:1003] Unable to load realm info from SCDynamicStore
DEBUG IMAP: Failed to create SASL client, THROW: 
javax.security.sasl.SaslException: Failure to initialize security context [Caused by GSSException: Invalid name provided (Mechanism level: Could not load configuration from SCDynamicStore)]
    at com.sun.security.sasl.gsskerb.GssKrb5Client.<init>(GssKrb5Client.java:132)
    at com.sun.security.sasl.gsskerb.FactoryImpl.createSaslClient(FactoryImpl.java:45)
    at javax.security.sasl.Sasl.createSaslClient(Sasl.java:354)
    at com.sun.mail.imap.protocol.IMAPSaslAuthenticator.authenticate(IMAPSaslAuthenticator.java:131)
    at com.sun.mail.imap.protocol.IMAPProtocol.sasllogin(IMAPProtocol.java:765)
    at com.sun.mail.imap.IMAPStore.login(IMAPStore.java:761)
    at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:665)
    at javax.mail.Service.connect(Service.java:345)
    at test.Mailbox.connectToImap(MailboxUtils.java:561)
    at test.TestUserPass.main(TestUserPass.java:470)
Caused by: GSSException: Invalid name provided (Mechanism level: Could not load configuration from SCDynamicStore)
    at sun.security.jgss.krb5.Krb5NameElement.getInstance(Krb5NameElement.java:110)
    at sun.security.jgss.krb5.Krb5MechFactory.getNameElement(Krb5MechFactory.java:80)
    at sun.security.jgss.GSSManagerImpl.getNameElement(GSSManagerImpl.java:188)
    at sun.security.jgss.GSSNameImpl.getElement(GSSNameImpl.java:428)
    at sun.security.jgss.GSSNameImpl.init(GSSNameImpl.java:157)
    at sun.security.jgss.GSSNameImpl.<init>(GSSNameImpl.java:127)
    at sun.security.jgss.GSSManagerImpl.createName(GSSManagerImpl.java:123)
    at com.sun.security.sasl.gsskerb.GssKrb5Client.<init>(GssKrb5Client.java:90)
    ... 9 more
DEBUG IMAP: SASL authentication failed
DEBUG IMAP: LOGIN command trace suppressed
DEBUG IMAP: LOGIN command result: A1 NO LOGIN failed.
Exception in thread "main" javax.mail.AuthenticationFailedException: LOGIN failed.
    at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:684)
    at javax.mail.Service.connect(Service.java:345)
    at test.Mailbox.connectToImap(MailboxUtils.java:561)
    at test.TestUserPass.main(TestUserPass.java:470)

Je me demande pourquoi se passe-t-il. Je n'ai aucune idée de la raison pour laquelle cela ne fonctionne pas. Je ne sais pas si cela a quelque chose à voir avec l'exception GSSAPI ou si c'est quelque chose de différent ... comme vous pouvez se voir dans le code que j'ai désactivé NTLM et plaine (comme suggéré dans le javamail docs ) mais rien.

Était-ce utile?

La solution

J'ai résolu ceci et même que cela n'implique pas de problème dans le code que je voudrais documenter ici pourquoi il échouait.

semble que l'hôte IMAP que j'utilisais (imap.apptix.com) n'était que pour les perspectives, mais cela n'a pas fonctionné pour JavaMail.J'ai plus d'informations sur le service et ils pointent imap.collaborationhost.net comme hôte IMAP pour Thunderbird.Je l'ai essayé dans mon code et mon flèche ça a fonctionné.

En outre, je voudrais souligner que la confession GSSException n'était qu'un avertissement et n'affections pas le résultat final.Je l'obtiens avec l'authentification réussie aussi.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top