第 10 章 Mail 子系统
10.1. 配置 Mail 子系统
mail 子系统允许您在 JBoss EAP 里配置邮件会话,并使用 JNDI 把这些会话注入到应用程序。它也支持使用 Java EE 7 @MailSessionDefinition 和 @MailSessionDefinitions 注解的配置。
配置应用程序里使用的 SMTP 服务器
用下列 CLI 命令配置 SMTP 服务器和转出套接字绑定,例如:
/socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=my-smtp:add(host=localhost, port=25)
/subsystem=mail/mail-session=mySession:add(jndi-name=java:jboss/mail/MySession)
/subsystem=mail/mail-session=mySession/server=smtp:add(outbound-socket-binding-ref=my-smtp, username=user, password=pass, tls=true)
在应用程序里调用配置的邮件会话
@Resource(lookup="java:jboss/mail/MySession") private Session session;
10.2. 配置自定义传输
当使用标准的邮件服务器(如 POP3 或 IMAP)时,邮件服务器可以定义一系列属性,而一些属性是强制性的。其中最重要的是 outbound-socket-binding-ref,它是对转出邮件套接字绑定的引用,通过主机地址和端口号来定义。
对于使用多个主机来进行负载平衡的用户来说,定义 outbound-socket-binding-ref 可能不是最有效的解决方案。标准的 JavaMail 不支持使用多个主机进行负载平衡的主机配置。因此,使用这样的配置的用户必须实现自定义邮件传输。这些自定义邮件传输不要求 outbound-socket-binding-ref 并允许自定义的主机属性格式。
您可以用管理 CLI 配置自定义邮件传输。
添加新的邮件会话并指定 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:2.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>
Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.