第 22 章 邮件子系统
22.1. 在邮件子系统里使用自定义传输 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
当使用标准的邮件服务器(POP3、IMAP)时,服务器可以定义一系列属性,其中一些是必需的。
最重要的属性是
outbound-socket-binding-ref,它是对转出邮件套接字绑定的引用,且是用主机地址和端口号码来定义的。
对于某些用户来说,这并非最有效的解决方案,因为他们的主机配置将多个主机用于负载平衡。然而,要求用户实现自定义邮件传输的标准的 JavaMail 不支持这个配置。
这些自定义的传输不要求
outbound-socket-binding-ref 且允许自定义的主机属性格式。
自定义传输可以通过下列 CLI 命令来进行配置:
过程 22.1.
- 添加新的邮件会话。下面的命令创建名为 mySession 的新会话并设置 JNDI 为
java:jboss/mail/MySession:/subsystem=mail/mail-session=mySession:add(jndi-name=java:jboss/mail/MySession) - 添加转出套接字绑定。下面的命令添加了名为
my-smtp-binding的套接字绑定,它指向localhost:25。/socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=my-smtp-binding:add(host=localhost, port=25) - 用
outbind-socket-binding-ref添加 STMP 服务器。下面的命令添加一个名为my-smtp-binding的 SMTP,并定义一个用户名、密码和 TLS 配置。/subsystem=mail/mail-session=mySession/server=smtp:add(outbound-socket-binding-ref= my-smtp-binding, username=user, password=pass, tls=true) - 对 POP3 和 IMAP 重复这个过程:
/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)/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 配置示例,它在 custom-server 属性里强调了自定义格式:
<subsystem xmlns="urn:jboss:domain:mail:1.1">
<mail-session jndi-name="java:/Mail" from="user.name@domain.org">
<smtp-server outbound-socket-binding-ref="mail-smtp" tls="true">
<login name="user" password="password"/>
</smtp-server>
<pop3-server outbound-socket-binding-ref="mail-pop3"/>
<imap-server outbound-socket-binding-ref="mail-imap">
<login name="nobody" password="password"/>
</imap-server>
</mail-session>
<mail-session debug="true" jndi-name="java:jboss/mail/Default">
<smtp-server outbound-socket-binding-ref="mail-smtp"/>
</mail-session>
<mail-session debug="true" jndi-name="java:jboss/mail/Custom">
<custom-server name="smtp">
<login name="username" password="password"/>
<property name="host" value="mail.example.com"/>
</custom-server>
<custom-server name="pop3" outbound-socket-binding-ref="mail-pop3">
<property name="custom_prop" value="some-custom-prop-value"/>
<property name="some.fully.qualified.property" value="fully-qualified-prop-name"/>
</custom-server>
</mail-session>
<mail-session debug="true" jndi-name="java:jboss/mail/Custom2">
<custom-server name="pop3" outbound-socket-binding-ref="mail-pop3">
<property name="custom_prop" value="some-custom-prop-value"/>
</custom-server>
</mail-session>
</subsystem>