Google Cloud PlatformのGCEでCentOS7のVMインスタンスをインストールしてメール送信設定
本番サーバーに対してPing死活監視するサーバーを準備しているときの覚書。
GCE(Google Compute Engine)の無料枠を使う。
参考サイト
無料枠にするための注意点
このVMには頻繁にログインしないので「ブラウザからのSSH」で十分。
どうしてもTeratermでログインしたい場合は結構面倒くさい作業が必要。
稼働中のサービス確認
$ systemctl list-units --type=service
登録されている全サービス確認
$ systemctl list-unit-files --type=service
Cloud DNSでゾーンを作成した後にName Serverが表示されるので、レジストラのDNSを変更する。
value-domainの場合の例。
エフェメラル(ephemeral)な外部IPをCloud DNSで動的に変更したい
エフェメラルだとVMが再起動したときに変わってしまう(参考:IP アドレス | Compute Engine ドキュメント | Google Cloud)。
Cloud DNSを使うと簡単に設定できるかと思ったら、APIを叩く必要があるみたい。
もう少しスマートなやり方がありそうな気もする。
$ sudo yum install mailx
MTA(メール転送エージェント)にPostfixが使われているか確認
$ alternatives --config mta
postfix設定
$ sudo less /etc/postfix/main.cf
$ 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
【関連記事】
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.compostfix再起動
mydomain = gcp.sample.com
myorigin = $mydomain
inet_interfaces = localhost
mydestination = localhost.$mydomain, localhost
$ 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
【関連記事】