皆様、こんにちは。データソリューション部の山本です。
今回の内容はOracle Cloudの電子メール配信サービスを利用したアラート通知に関する設定についてです。
お客様が他社のCloudも利用しており、同様にCloud環境から送付したいとのご要望から電子メール配信サービスを検討しました。今はOracle社からPostfixの設定情報が公開されていますが、案件の対応時は日本人に馴染みが無いツールで公開されていました。運用のしやすさを考慮して、馴染みあるPostfixで送付できないか手探りで検討した内容です。その他に以下の内容も考慮しています。
- 送付するメールはセキュリティを考慮(SASL認証)
- お客様の利用するメーラーで文字化けさせない
- パッとみて分かり易いよう日本語で送付
本件は過去に対応した案件を2019年10月に再確認した内容です。
前提内容
- 本設定は Oracle Cloud の「Always Free」環境で確認した内容です。
- コンピュートは東京リージョンに配置(構築済み状態)し、電子メール配信サービスはアッシュバンリージョンを使用しています。(東京リージョンではSMTPサービスがまだ無い為)
- メール送付するユーザは、テナントを作成したユーザに定義を追加しています。
検証環境概要
環境区分 | 環境情報 | 補足内容 |
---|---|---|
コンピュート | Red Hat Enterprize Linux 7.7 | |
Postfix 2.10.1 |
アラートメールの送付設定
アラートメールを送付する為には、以下のステップで環境を準備する必要があります。設定時に注意が必要な内容を含めて話をしたいと思います。
- ステップ1:Oracle CloudのSMTP設定
- ステップ2:Postfixの認証(SASL)設定
- ステップ3:アラートメール送付
ステップ1:Oracle CloudのSMTP設定
Oracle Cloudにログイン後、左上のハンバーガーメニューで、「アイデンティティ」→「ユーザー」の順に展開して、認証済みのユーザを選択する。
画面左の「SMTP認証証明」をクリックする。
「SMTP認証証明の生成」をクリックしてポップアップ画面で、説明項目に任意の名称を入力して、「SMTP資格証明の生成」をクリックする。(本手順では説明項目を「メール送付」として設定しています)
「ユーザー名」と「パスワード」をステップ2で使用するのでコピーして、テキストなどに保存しておく。
※パスワードはPostfixのSASL設定する際に必要となりますが再表示させることができない為、紛失すると再定義となります。
Oracle Cloudにログイン後、左上のハンバーガーメニューで、「電子メール配信」→「電子メールの承認済送信者」の順に展開する。
「承認済送信者の作成」をクリックする。
「電子メール・アドレス」にSMTP資格設定を追加したユーザのメールアドレスを入力して、「承認済送信者の作成」をクリックする。
2019/10時点で「Japan East(Tokyo)」に電子メール配信サービスがない為、リージョンを「US East(Ashburn)」に変更する。
リージョンを変更後、左上のハンバーガーメニューで、「電子メール配信」→「電子メール構成」の順に展開する。
SMTPサーバの情報はステップ2で使用するので、テキストなどに保存しておく。
ステップ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サイトを参考にしています。
# 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
※OutlookやThunderbird、Android(携帯)で通知内容を確認していますが、文字化けはしていません。
最後に
最後になりますが、弊社は「データベースのオールマイティ企業」を謳っており、データベースに関する経験や知識、技術力を自負しています。
データベース関連での課題解決等、必ずやお客様のお役に立てると信じていますので、何かございましたら弊社へご連絡下さい。
それでは、次回をお楽しみに!
- カテゴリ:
- エンジニアリング