按配置覆盖Message-ID

时间:2015-04-15 10:13:48

标签: javamail wildfly

当我使用默认的WildFly邮件会话从我的应用程序发送电子邮件时,自动生成的邮件ID会显示我的服务器是WildFly:

Message-ID: <524672585.11.1429091886393.JavaMail.wildfly@myserver.example.com>

出于安全原因,我想抑制或覆盖消息ID中的wildfly子字符串。

是否有配置元素或系统属性来执行此操作?

2 个答案:

答案 0 :(得分:0)

回答我自己的问题:消息ID的wildfly部分对应于user.name系统属性的值。我的服务器恰好在名为wildfly的Linux用户帐户下运行。

因此,一种选择是使用其他用户帐户。或者,只需将-Duser.name=foo传递给WildFly启动脚本即可更改消息ID。

答案 1 :(得分:0)

升级到JavaMail 1.5.3。该官方发布的Bug 6496 -Message-Id leaks current user/hostname of the Java process标记为已解决。

否则,Message-ID计算使用包含用户名的InternetAddress.getLocalAddress方法。您可以设置要覆盖的mail.from会话属性,包括O / S用户名。

SELECT    a.id, b.a_id
FROM      a
LEFT JOIN b ON a.id = b.a_id

将输出如下内容:

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

如果您使用的是默认会话,则只需将“mail.from”添加到系统属性中即可。