Почтовый клиент Java не работает в Linux

У меня есть почтовый ssl-клиент для почтового сервера zimbra, который отлично работает на Windows, но я получил сбой аутентификации на Linux, я проверил, что вся эта сеть Conf. DNS, порт и брандмауэр верны

свойства для сессии:

props.put("mail.smtps.host", "my.mail.server");
props.put("mail.smtps.host", "my.mail.server");
props.put("mail.smtps.starttls.enable", "true");
props.put("mail.smtps.port", "465");
props.put("mail.smtps.auth", "true");
props.put("mail.smtps.ssl.trust", "my.mail.server");

Начало сеанса:

Session session = Session.getDefaultInstance(props);

Транспорт:

Transport t = session.getTransport("smtps");
t.connect("user", "pass");
t.sendMessage(message, message.getAllRecipients());

то, что привлекло мое внимание при использовании отладки, - это постфиксный ответ в сообщении

Журнал отладки Windows:

ОТЛАДКА: setDebug: JavaMail версия 1.4.3 ОТЛАДКА: getProvider(), возвращающий javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc] ОТЛАДКА SMTP: useEhlo true, useAuth true ОТСУТСТВИЕ SMTP: попытка подключиться к хосту "my.mail.server", порт 465, isSSL true 220 my.mail.server ESMTP готов. SMTP отладки: подключен к хосту "my.mail.server", порт: 465

тем временем на Linux я получил это:

ОТЛАДКА: setDebug: JavaMail версия 1.4.3 ОТЛАДКА: getProvider(), возвращающий javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc] ОТЛАДКА SMTP: useEhlo true, useAuth true ОТСУТСТВИЕ SMTP: попытка подключиться к хосту "my.mail.server", порт 465, isSSL true 220 my.mail.server ESMTP Postfix DEBUG SMTP: подключена к хосту "my.mail.server", порт: 465

Буду признателен за любую помощь.

2 ответа

Решение

Я обнаружил проблему: аутентификация сервера отличалась для локального и внешнего доступа, для разработки мы использовали сервер Windows вне сети и сервер Linux для интрасети.

На самом деле это была неправильная конфигурация на почтовом сервере

Почтовый клиент Java остается прежним для локального и публичного доступа.

Разница в сообщениях отладки незначительна. Это просто косметическое различие в том, что два (локальных) почтовых сервера вставили в строку "ответ на приветствие соединения". Например, сервер Linux, на котором работает Postfix в качестве своего MTA, обычно говорит:

220 smtp.example.com ESMTP Postfix

Спецификация ESMTP гласит:

"Реализации SMTP-сервера МОГУТ включать идентификацию своего программного обеспечения и информации о версии в ответ на приветствие соединения после кода 220, что позволяет более эффективно изолировать и устранять любые проблемы. Реализации МОГУТ предусмотреть для SMTP-серверов отключение программного обеспечения и объявления версии где это вызывает проблемы безопасности."

Настоящая проблема будет в другом.

Если бы я пытался отладить это, я бы начал с просмотра журналов MTA, чтобы узнать, говорят ли они, почему сеанс закрывается. Я также проверил бы, что имя пользователя и пароль верны и что MTA настроен соответствующим образом, чтобы разрешить то, что вы пытаетесь сделать.

Другие вопросы по тегам