9.2. カスタムトランスポートの設定
JBoss EAP で SMTP、POP3、IMAP などの標準メールサーバーを設定する場合、いくつかの属性を定義する必要があります。最も重要なのは outbound-socket-binding-ref 属性です。この属性は、メールセッションを特定のホストとポートにリンクします。ただし、負荷分散のために複数のホストを設定する場合、標準の Jakarta Mail 設定では、複数のホストがサポートされていないため、不十分な場合があります。このような場合は、管理 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>