GCPでSendGrid使ってメールを送る

やること

  • GCPのインスタンスからSendGridを返してメールを送信

今回はGCPからSendGridを使ったメールの送信方法を紹介します。

環境

僕の環境は

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.6 LTS"

はじめに

GCPのドキュメントは少し足りなかったので、付け加える感じで書いています。

初期インストール

まずは、GCPのドキュメンを読んで、SendGridのAPIKeyを取得してくるところまでやってみてください。
そしたら

sudo su -
Umask 077 
apt-get update && apt-get install postfix libsasl2-modules -y

を実行して Postfix Mail Transport Agent を入れます。

そしてここからGCPのドキュメントと変わります

/etc/postfix/main.cf を編集する

存在確認

ls /etc/postfix/main.cf
をして main.cfが存在するか確認してください。

ある場合は次に行ってください
ない場合は

 cp /usr/share/postfix/main.cf.dist /etc/postfix/main.cf

を実行してmain.cfの雛形を持ってきてください

追記

relayhost = [smtp.sendgrid.net]:2525
smtp_tls_security_level = encrypt
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
header_size_limit = 4096000
smtp_sasl_security_options = noanonymous

をファイルの最後尾に追加してください。

注意ポイント

そしてその少し上に
html_directory = のように = の後ろに何もない項目があると思います。
それも追加します。

もし追加しないと

[email protected]:~# postmap /etc/postfix/sasl_passwd
postmap: fatal: bad string length 0 < 1: setgid_group =

というエラーにあたります。

以下のように書き換えてください。
コピペしちゃって大丈夫です。

sendmail_path = /usr/sbin/postfix

# newaliases_path: The full pathname of the Postfix newaliases command.
# This is the Sendmail-compatible command to build alias databases.
#
newaliases_path = /usr/bin/newaliases

# mailq_path: The full pathname of the Postfix mailq command.  This
# is the Sendmail-compatible mail queue listing command.
#
mailq_path = /usr/bin/mailq

# setgid_group: The group for mail submission and queue management
# commands.  This must be a group name with a numerical group ID that
# is not shared with other accounts, not even with the Postfix account.
#
setgid_group = postdrop

# html_directory: The location of the Postfix HTML documentation.
#
# html_directory =

# manpage_directory: The location of the Postfix on-line manual pages.
#
# manpage_directory =

# sample_directory: The location of the Postfix sample configuration files.
# This parameter is obsolete as of Postfix 2.1.
#
# sample_directory =

# readme_directory: The location of the Postfix README files.
#
# readme_directory =
inet_protocols = ipv4

これができたらあとは大丈夫です。

postfixのセットアップ

postmap /etc/postfix/sasl_passwd
rm /etc/postfix/sasl_passwd
chmod 600 /etc/postfix/sasl_passwd.db

を実行してpostfixを再起動して、mailxパッケージを導入します

/etc/init.d/postfix restart
apt-get install mailutils -y

送信テスト

以下のコマンドでメールが送信できたら大丈夫です。

echo 'test body' | mail -s 'test subject' [email protected]

ログを見てうまく行ってるか確認してみてください

tail -n 5 /var/log/syslog


これで以上になります。