第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;
メールセッションおよびサーバーの設定で使用できる属性の完全リストは「Mail サブシステムの属性」を参照してください。
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>10.3. パスワードにクレデンシャルストアを使用
mail サブシステムでクリアテキストのパスワードを提供する他に、クレデンシャルストアを使用してパスワードを提供することもできます。elytron サブシステムを使用すると、クレデンシャルストアを作成してパスワードをセキュアに保存し、JBoss EAP 全体でパスワードを使用することができます。クレデンシャルストアの作成および使用に関する詳細は、『How to Configure Server Security』の「Credential Store」を参照してください。
管理 CLI を使用したクレデンシャルストアの使用
/subsystem=mail/mail-session=mySession/server=smtp:add(outbound-socket-binding-ref=my-smtp-binding, username=user, credential-reference={store=exampleCS, alias=mail-session-pw}, tls=true)
以下は、クリアテキストパスワードを使用する credential-reference 属性を指定する方法の例になります。
credential-reference={clear-text="MASK-Ewcyuqd/nP9;A1B2C3D4;351"}管理コンソールを使用したクレデンシャルストアの使用
- 管理コンソールにアクセスします。詳細は「管理コンソール」を参照してください。
- Configuration → Subsystems → Mail と選択します。
- Mail Session タブで、クレデンシャルストアを使用したいメールセッションを選択します。
- View をクリックし、メールセッション属性とクレデンシャルを設定します。

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.