Gmailでカスタムドメインのメールアドレスを送受信する

Gmailを使って自ドメインをメールサーバー無しで送受信するためのアーキ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/417736/a1fe2926-a9fd-4632-b02d-a4987ada6ca4.png)

登場人物

1. **Gmail** カスタムドメイン宛メールの受信メールボックスおよび、SMTPクライアントとして
  → GoogleWorkspaceは使わない。一般アカウント。
2. **improvmx** カスタムドメイン宛メールをGmailに転送するためのMXサーバーとして
3. **SES** カスタムドメインでメール送信するためのSMTPサーバーとして(GMailでもOK)
4. **Route53** カスタムドメインのDNSとして

## カスタムドメインから受信

### Gmail

カスタムドメイン宛メールの受信メールボックスとして一般アカウントを利用。

- 受信専用であれば追加設定は不要。

### Improvmx
[Improvmx](https://improvmx.com/)
[MailgunとImprovMXの比較 \( 2025 \)](https://forwardemail.net/ja/blog/mailgun-vs-improvmx-email-service-comparison)

カスタムドメインのMXサーバーとして利用。
- Improvmxは転送専用であり、メールボックス実態は存在しない。転送先メアドのエイリアスとして利用する。
- SMTP機能は有料オプションなので使わない。

カスタムドメインと転送先メアドを設定して登録開始

![image 2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/417736/a012673d-0399-4440-8e4a-402a4a81445c.png)

転送先メアドで認証プロセスを終えると、ひとまずドメイン未検証の状態でダッシュボードがオープンし、転送ルールと、MX・SPFレコードが払い出される。

![image 5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/417736/e6c7f2b1-a224-44d4-b1d6-6d4833336e48.png)

上記、SETTINGS > DNS settingsに表示されるるMX・SPFレコードをDNSに登録後、DNS検証が完了するとセッティングがアクティベートされる。
※なお、SMTPは使わないんだけど、アクティベートにはSPF(TXT)レコードの定義も必須。

![image 7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/417736/6cdf7ccf-bfb7-403b-a67b-3734ce9d7d88.png)

**Email forwarding active**になったら`TEST`で検証メールを送信し、無事にGmailメールボックスに届いたら完了。

![](image%207.png)<!-- {"width":725} -->

## カスタムドメインから送信

### Gmail
SMTPクライアントとして

#### **1. プロフィールとSMTPサーバーを追加する**

Gmailアカウントに他のメールアドレスとして以下設定を組んだら、カスタムドメインをFROMアドレスとして利用可能となる。

1. カスタムドメインのFROM送信者名とメールアドレス
2. SMTPサーバ

`Gmail > 設定 > アカウントとインポート > 名前 | 他のメールアドレスを追加`

を開いて、カスタムドメインの送信者名とメアドを指定する。
ここに追加したメールアドレスはGASのMailAppでもメールFROMとして利用可能となる

![image 8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/417736/9e310e6d-5016-4e0a-8962-c28c288f6421.png)

#### **2. SMTPサーバーの指定**

SMTPサーバーとしてGmailとSESを比較

最も手軽なのは検索でよく出てくる自GmailアカウントのSMTPを利用する方法。
カスタムドメインの名前＆メアドをFROMにしつつ、SMTPはGmailドメインで送信者認証もサポートしてくれるのでカジュアルな送信基盤としては問題はなさそう。

一方、SESをSMTPにする場合は、カスタムメールFROM機能でカスタムドメイン(サブドメイン)から送信されるため、
GmailではエンベロープFROMヘッダにGmailメアドが露出するのに対して、SESはカスタムドメイン(サブドメイン)となる。
(厳密にはGmailの追加ヘッダ`X-Gmail-Original-Message-ID`など付記される。)

その他にも、送信クウォータとかレピュテーション要件などそれぞれ要件が異なるため、適宜選択というイメージ。今回はSESで構築する。

##### **SMTPサーバーにGMailを使う場合**

![image 9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/417736/4b0a4f07-a1cf-42cb-b04d-3d50ce453e29.png)

> FROM(表示名)=`mail@domain.to.path`
> エンベロープFROM(実際送信元)=`{アカウント}@gmail.com`
- カスタムドメインをメールFROMにして、GmailアカウントのSMTPから送信者認証つきで送信できる。
- もっとも簡単だけど、ヘッダのエンベロープFROMにGmailアドレスが受信者に露出する。

注意事項としては、SMTPサーバーのパスワードはGoogleアカウントのパスワードではなく、[アプリパスワード](https://myaccount.google.com/apppasswords)だ。
アプリパスワードの発行のためにはアカウントに二段階認証プロセスの設定が必要。

##### **SMTPサーバーにSESを使う場合**

> FROM(表示名)=`mail@domain.to.path`
> エンベロープFROM(実際送信者)=`XXXXXXXXXXXXXXXX-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX-XXXXXX@mail.domain.to.path`
- カスタムメールFROMで指定したサブドメイン(`mail.domain.to.path`)から送信者認証つきで送信できる。
- カスタムメールFROMのセッティングは必要だけど、Gmailアドレスが受信者に露出することはない。

SESでは以下、設定済のこと
- カスタムドメインのID検証、SPF、DKIM、DMARCレコード
- サンドボックス解除
- SMTP設定

![image 10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/417736/bbd52e4e-7cb4-4ccc-b3c0-7eee991f56a3.png)

#### 送信テスト

カスタムドメインからメールを送信し、SPF、DKIM認証をパスできているか確認する。
テスター[mail-tester.com](https://www.mail-tester.com/)を使うと、問題点をリスト化してくれるのでさらに捗る。