Oracle Cloudの電子メール配信サービスを利用したアラート通知 ~PostfixによるSASL認証を用いたアラート通知~

技術者が語るOracle Cloud

はじめに

皆様、こんにちは。データソリューション部の山本です。

今回の内容はOracle Cloudの電子メール配信サービスを利用したアラート通知に関する設定についてです。

お客様が他社のCloudも利用しており、同様にCloud環境から送付したいとのご要望から電子メール配信サービスを検討しました。今はOracle社からPostfixの設定情報が公開されていますが、案件の対応時は日本人に馴染みが無いツールで公開されていました。運用のしやすさを考慮して、馴染みあるPostfixで送付できないか手探りで検討した内容です。その他に以下の内容も考慮しています。

  • 送付するメールはセキュリティを考慮(SASL認証)
  • お客様の利用するメーラーで文字化けさせない
  • パッとみて分かり易いよう日本語で送付


本件は過去に対応した案件を2019年10月に再確認した内容です。

前提内容

  • 本設定は Oracle Cloud の「Always Free」環境で確認した内容です。
  • コンピュートは東京リージョンに配置(構築済み状態)し、電子メール配信サービスはアッシュバンリージョンを使用しています。(東京リージョンではSMTPサービスがまだ無い為)
  • メール送付するユーザは、テナントを作成したユーザに定義を追加しています。

検証環境概要

oraclecloud01_01.png

環境区分環境情報補足内容
コンピュート Red Hat Enterprize Linux 7.7
Postfix 2.10.1

アラートメールの送付設定

アラートメールを送付する為には、以下のステップで環境を準備する必要があります。設定時に注意が必要な内容を含めて話をしたいと思います。

  • ステップ1:Oracle CloudのSMTP設定
  • ステップ2:Postfixの認証(SASL)設定
  • ステップ3:アラートメール送付

ステップ1:Oracle CloudのSMTP設定

Oracle Cloudにログイン後、左上のハンバーガーメニューで、「アイデンティティ」→「ユーザー」の順に展開して、認証済みのユーザを選択する。

oraclecloud01_02.png

画面左の「SMTP認証証明」をクリックする。

「SMTP認証証明の生成」をクリックしてポップアップ画面で、説明項目に任意の名称を入力して、「SMTP資格証明の生成」をクリックする。(本手順では説明項目を「メール送付」として設定しています)

oraclecloud01_03.png

「ユーザー名」と「パスワード」をステップ2で使用するのでコピーして、テキストなどに保存しておく。

※パスワードはPostfixのSASL設定する際に必要となりますが再表示させることができない為、紛失すると再定義となります。

oraclecloud01_04.png

Oracle Cloudにログイン後、左上のハンバーガーメニューで、「電子メール配信」→「電子メールの承認済送信者」の順に展開する。

oraclecloud01_05.png

「承認済送信者の作成」をクリックする。

「電子メール・アドレス」にSMTP資格設定を追加したユーザのメールアドレスを入力して、「承認済送信者の作成」をクリックする。

oraclecloud01_06.png

2019/10時点で「Japan East(Tokyo)」に電子メール配信サービスがない為、リージョンを「US East(Ashburn)」に変更する。

リージョンを変更後、左上のハンバーガーメニューで、「電子メール配信」→「電子メール構成」の順に展開する。

oraclecloud01_07.png

SMTPサーバの情報はステップ2で使用するので、テキストなどに保存しておく。

oraclecloud01_08.png

ステップ2:Postfixの認証(SASL)設定

本ステップで実施することは3つです。

1. 「/etc/postfix/main.cf」ファイルの追記

# vi /etc/postfix/main.cf

本手順で追加した設定

設定項目設定値補足説明
mynetworks 127.0.0.0/8 メールの中継元となるクライアントをローカルマシンのみを許可
relayhost [smtp.us-ashburn-1.oraclecloud.com]:587 配送するインターネットへの直接配送(ISPを指定)
smtp_sasl_auth_enable yes クライアントの SASL 認証を有効
smtp_sasl_password_maps hash:/etc/postfix/sasl_passwd リレー先サーバのアドレスと、認証で使用するユーザ名とパスワードを記述したファイルを指定
smtp_sasl_security_options noanonymous クライアントで使用する認証メカニズム
smtp_sasl_tls_security_options noanonymous クライアントがTLS暗号化SMTPセッションで使う、SASL認証 セキュリティオプション
smtp_sasl_mechanism_filter plain リモートSMTPサーバが提供するSASLメカニズムリストに対するSMTPクライアントフィルタ
smtp_use_tls yes リモートSMTPサーバがSTARTTLSサポートを案内時は TLSを使い、案内がなければ平文でメール

2. 「/etc/postfix/sasl_passwd」ファイルの作成

認証ファイルの作成

# vi /etc/postfix/sasl_passwd
【サンプル設定】
[smtp.us-ashburn-1.oraclecloud.com]:587
ocid1.user.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxx@ocid1.tenancy.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.t2.com
:yyyyyyyyyyyyyyyyyyyy

緑文字:SMTPとポート情報
朱文字:SMTP資格証明で設定したユーザ情報
青文字:SMTP資格証明で設定したパスワード情報

SMTP情報ユーザ情報の間に「半角スペース」、ユーザ情報パスワード情報の間は「:」の区切り文字を入れる。

3. 設定の反映

PostfixのDBファイル作成

# postmap /etc/postfix/sasl_passwd

Postfixのサービスを再起動

# systemctl restart postfix.service

ステップ3:アラートメール送付

日本人なので、日本語メールの方がわかり易いですよね。

ということでアラートメールを日本語でも送付できるように文字コードを変更して、送付する内容を検討しました。

文字コードを変更する方法は以下のQiitaサイトを参考にしています。

URL:https://qiita.com/richmikan@github/items/0aea653765e485e16945#%E3%81%93%E3%81%AE%E4%BD%9C%E6%A5%AD%E3%82%92%E8%87%AA%E5%8B%95%E3%81%A7%E8%A1%8C%E3%81%86%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88

【サンプル送付内容】
# cat test.txt
From: xxxxxxxxxx@system-exe.co.jp
To: EXE担当 <yyyyyyyyyy@system-exe.co.jp>
Subject: [xxxシステム]通知メール(テスト)
Content-Type: text/plain;charset=""UTF-8""
Content-Transfer-Encoding: base64

xxxxxxシステムでイベントが発生しました。
検知日付 : YYYY/MM/DD
検知時間 : HH:MM:SS

[イベント名]
xxxxxx
【サンプルアラート送付】
# bash ./sendjpmail ./test.txt

oraclecloud01_09.png

※OutlookやThunderbird、Android(携帯)で通知内容を確認していますが、文字化けはしていません。

最後に

最後になりますが、弊社は「データベースのオールマイティ企業」を謳っており、データベースに関する経験や知識、技術力を自負しています。

データベース関連での課題解決等、必ずやお客様のお役に立てると信じていますので、何かございましたら弊社へご連絡下さい。

それでは、次回をお楽しみに!