目次
オンプレミスにメールサーバがあった時代には、Zabbixなどの監視ツールやSAP内からのメール送信は、オンプレミスのSMTPサーバを使用し、SMTPサーバでの認証等もなく、トラブルことも少なかったと思います。
最近では、Office365の利用が増えています。その際に、社内のSMTPサーバを廃止されるケースがあります。そのような環境で、監視ツールなどからのメール送信に、Office365のSMTPサーバを使用するケースがあります。
今回、紹介するのは、Office365のSMTPサーバを使用し、ZabbixとSAPからメールを送信する方法です。
AWSからメール送信の制限解除
AWS EC2上からインターネットに対するメール送信は、通信量が制限されています。AWSへの制限解除申請が必要です。詳しくは、AWSのFAQを参照してください。
Office365のSMTPを使用して、メールを送信する際の留意点
次にSMTPサーバを使用し、メールを送信します。Offce365のSMTPサーバは、インターネットからアクセスできるようになっていますが、スパムメール等の送信を避けるため、メール送信(SMTP)で認証が必要であったり、送信先に制限があります。
SMTPサーバへの接続方法により、送信できる宛先は次の制限があります。送信先がOffice365ユーザのみ場合には、2.SMTPサーバで認証せずメール送信(今までの方法)を使うことができます。詳しくは、Office365のサポートサイトを見てください。
メール送信方法 | 1.SMTPサーバーにユーザ・パスワード認証を行いメール送信 | 2.SMTPサーバーで認証せずメール送信(今までの方法) | 3.SMTPサーバーで接続元をIPアドレスで認証 |
自分のドメインの受信者への送信 | 〇 | 〇 | 〇 |
office 365を使ってインターネットへ | 〇 | × | 〇 |
送信先/ポート | smtp.office365.com / 587 (推奨) または 25 | MX エンドポイント / 25 | MX エンドポイント / 25 |
MXエンドポイントは、nslookup コマンドを使って、set type=MX を入力した上で、ドメイン名を入力すると、検索できます。
ZabbixからのOffice365 SMTPサーバを使ったメール送信
次に監視ツールのZabbixからOffice365のSMTPサーバを使って送信してみます。例としてOffice365の自分のアカウントを使用して認証していますが、Zabbixで次のように設定します。ただし、ドメイン名などは実際のものではありません。
実際にメール送信を行うと次のエラーが発生し、メール送信できません。エラー内容から正しく認証できていないようです。
調べたところ、SMTPサーバでの認証時にパスワード情報等を送信する方式には、PLAINかLOGINの方式が主に使用されていますが、Office365ではLOGINのみサポートされ、ZabbixはPLAINを使用する作りになっています。
ZabbixでOffice365のSMTPサーバを使用する場合には、認証無しか、IPアドレス認証を使用する必要があります。Office365側のIPアドレス認証を設定してあげると、他のドメインにもメール送信できることを確認できました。
ZabbixのUpgrade(3.0だと、3.0.11)で対応されるようです。下記3.0.11のマニュアルからの引用です。なお、本ブログ執筆時点での最新のZabbixは、3.0の場合3.0.7です。
SMTP authentication for e-mail Previously Zabbix would enforce PLAIN as the authentication mechanism when using username/password. Now libcurl may decide on its own which mechanism among those supported by the SMTP server to choose. With the parameters Zabbix passes to libcurl it effectively means choosing between PLAIN and LOGIN on most occasions. This is enough to enable Zabbix operation with Office 365 and should be enough for Gmail provided that “less secure apps” are allowed.
<2021年10月11日 追記>
前回の検証で使用したzabbixバージョンはSMTP認証のLOGIN方式に対応していなかったため「1.SMTPサーバにユーザ・パスワード認証を行いメール送信」が実行出来ませんでした。
今回2021年9月29日にリリースされたLTS版のzabbix 5.0.16で改めてメール送信の検証を実施したのでその結果を追記します。
尚、zabbixの導入手順はここでは割愛しますが以下の記事が参考になると思います。
Amazon Linux2で、Zabbix5.0を構築してみた
ZABBIX 5.0.16でのメール送信設定
Office365のSMTPサーバへの接続は次のように設定しました。
「自分のドメインの受信者への送信」と「Office 365 を使ってインターネットにメールを送信」(外部ドメインへの送信)の両方の結果を確認するために送信先を2つ設定します。
外部ドメインへの送信先にはGmailを設定しました。
zabbixから送信されるメールの件名とメッセージ本文は以下のように設定しました。
送信結果の確認
まずはzabbix側で送信処理の結果を確認してみます。
ステータスが「送信済」となっており、自分のドメイン(Office365)及び外部ドメイン(Gmail)の両方へのメールが正常に送信されたことが確認できます。
次に自分のドメイン(Office365)の受信結果を確認します。
zabbixで設定した件名、メッセージ本文の内容のメールが受信できています。
最後に外部ドメイン(Gmail)での受信結果を確認します。
こちらもzabbixから送信されたメールが正常に受信できています。
SAP NetWeaver ABAPからのOffice365 SMTPサーバを使ったメール送信
SAP NetWeaver ABAPからもOffice365のSMTPサーバで認証を行った上でメール送信ができます。SMTPサーバの認証は、7.31 Support Package 6、カーネル7.21以降で対応されています。
詳しくは、1747180 – SMTP via TLS and SMTP authentication を参照ください。また、Office365のSMTPを使用する場合には、2000465 – Support of AUTH LOGIN as SMTP clientも参考にしてください。
SMTP認証なしでのSAPからのメール送信
まず、SMTP認証なしで自分のメールアドレスに送信してみます。トランザクションコード: SCOTで設定を行います。下記はSMTPサーバの設定画面です。
テストメールの送信を行ってみると、受信はできますが、次のようにJunkメールに分類されてしまいました。これについては、DNS の設定で、SPF レコードに静的 IP アドレスを追加することで、迷惑メールに分類されることを避ける必要があります。詳しくは、Office365のサポートサイトを見てください。
SMTP認証有でのSAPからのメール送信
次は認証を設定してみます。先ほどとはメールホストとポートが異なり、セキュリティ設定も行います。
Office365用のユーザ名とパスワードで認証を行います。
テストメールの送信を行ってみると、期待通りにJunkメールではなく、受信できました。
まとめ
実際にメール送信のテストを行ってみると、意外にもOpenなZabbixの方がOffice365でのSMTP認証対応が遅れていたのが驚きでした。
2021年10月11日追記のzabbix 5.0.16を使用した検証の結果からSMTP認証のLOGIN方式に対応済であることが確認できました。
SAPシステムはOffice365のSMTP認証可能ですが、SAPのバージョンに注意が必要です。ある日、会社のメールシステムがOffice365に変わるからSAPで使うSMTPサーバ切り替えてと言われたら、自社のSAPバージョンがSMTP認証未対応ということがあるかもしれません。その場合には、慌てず速やかにIPアドレス認証をOffice365担当者に実施してもらってください。