【GCP】 GCEにおけるメール送信方法

概要

VPC ネットワークとファイアウォール  |  Compute Engine ドキュメント  |  Google Cloud Platform

Compute Engine では、次のポート / プロトコルを使用したインターネットと仮想マシン間のトラフィックがすべてブロックまたは制限されます。また、このようなポートを通じたトラフィックの宛先が外部の IP アドレス(負荷分散されているアドレスも含まれます)になっている場合は、2 台の仮想マシン間のトラフィックもブロックまたは制限されます。

 ・ポート 25 を宛先とする送信トラフィック(SMTP)はすべてブロックされます。

 ・ポート 465 または 587 を宛先とするほとんどのトラフィック(SMTP over SSL)がブロックされます。ただし、既知の Google IP アドレスを除きます。

ということで、普通にPostfixをインストールしただけではメールが全く送信できないので、下記のような対策が必要となる。

  • サードパーティのメール配信サービスを使用する
  • GCE外に存在するメールサーバーへ、ブロック対象外のポートを使用してメールをリレーするように設定する
  • VPN経由で外部メールサーバーへ接続するように設定する

サードパーティのメール配信サービスを使用する

  • Sendgrid
  • Mailgun
  • etc…

アプリケーションの設定等で参照するSMTPサーバーの設定を行ったり、
各サービスのWebAPI等を用いてメールを送信できるように実装・設定する。

また、サーバー内のSMTPデーモン (Postfix等) から出来る限り自然にメールを送信できるようにしたい場合でも、
ブロックされている標準のwell-knownポート (TCP:25等) ではなく、
TCP:2525 といった適当なポートを使用して、SMTPエンドポイントへメールをリレーするように設定する必要がある。

参考

GCE外に存在するメールサーバーへ、ブロック対象外のポートを使用してメールをリレーするように設定する

インスタンスからのメールの送信  |  Compute Engine ドキュメント  |  Google Cloud Platform

標準メールポートはブロックされていますが、メールの送信に使用する標準以外のポートを選択することができます。

使用するドメインのメールサーバー (GCE外) の設定を変更できる場合、
当該メールサーバーにて、標準のwell-knownポート以外でメールリレーを受け付けるように設定を行った上で、
前述の “サーバー内のSMTPデーモン (Postfix等) からメール送信できるようする” のようなメールリレー設定を行えば、
このポート制限を回避できる。

VPN経由で外部メールサーバーへ接続するように設定する

  • VPN接続が切れるとメールが送れなくなるので、VPN接続の冗長化や監視といった考慮が必要
  • VPN接続料金が掛かる

等の理由より、特別な事情がない限り避けたい……