Как правильно настроить javamail для использования STARTTLS?

При настройке сеанса я устанавливаю свойства starttls.enable и .required, но когда происходит соединение, оно должно завершиться ошибкой в ​​соответствии с документацией:

mail.smtp.starttls.enable boolean При значении true разрешает использование команды STARTTLS (если поддерживается сервером) для переключения соединения на соединение, защищенное TLS, перед выполнением каких-либо команд входа. Обратите внимание, что соответствующее хранилище доверия должно быть настроено так, чтобы клиент доверял сертификату сервера. По умолчанию false." http://javamail.kenai.com/nonav/javadocs/com/sun/mail/smtp/package-summary.html

props = new Properties();
props.put("mail.smtps.host", MAILSERV);
props.put("mail.smtps.socketFactory.port", 465);
props.put("mail.smtps.auth", "true");
props.put("mail.smtps.port", 465);
props.put("mail.smtps.socketFactory.fallback", "false");
props.put("mail.smtps.socketFactory.class","utils.DummySSLSocketFactory");
props.put("mail.smtps.quitwait", "false");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.starttls.required", "true");
Session session = Session.getInstance(props, authenticator);  


transport = session.getTransport("smtps");
transport.connect(mailServer, port, username, password);
transport.sendMessage(message, message.getAllRecipients());

Итак, что я делаю неправильно, что позволяет мне использовать Starttls, когда он не поддерживается сервером?


person Knoxie    schedule 25.03.2013    source источник
comment
Обратите внимание, что если вы используете протокол smtps для доступа к SMTP через SSL, все свойства будут называться mail.smtps.*., похоже, вы используете порт 465, который обычно является SMTP через SSL. Хотя, я даже не уверен, можно ли делать STARTTLS поверх smtps   -  person nos    schedule 25.03.2013
comment
Я думаю, вы правы. После установки по умолчанию smtp вместо smtps я получаю желаемые результаты. Я действительно не люблю использовать свойства по этой причине.   -  person Knoxie    schedule 25.03.2013
comment
Вы также можете избавиться от этих свойств фабрики сокетов, они не нужны.   -  person Bill Shannon    schedule 25.03.2013


Ответы (1)


Проблема, которая возникла у меня с STARTTLS, была вызвана тем, что я получил безопасный транспорт:

transport = session.getTransport("smtps");

После изменения его на «smtp» я смог использовать STARTTLS.

person Knoxie    schedule 28.03.2013