2015-04-15 5 views
0

Когда я отправить электронную почту от моего приложения, используя WildFly почтовой сессии по умолчанию, автоматически сгенерированное сообщение ID нарушает правила, что мой сервер WildFly:Override Message-ID конфигурация

Message-ID: <[email protected]> 

По соображениям безопасности, я d хотел бы подавить или переопределить подстроку wildfly в ID сообщения.

Для этого есть элемент конфигурации или системное свойство?

ответ

0

Ответ на мой собственный вопрос: часть идентификатора сообщения соответствует значению системного имущества user.name. Мой сервер работает под учетной записью пользователя Linux с именем wildfly.

Таким образом, одним из вариантов является использование другой учетной записи пользователя. В качестве альтернативы просто передать -Duser.name=foo сценарию запуска WildFly достаточно, чтобы изменить идентификатор сообщения.

+0

Вы также можете подклассифицировать MimeMessage и переопределить метод [updateMessageID] (https://javamail.java.net/nonav/docs/api/javax/mail/internet/MimeMessage.html#updateMessageID()). –

+1

См. Также: [Ошибка 6496 -Message-Id утечки текущего пользователя/имя хоста процесса Java] (https://kenai.com/bugzilla/show_bug.cgi?id=6496). – jmehrens

+0

@BillShannon: Да, я знаю об этом, но я надеялся избежать изменения кода, поэтому я спросил о _configuration_. –

0

Обновление до JavaMail 1.5.3. Этот официальный релиз имеет Bug 6496 -Message-Id leaks current user/hostname of the Java process, отмеченный как разрешенный.

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

public static void main(String[] args) throws Exception { 
     Properties props = new Properties(); 
     props.put("mail.from", "[email protected]"); 
     Session s = Session.getInstance(props); 
     MimeMessage m = new MimeMessage(s); 
     m.addFrom(InternetAddress.parse("[email protected]")); 
     m.setText(""); 
     m.saveChanges(); 
     m.writeTo(System.out); 
} 

Какой будет что-то вроде:

From: [email protected] 
Message-ID: <[email protected]> 
MIME-Version: 1.0 
Content-Type: text/plain; charset=us-ascii 
Content-Transfer-Encoding: 7bit 

Если вы используете сеанс по умолчанию, вы можете просто добавить «mail.from» в свойствах системы.

+0

Это не отвечает на вопрос. Ответ - нет. И вы не можете тривиально обновить библиотеку на уровне контейнера. Однако это обновление будет включено в WildFly 9.0.0.CR1 (см. [WFLY-4536] (https://issues.jboss.org/browse/WFLY-4536)). –

+0

Отредактирован ответ. Я думаю, что свойство mail.from делает то, что вам нужно. – jmehrens

Смежные вопросы