0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GCPで外部メールサーバーを利用する手順

Last updated at Posted at 2024-11-12

背景

WebアプリをGCPでホストしていますが、メールサーバーは先方指定のものを使わなければならなくなりました。その際に行った手順を解説します。

ステップ①:権威DNSを設定する

ドメイン取得会社(今回はお名前ドットコム)の「他のネームサーバーを使用」から権威DNSを指定します。
ここでGCP指定のDNS, ns-cloud-d1.googledomains.com~ns-cloud-d5.googledomains.com を指定します。
複数のDNSを登録するのは、一つが対応できなくなったときに他のDNSがカバーするためです。

ステップ②: DNSレコードの設定

GCPの「DNS Cloud」にて権威DNSのレコード設定を行います。
今回指定するレコードは、MX, TXT(DKIM), SPFです。

DNS名 種類 情報
example.com MX mail.server.com
default._domainkey.example.com TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqhki....
example.com SPF "v=spf1 +mx +a +ipx.x.x.x ~all"
  • MXは、メールをメールサーバーに送信するためのものです。ここで、Aレコードでも同じホスト名にIPアドレスを割り当てていますが、衝突は起こりません。メールの場合はsmtp, webの場合はhttp, httpsという異なるプロトコルを使っているからという理解です。
  • SPFは、ドメイン(example.com)の送信するメッセージが、リストされたサーバーから送信されたものであることを検証します。
    「リストされたサーバー」とは、+mx(MXレコードで指定したサーバー), +a(Aレコードで指定されたIPアドレス)などを指します。
    逆にリストされてないサーバーから送られていると不正なものである可能性が高いと言うことです。
  • DKIMは、RSA暗号を用いて送信者の認証とメッセージが改ざんされていないかを検証します。Cloud DNSで情報を入れる場合は少し注意が必要で下記のように、文字列を分割する必要があります。
"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCBQ8AMIIBCgKCAQEAraC3pqvqTkAfXhUn7Kn3JUNMwDkZ65ftwXH58anno/bElnTDAd/idk8kWpslrQIMsvVKAe+mvmBEnpXzJL+0LgTNVTQctUujyilWvcONRd/z37I34y6WUIbFn4ytkzkdoVmeTt32f5LxegfYP4P/w7QGN1mOcnE2Qd5SKIZv3Ia1p9d6uCaVGI8brE/7zM5c/" "zMthVPE2WZKA28+QomQDH7ludLGhXGxpc7kZZCoB5lQiP0o07Ful33fcED73BS9Bt1SNhnrs5v7oq1pIab0LEtHsFHAZmGJDjybPA7OWWaV3L814r/JfU2NK1eNu9xYJwA8YW7WosL45CSkyp4QeQIDAQAB"

ステップ③:メールを送信してみる

Flask-Mailでメールを送信してみます。

def send_mail():
    msg = Message(
        subject="Hello from Flask-Mail",
        recipients=["hello@hello.com"],
        body="This is a test email sent from a Flask app using Flask-Mail."
    )
    
    mail.send(msg)
    return "Successful"

届きました↓
image.png

終わり

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?