9.2. 配置自定义传输
当您在 JBoss EAP 中配置标准邮件服务器(如 SMTP、POP3 或 IMAP)时,您需要定义几个属性,并且最关键是 outbound-socket-binding-ref 属性。此属性将您的邮件会话链接到特定的主机和端口。但是,如果您的设置涉及多个用于负载均衡的主机,则标准 Jakarta 邮件配置可能会很短,因为它们不支持多个主机。在这种情况下,您应该通过管理 CLI 设置自定义邮件传输。这些自定义传输允许更灵活的配置,且不需要 outbound-socket-binding-ref 属性。
先决条件
- JBoss EAP 已安装并运行。
流程
添加新邮件会话并指定 JNDI 名称。
/subsystem=mail/mail-session=mySession:add(jndi-name=java:jboss/mail/MySession)添加出站套接字绑定并指定主机和端口。
/socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=my-smtp-binding:add(host=localhost, port=25)添加 SMTP 服务器并指定出站套接字绑定、用户名和密码。
/subsystem=mail/mail-session=mySession/server=smtp:add(outbound-socket-binding-ref=my-smtp-binding, username=user, password=pass, tls=true)
您可以使用类似步骤配置 POP3 或 IMAP 服务器。
POP3 服务器
/socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=my-pop3-binding:add(host=localhost, port=110)
/subsystem=mail/mail-session=mySession/server=pop3:add(outbound-socket-binding-ref=my-pop3-binding, username=user, password=pass)
IMAP 服务器
/socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=my-imap-binding:add(host=localhost, port=143)
/subsystem=mail/mail-session=mySession/server=imap:add(outbound-socket-binding-ref=my-imap-binding, username=user, password=pass)
要使用自定义服务器,请创建一个没有出站套接字绑定的自定义邮件服务器。您可以在自定义邮件服务器的属性定义中指定主机信息。例如:
/subsystem=mail/mail-session=mySession/custom=myCustomServer:add(username=user,password=pass, properties={"host" => "myhost", "my-property" =>"value"})
如果您定义了自定义协议,则包含句点(.)的任何属性名称都将被视为完全限定名称,并直接传递。任何其它格式(如 my-property )都以以下格式转换: mail.server-name.my-property。
以下 XML 是包含自定义服务器的示例邮件配置。
<subsystem xmlns="urn:jboss:domain:mail:4.0">
<mail-session name="default" jndi-name="java:jboss/mail/Default">
<smtp-server outbound-socket-binding-ref="mail-smtp"/>
</mail-session>
<mail-session name="myMail" from="user.name@domain.org" jndi-name="java:/Mail">
<smtp-server password="password" username="user" tls="true" outbound-socket-binding-ref="mail-smtp"/>
<pop3-server outbound-socket-binding-ref="mail-pop3"/>
<imap-server password="password" username="nobody" outbound-socket-binding-ref="mail-imap"/>
</mail-session>
<mail-session name="custom" jndi-name="java:jboss/mail/Custom" debug="true">
<custom-server name="smtp" password="password" username="username">
<property name="host" value="mail.example.com"/>
</custom-server>
</mail-session>
<mail-session name="custom2" jndi-name="java:jboss/mail/Custom2" debug="true">
<custom-server name="pop3" outbound-socket-binding-ref="mail-pop3">
<property name="custom-prop" value="some-custom-prop-value"/>
</custom-server>
</mail-session>
</subsystem>