第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)
- アウトバウンドソケットバインディングを追加します。以下のコマンドは、
localhost:25
を示すmy-smtp-binding
という名前のソケットバインディングを追加します。/socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=my-smtp-binding:add(host=localhost, port=25)
outbind-socket-binding-ref
を用いて、SMTP サーバーを追加します。以下のコマンドは、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
の形式に変換されます。
custom-server 属性のカスタム形式を強調する、完全な XML 設定の例は次のとおりです。
<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>