# 運用・管理 / メール送信

本製品は簡易的な電子メール送信機能（メールクライアント）を備えています。
この機能は、トリガーを使ってイベントの発生を管理者に通知したり、ログをメールで送信したりするときに便利です。

## 基本設定

メール送信機能を使用するには、あらかじめ次の2項目を設定しておく必要があります。両方を設定しないとメールの送信（mailコマンドの実行）はできません。

- 本製品が使う送信元メールアドレス
- 送信用メールサーバー（SMTPサーバー）のIPアドレス（IPv4/IPv6）またはホスト名

送信元メールアドレスはグローバルコンフィグモードのmail fromコマンド、送信用メールサーバーは同じくグローバルコンフィグモードのmail smtpserverコマンドで設定します。
なお、実際にメールが配送されるためには、本製品と送信用メールサーバー、送信用メールサーバーと宛先メールアドレスのメールボックスが存在するメールサーバーとが互いに通信できるようになっている必要があります。以下の説明では、IP関連の設定（アドレス設定や経路設定）は完了しているものとします。

1. メール送信時に本製品が使用する送信元メールアドレスを設定します。このアドレスは送信メールのFromアドレスとして使われます。また、SMTPセッションの開始時には、このメールアドレスのドメイン部分がHELOコマンドでメールサーバーに送信されます。
   ここでは、送信元メールアドレスとして「manager@bulbul.example.com」を使用するものとします。

       awplus(config)# mail from manager@bulbul.example.com

2. 送信用メールサーバー（SMTPサーバー）のIPアドレス（IPv4/IPv6）かホスト名を設定します。
   本製品は、送信するすべてのメールをこのSMTPサーバーに転送して以後の配送を依頼します。

       awplus(config)# mail smtpserver 172.17.28.1
       または
       awplus(config)# mail smtpserver smtp.example.com

3. 設定を確認します。State欄がAliveになっていればメール送信機能の基本設定は完了しています（IPなど下位層の設定は確認できません）。

       awplus(config)# end
       awplus# show mail
       Mail Settings
       ------------------------------------------------------------
       State                              : Alive
       SMTP Server                        : 172.17.28.1
       Host Name                          : manager@bulbul.example.com
       Port                               : 25
       Debug                              : Disabled

       Messages
       ------------------------------------------------------------
       There is no mail in the queue.

Note

必須ではありませんが、システム時刻とタイムゾーンも正しく設定しておくことをおすすめします。詳細は「運用・管理」の「システム」をご覧ください（「システム時刻の設定」）。

## メール機能の使用例

これでメールを送るための設定は完了です。以下、メール機能の実際の使用例を示します。メールの送信は特権EXECモードのmailコマンドで行います。
コマンドラインから短いメールメッセージを送るには次のようにします。管理者のアドレスにテストメールを送ってみましょう。メールの件名（タイトル）は「test1」とします。

    awplus# mail to admin@example.com subject test1

    Type the message below and finish with a CTRL-d
    This is a test.
    <Ctrl/D>
    Sending /var/spool/mqueue/20120814091804.8319... ok.

Note

メール本文を対話的に入力する場合は、本文中で疑問符（?）を使用しないでください。本文に疑問符を使いたいときは、メール本文を別途テキストファイルとして用意しfileパラメーターで該当テキストファイルを指定してください（次項を参照）。

この例では、コマンドラインから宛先メールアドレスとメールの件名（タイトル）を指定しています。すると、「Type the message below and finish with a CTRL-d」というメッセージが表示され、カーソルが次の行に移動するので、メール本文を入力し、入力が終わったら「Ctrl/D」キーを押してください。これでメールが送信されます。
次に送信されたメールの例を示します。

    Return-Path: <manager@bulbul.example.com>
    Received: from bulbul.example.com ([172.17.28.187])
            by thrush.example.com (8.11.6/8.11.6) with SMTP id l7E0IwE15347
            for <admin@example.com>; Tue, 17 Jan 2012 09:18:58 +0900 (JST)
            (envelope-from manager@bulbul.example.com)
    Message-Id: <201201170018.l7E0IwE15347@thrush.example.com>
    Received: by bulbul.example.com (nbSMTP-1.00) for uid 0
            manager@bulbul.example.com; Tue, 17 Jan 2012 09:18:04 +0900 (JST)
    Subject: test1
    From: <manager@bulbul.example.com>
    To: <admin@example.com>
    Date: Tue, 17 Jan 2012 09:18:58 +0900 (JST)

    This is a test.

fileパラメーターを使用すれば、テキスト形式のファイルをメール本文として送ることができます。次の例では、カレントディレクトリーにあるテキストファイル「mailbody.txt」をメール本文として管理者に送信します。

    awplus# mail to admin@example.com subject test2 file mailbody.txt
    Sending /var/spool/mqueue/20120202043556.13821... ok.

Note

