Почтовый клиент 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 настроен соответствующим образом, чтобы разрешить то, что вы пытаетесь сделать.