GCPのインスタンス上でメールを送信する(SendGrid+postfix)


はじめに

GCP Compute Engineインスタンスからは単独でメールを送信する事ができません。
メールが使えないと不便な事が多いですよね。
ここでは「SendGrid」というクラウドサービスを使い、インスタンス上からメールを送信する手順を紹介します。

SendGridとは

米SendGrid社によって2009年から提供されているクラウドベースのメール配信サービスで、月間3億通超のメール配信を行っているそうです。
このサービスには無料プランがあり、1日あたり100通以内のメール配信であれば無料で利用する事ができます。
詳細は「Pricing - SendGrid」をご覧ください。

SendGrid登録

以下の手順でSendGridにフリーアカウントを登録します。この時点ではクレジットカードの登録は必要ありません。

  1. トップページより「Sign Up」をクリックします
  2. 次のページ(価格一覧ページ)で「Try for Free」をクリックします
  3. 必要項目を入力し「Create Account」をクリックします
  4. プロフィールを入力し「Save」をクリックします
  5. 確認メールが届くので「Confirm Email Address」をクリックします

以上で登録は完了です。
※「Settings - Account Details」メニューよりタイムゾーンを変更しておくのをおすすめします。

APIキーの作成

サーバからSendGridを使用するため、以下の手順でAPIキーを作成します。

  1. 「Settings - API Keys」をクリックします
  2. 「Create API Key」をクリックします
  3. APIキーの名前とアクセス権限を設定し、「Create & View」をクリックします
  4. 完了画面に表示されるAPIキーをメモしておきましょう(※このキーは二度と表示されません
  5. 「Done」をクリックします

以上でAPIキーの作成は完了です。

アクセス元IPアドレスの制限

もしメール配信を利用するサーバが固定IPアドレスを持っている場合、こちらの設定をおすすめします。
この設定を行った場合、許可IPアドレス外からメールを配信する事ができなくなります

  1. 「Settings - IP Access Management」をクリックします
  2. 「+ Add IP Addresses」をクリックします
  3. 初回は同意画面がでますので、確認のうえチェックボックスにチェックし「Confirm and Continue」をクリックします
  4. 「IP address(es) or range」の欄にIPアドレスまたはIPアドレス範囲を記入します
  5. 「Save」をクリックします

Postfixインストール

今回はメールサーバとしてPostfixを使用します。
yumを使い以下の手順でインストールします。

yum -y install postfix cyrus-sasl-plain cyrus-sasl-md5 mailx

次に、postfix設定ファイルを開き、以下の内容を追記します。
「[PASTE_YOUR_KEY]」の部分は、先ほど作成したAPIキーを設定しましょう。

/etc/postfix/main.cf
# configure sendgrid
relayhost = [smtp.sendgrid.net]:2525
smtp_tls_security_level = encrypt
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = static:apikey:[PASTE_YOUR_KEY]
header_size_limit = 4096000
smtp_sasl_security_options = noanonymous

設定が完了したら、postfixの設定をリロードします。

postfix reload

これでサーバ上からメールが送信できるようになりました。
以下のコマンドにてテストメールを送ってみましょう。

echo 'This is test mail.' | mail -s TestMail [YOUR_MAIL_ADDRESS]