リダイレクションを使用し、任意のコマンド出力をファイルに書き出すことで、該当ファイルをメール本文として送ることもできます。

メール機能の設定やメール送信キューの状態を表示するには特権EXECモードのshow mailコマンドを使います。

    awplus# show mail
    Mail Settings
    ------------------------------------------------------------
    State                              : Alive
    SMTP Server                        : 172.17.28.1
    Host Name                          : manager@bulbul.example.com
    Port                               : 25
    Debug                              : Disabled

    Messages
    ------------------------------------------------------------
    To                                 : admin@example.com
    Subject                            : test3
    Message-ID                         : 20120202043645.30177

メール送信キュー内のメールを削除するには特権EXECモードのdelete mailコマンドを使います。上記show mailコマンドの出力例で表示されているメッセージID「20120202043645.30177」のメールを削除するには、次のようにします。

    awplus# delete mail mail-id 20120202043645.30177
    awplus# show mail
    Mail Settings
    ------------------------------------------------------------
    State                              : Alive
    SMTP Server                        : 172.17.28.1
    Host Name                          : manager@bulbul.example.com
    Port                               : 25
    Debug                              : Disabled

    Messages
    ------------------------------------------------------------
    There is no mail in the queue.

## 高度な機能

### 暗号化通信（TLS）

SMTPではメールサーバーとのやりとりを暗号化なしの通信（平文）で行いますが、本製品では設定により暗号化通信（TLS）を利用することもできます。
メール送信時の暗号化通信にはTLSの開始タイミングによって次の2つの方式があります。
本製品ではどちらの方式も利用可能です。

- STARTTLS - いったん平文で接続した後、SMTPのSTARTTLSコマンドを発行してTLS通信に移行し、その上でSMTPのやりとりを行う
- SMTPS - 最初からTLSで接続し、その上でSMTPのやりとりを行う

暗号化通信の設定は、基本設定が終わった後にmail smtpserver tlsコマンドで行います。
STARTTLSを使うにはmail smtpserver tlsコマンドでstarttlsを指定します。
STARTTLSを有効にした場合、デフォルトではメールサーバーのTCPポート587に接続します。他のポートに接続したいときはmail smtpserver portコマンドで接続先ポートを明示的に設定してください。

    awplus(config)# mail smtpserver tls starttls

SMTPSを使うにはmail smtpserver tlsコマンドでsmtpsを指定します。
SMTPSを有効にした場合、デフォルトではメールサーバーのTCPポート465に接続します。他のポートに接続したいときはmail smtpserver portコマンドで接続先ポートを明示的に設定してください。

    awplus(config)# mail smtpserver tls smtps

暗号化通信を無効にするにはmail smtpserver tlsコマンドをno形式で実行します。
暗号化通信の無効時は、デフォルトでメールサーバーのTCPポート25に接続します。他のポートに接続したいときはmail smtpserver portコマンドで接続先ポートを明示的に設定してください。

    awplus(config)# no mail smtpserver tls

### メール送信時認証（SMTP認証）

本製品のメール送信機能はSMTP認証に対応しているため、送信時に認証を要求するメールサーバーも利用可能です。
SMTP認証の設定は、基本設定が終わった後にmail smtpserver authenticationコマンドで行います。
同コマンドの実行に必要な情報は、使用する認証方式（CRAM-MD5、LOGIN、PLAINのいずれか）とユーザー名、パスワードです。
Note

SMTP認証は暗号化通信（TLS）の有効・無効に関係なく利用可能です。

たとえば、認証方式CRAM-MD5、ユーザー名manager、パスワードterCe2u2T1m!hでSMTP認証を行うよう設定するには、次のようにします。

    awplus(config)# mail smtpserver authentication crammd5 username manager password terCe2u2T1m!h

SMTP認証の設定を削除し、メール送信時の認証を行わない設定に戻すには、mail smtpserver authenticationコマンドをno形式で実行します。

    awplus(config)# no mail smtpserver authentication

### OAuth 2.0

本製品のメール送信機能は、OAuth 2.0を使用したメール送信時認証をサポートしています。
Note

OAuthプロバイダーは、GoogleとMicrosoftをサポートします。

Note

GoogleをOAuthプロバイダーに指定した場合、サポート対象となるのは有償のGoogle Workspaceアカウントのみです。無償版アカウントは未サポートとなります。

Note

MicrosoftをOAuthプロバイダーに指定した場合、以下のサブスクリプションを事前に用意する必要があります。

- Azureサブスクリプション
- Microsoft Entraサブスクリプション
- Outlook Onlineサブスクリプション（最低1ユーザー設定済み）

#### 設定方法

OAuth 2.0を使用したメール送信時認証を行うための簡易的な設定方法を説明します。なお、以下設定方法の前提として、IPレベルおよびDNSの設定は終わっているものとします。

