Почта Liferay отправляет имя хоста и информацию о пользователе с заголовком

Я использую почту Liferay (MailServiceUtil/MailEngine) для отправки писем пользователям. Я настроил почту в ServerAdministration > Mail. Мой код выглядит следующим образом:

    InternetAddress toAddress = new InternetAddress(emailTo);            
    InternetAddress fromAddress = new InternetAddress("XXXXXXX","XX");
    MailMessage mailMessage = new MailMessage();
    mailMessage.setTo(toAddress);
    mailMessage.setFrom(fromAddress);
    mailMessage.setSubject(subject);
    mailMessage.setBody(emailbody);
    mailMessage.setHTMLFormat(true);
    MailServiceUtil.sendEmail(mailMessage);

Ниже информация отправляется вышеуказанным кодом:

Получено: от имени хоста ([НЕДОСТУПНО]. [XXX.XXX.XXX])

А также

Идентификатор сообщения: ‹1567646772.21541142172709.JavaMail.user@hostname>

У меня есть способ изменить идентификатор сообщения, но я не могу изменить имя хоста (имя хоста на localhost).

Я попытался установить mail.session.mail.smtp.localhost=localhost, добавив вручную указать дополнительные свойства JavaMail, чтобы переопределить вышеуказанную конфигурацию или port-ext.propeties. Но никакого успеха. Пожалуйста, помогите установить это как localhost.


person Varun Arya    schedule 02.11.2018    source источник


Ответы (2)


Я полагаю, вы говорите о почтовых заголовках следующим образом:

Received: from host.example.com ([x.x.x.x]) by anotherhost.example.com
 (anotherhost [y.y.y.y]) with ESMTPS (Nemesis) id blablablabla;
 Thu, 01 Nov 2018 11:07:15 +0100

Насколько я знаю, они добавляются следующим в цепочке - например. ваш сервер Liferay является отправителем и не получает почту ни от кого, но перенаправляет ее на следующий узел в списке обработчиков почты. Этот сервер, следующий переход, добавляет информацию о происхождении этого электронного письма, поэтому вы не можете контролировать его на стороне Liferay или Javamail.

Идентификатор сообщения создается уникальным, и его можно переопределить по умолчанию (это то, что вы получили). Протокол систем, перенаправивших эту почту, создается следующей системой, поэтому его нельзя переопределить в исходной системе.

Изменить (реакция на ваш комментарий):

Даже если есть способ, чтобы последняя машина в списке идентифицировалась как «localhost», какой в ​​этом смысл? Следующий скачок правильно даст IP-адрес машины и имя хоста обратного просмотра. И вы только усложните отладку, если вам нужно выяснить, с какого «локального хоста» пришло письмо. Помните: у вас будет как минимум столько же локальных хостов в вашей сети, сколько у вас машин (всего сумма виртуальных машин, контейнеров, «голого железа»)

person Olaf Kock    schedule 02.11.2018
comment
Спасибо за помощь. Я нашел mail.smtp.localhost — строковое имя локального хоста. По умолчанию используется InetAddress.getLocalHost().getHostName(). Обычно не требуется устанавливать, если ваш JDK и ваша служба имен настроены правильно. . И это сработало для меня. Но liferay не заменяет это, устанавливая mail.session.mail.smtp.localhost=localhost или mail.smtp.localhost=localhost. - person Varun Arya; 02.11.2018
comment
Хорошо, вы можете найти способ ... посмотрите мое редактирование - я не понимаю причину этого требования, это только усложнит вашу жизнь. - person Olaf Kock; 02.11.2018
comment
Это может быть заботой о безопасности. Пользователь получает наше user@hostname в полученном им заголовке почты. - person Varun Arya; 02.11.2018
comment
Ну, вы сказали, что решили проблему с идентификатором сообщения и в доставке осталось только имя хоста. Как я уже сказал: следующее в цепочке, вы ничего не можете с этим поделать в системе, отправляющей почту (вам нужно будет исправить это восходящее почтовое реле, чтобы скрыть исходную систему). Имя хоста не обязательно должно быть доступно из Интернета и в любом случае должно быть защищено брандмауэром. И, поскольку это в любом случае ваш сервер Liferay: вы, вероятно, уже разрешили трафик на него, даже если какой-либо обычный пользователь не знает внутреннего имени хоста. Если вы не предоставите более подробную информацию, я бы назвал это не проблемой - person Olaf Kock; 02.11.2018
comment
Спасибо за помощь Олаф. - person Varun Arya; 13.06.2019

Идентификатор сообщения получается из результатов InternetAddress.getLocalAddress, которым вы можете полностью управлять, установив mail.from.

person Bill Shannon    schedule 02.11.2018