Google Cloud PlatformのGCEでCentOS7のVMインスタンスをインストールしてメール送信設定

本番サーバーに対してPing死活監視するサーバーを準備しているときの覚書。

GCE(Google Compute Engine)の無料枠を使う。

参考サイト


無料枠にするための注意点
  • マシンタイプを「f1-micro」を選ぶ
  • リージョンを「us-west1」を選ぶ(us-east1, us-central1も無料枠の対象)
  • 条件が変わる可能性が大いにあるので、公式ドキュメントをよく読む

このVMには頻繁にログインしないので「ブラウザからのSSH」で十分。
どうしてもTeratermでログインしたい場合は結構面倒くさい作業が必要。


稼働中のサービス確認
$ systemctl list-units --type=service

登録されている全サービス確認
$ systemctl list-unit-files --type=service


サブドメインをCloud DNSで管理する設定

Cloud DNSを使うと良さそうな気がしたのでやってみた。
Cloud DNSでゾーンを作成した後にName Serverが表示されるので、レジストラのDNSを変更する。
value-domainの場合の例。
ns gcp ns-cloud-a1.googledomains.com.
ns gcp ns-cloud-a2.googledomains.com.
ns gcp ns-cloud-a3.googledomains.com.
ns gcp ns-cloud-a4.googledomains.com.


エフェメラル(ephemeral)な外部IPをCloud DNSで動的に変更したい
エフェメラルだとVMが再起動したときに変わってしまう(参考:IP アドレス | Compute Engine ドキュメント | Google Cloud)。

Cloud DNSを使うと簡単に設定できるかと思ったら、APIを叩く必要があるみたい。


もう少しスマートなやり方がありそうな気もする。


メール設定

mailコマンドを使いたいのでmailxをインストール
$ sudo yum install mailx

MTA(メール転送エージェント)にPostfixが使われているか確認
$ alternatives --config mta

postfix設定
$ sudo less /etc/postfix/main.cf
myhostname = monitoring.gcp.sample.com
mydomain = gcp.sample.com
myorigin = $mydomain
inet_interfaces = localhost
mydestination = localhost.$mydomain, localhost
postfix再起動
$ sudo systemctl restart postfix


さっき設定したCloud DNSでSPFの設定をしておく。

メール送信テスト
$ mail hoge@gmail.com

メールログ確認
$ journalctl -u postfix

メールが送れてない。
GCEではデフォルトのポートを使ったメール送受信は許可されていない(参考:インスタンスからのメールの送信 | Compute Engine ドキュメント | Google Cloud

SendGridというサービスを中継して使う。毎月12,000通まで無料。
会員登録するためには審査が必要(通常2営業日以内)。


公式ドキュメント通りにインストール&設定する
丁寧に書かれているので特に迷う事はない。
SendGridへのアクセスはAPI Keyで行うようにした。

メール送信テスト
$ mail hoge@gmail.com

メールログ確認
$ journalctl -u postfix

送れた。


関係ないけどCentOS7なのに/var/log/maillogがある。
あとでうちのサーバーにもこの設定を参考にさせてもらう。


タイムゾーンの設定

タイムゾーンの一覧表示して設定
$ sudo su -
# timedatectl list-timezones
# timedatectl set-timezone Asia/Tokyo

確認
# timedatectl
      Local time: Wed 2019-05-08 14:06:50 JST
  Universal time: Wed 2019-05-08 05:06:50 UTC
        RTC time: Wed 2019-05-08 05:06:50
       Time zone: Asia/Tokyo (JST, +0900)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a


【関連記事】