1. OAuthプロバイダーの設定画面上（Google Cloud コンソールまたは Microsoft Azureポータル）でアプリケーションを登録します。本設定例では、OAuthプロバイダーにGoogleを選択し、以下登録情報を取得したものとします。

   表 1
   OAuthプロバイダーに登録されている情報
   送信元メールサーバー | smtp.gmail.com
   送信元メールアドレス | test@gmail.com
   クライアントID | sample.apps.example.com
   クライアントシークレット | dummy1234

   Note

   アプリケーションのRedirect-URIは、「http://localhost」を登録してください。

   Note

   送信元メールサーバー、送信元メールアドレス、クライアントID、クライアントシークレットの取得方法に関する詳細は、OAuthプロバイダーの各種公開情報をご確認ください。

2. メール送信機能を使用するための各種設定を行います。
   - 送信用メールサーバー（SMTPサーバー）の指定（mail smtpserverコマンド）
   - STARTTLSの有効化（mail smtpserver tlsコマンド）
   - 送信元メールアドレスの指定（mail fromコマンド）

       awplus(config)# mail smtpserver smtp.gmail.com
       awplus(config)# mail smtpserver tls starttls
       awplus(config)# mail from test@gmail.com

3. SMTPサーバーの認証方法に、OAuth 2.0を指定します。これにはmail smtpserver authentication oauth2コマンドを使用し、SMTP OAuth設定モードに移行します。

       awplus(config)# mail smtpserver authentication oauth2

4. usernameコマンドを使用して、設定手順1で取得した各種設定情報を入力します。

       awplus(config-smtp-oauth)# username test@gmail.com provider google client-id sample.apps.example.com client-secret dummy1234
       awplus(config-smtp-oauth)# end

5. show mail oauth2 urlコマンドを使用して、認可コード（OAuth code）を取得するためのURLを生成します。

       awplus# show mail oauth2 url
       Visit:
       https://accounts.google.com/o/oauth2/v2/auth?client_id=sample.apps.example.com&redirect_uri=http://localhost&response_type=code&scope=https://mail.google.com/&prompt=consent&access_type=offline

6. インターネットへの接続が可能なパソコンでブラウザーを開き、手順6で生成したURLをアドレスバーに入力してアクセスすると、ブラウザーがリダイレクトされ、アドレスバーの表示がリダイレクト先のURLに変更されます。このURLに認可コード（OAuth code）が含まれていますので、これをコピー＆ペーストなどで取得します。

   Note

   認可コード（OAuth code）は、https://localhost/?code=に続く文字列を取得してください。

7. 本製品上でmail oauth2 codeコマンドを実行して、手順6で取得した認可コード（OAuth code）を入力してください。本コマンドが実行できた場合、メール送信が可能となります。

       awplus# mail oauth2 code
       Enter the OAuth code: xxxxyyyyzzzz

設定は以上です。
show mailコマンドを使用することで、OAuth 2.0に関する設定を確認できます。

    awplus# show mail

### 送信先TCPポートの変更

近年、迷惑メール対策として、前述のメール送信時認証（SMTP認証）に加え、SMTP標準ポートであるTCP 25番ポート宛て通信の遮断が広く行われています（Outbound Port 25 Blocking）。
そうした環境ではメール送信用サーバーが587番（submission）などの代替ポートで待ち受けているケースがよく見られますが、本製品のメール送信機能ではmail smtpserver portコマンドでメール送信時の接続先ポート番号を変更することができます。
たとえば、送信先TCPポートを587番に変更するには、次のようにします。

    awplus(config)# mail smtpserver port 587

送信先TCPポートを標準の25番に戻すには、mail smtpserver portコマンドをno形式で実行します。

    awplus(config)# no mail smtpserver port

Note

上記コマンド例の説明（「標準の25番に戻す」）は暗号化通信（TLS）が無効な場合を想定しています。
TLS使用時は送信先TCPポートの初期値が下記のように変動します。

TLS通信 | TCPポート初期値
無効 | 25 (smtp)
有効（STARTTLS） | 587 (submission)
有効（SMTPS） | 465 (smtps)

### メール件名へのシステム情報埋め込み

mailコマンドのsubjectパラメーターで指定するメール件名（タイトル）内では、下記の変数を用いることでシステムに関する情報を埋め込むことができます。

変数名 | 内容
%N | ホスト名。hostnameコマンドで設定したもの
%S | シリアル番号
%T | システム日時（ローカル時刻）
%D | システム日時（ローカル時刻）
%L | システム日時（ローカル時刻）
%U | システム日時（UTC）

Note

%T、%D、%L は同じ内容です。また、タイムゾーン（clock timezoneコマンド）がUTCの場合は %U も同じ内容になります。

たとえば、次のようにしてメールを送信した場合、

    box301# mail to manager@example.com subject "%N (%S) %T"

件名として指定した文字列中の変数 %N、%S、%T は前記のシステム情報に展開されるため、実際に送信されるメールの件名は次のようになります。

    box301 (X000000000000000) 2018-06-28T10:04:32+0900