【Google Compute Engine】【Ubuntu 22.04】メール配信サービス Mailjetを使ってVMリブート検知のメールを作る

Google Compute Engine】【Ubuntu 22.04】メール配信サービス Mailjetを使ってVMリブート検知のメールを作る

GCPには、OCIのようなメール配信サービス「Email Delivery」がありません。
なのでインターネット上にある他のサービスを利用します。
GCPのドキュメントにもあるSendGrid,Mailgun, Mailjetなどがあったので、そのうちMailjetを使ってみました。

Mailjetにアカウント登録

MailJetにアカウント登録後SMTPの内容(SMTP and SEND API Settings)を確認します。
デフォルトではパスワード(SECRET KEY)が生成されていないみたいで、
「Generate Secret Key」をクリックしてIDと生成されたパスワードをコピペして保存しておきます。
作成すると以下の画面のようになりますが、パスワードは2度と表示されないみたいなので 要注意です。

また画面にあるようにサーバ名とポートは以下のようになっています。

メールサーバ:in-v3.mailjet.com
ポート:587

Ubuntuにメール送信クライアントを入れる

Ubuntuにもmailxコマンドがあるのですが、
Redhat系のmailxコマンドとは違うようでbsd-mailxなどをインストールするとサーバソフトもインストールされます。
期待していることと違うので、同様のことができるソフト msmtpをインストールします。

# apt install msmtp msmtp-mta

msmtpの設定ファイル

サンプルをコピーします。

# cp /usr/share/doc/msmtp/examples/msmtprc-system.example /etc/msmtprc

/etc/msmtprcファイルを以下のように書き換えました。 上のdefaultsの箇所は使いません。
user, passwordは、mailjetsのサイトのAPI KEYのIDとSECRET KEYSです。
TLSは使わず、authだけ使う場合は、auth login と書くようです。
fromのメールアドレス(from_hogehoge@gmail.com)は、mailjetにログインしたメールアドレスです。
別途mailjetにはメールアドレスを登録できる箇所もあるので、必要だったら変えた方がよいと思います。

# Example for a system wide configuration file

defaults
host mail.oursite.example
port 465
tls on
tls_starttls off
from %U@oursite.example
syslog LOG_MAIL

#-------------------- my settings
# mail service
account mailjet
host in-v3.mailjet.com
port 587
from from_hogehoge@gmail.com
user 4ed.....65aa66a51d
password 26bfea.....02339
auth login
tls off
tls_starttls off
syslog on

# Set a default account
account default : mailjet

送信テスト

デバッグオプションを付けて、確認します。to_hogehoge@gmail.comにメール送信します。

echo "vm rebooted on `date`."  |  msmtp -d  to_hogehoge@gmail.com

リブートしたときに実行するようにcron.dにファイルを置きます。

/etc/crond.d/reboot-mail

reboot root /etc/reboot-mail/send.sh

/etc/reboot-mail/send.sh

#!/bin/sh

printf "Subject: GCP VM rebooted" > /etc/reboot-mail/mail.txt
printf "\n\n" >> /etc/reboot-mail/mail.txt
printf "rebooted on `date`" >> /etc/reboot-mail/mail.txt

msmtp to_hogehoge@gmail.com < /etc/reboot-mail/mail.txt
# chmod +x /etc/reboot-mail/send.sh
# chown root:root /etc/reboot-mail/send.sh