Gmailに「Gmail を使用して他のメール アドレスからメールを送信します」って機能があるけど、これってGmailのSMTPサーバーから送信してるから送信元を証明するあれこれのDNS設定と合致しなくてエラーになるよね、って話。Gmailの問題なんだからGmailがちゃんと対応すべきだと思うんだけど、中の人の気持ちになって考えるとなんの設定もせずGmailのSMTPサーバーが使えてたのは10年前とかなので、いい加減現代の設定でやり直せよってことかもしれない。
DNSの設定
正直よくわからないのでこの辺を見て適当に。
- Gmailが2024年2月から(大量)送信者に求めてることが分からない闇への防衛術(前編) #Security - Qiita
- Gmailが2024年2月から(大量)送信者に求めてることが分からない闇への防衛術(後編) #Security - Qiita
- SPF レコードを定義する: 基本設定 - Google Workspace 管理者 ヘルプ
- ドメインで DKIM を有効にする - Google Workspace 管理者 ヘルプ
- DMARC レコードの追加 - Google Workspace 管理者 ヘルプ
DKIMのツールだけど、公開鍵?を生成してもすぐにUIに反映されないので、もう1回生成すると1つ前の文字列が出てきて、それをDNSに設定してもダメという挙動をしてて、気がつくのにだいぶ時間がかかりました。
SMTPサーバーの設定
理屈としてはこの辺の合わせ技です。
- プリンタ、スキャナ、アプリからのメール送信 - Google Workspace 管理者 ヘルプ
- 独自ドメインのメールをGmailから送信するとDMARCが失敗するのをSendGridを使って解決 - ncaq
- 【GWS】SMTPサーバー:smtp.gmail.com を利用したメール送信 | GROUP DEV BLOG | TECHNO DIGITAL
手順としてはこんな感じ。
- Google Workspace 側のユーザーでアプリパスワードを生成。こういうのOAuth的なやつで必要な権限だけ渡すとかできないんですかねえ
- Gmail側のユーザーで「Gmail を使用して他のメール アドレスからメールを送信します」からSMTPサーバーを設定する
- テストメールを送ってみたらFromが Google Workspace 側のユーザーになってる(Fromにしたかったものが X-Google-Original-From になってる)ので、ちょっといじりたい
- Google Workspace の管理者ツールで「予備のメールアドレス」を設定。複数設定するときには複数まとめて設定しないとダメ
- Google Workspace 側の「example.com メール を使用して他のメール アドレスからメールを送信します」から予備のメールアドレスを登録
- テストメールを送ってみたらFromが出したかったアドレスになってる。ソースを見ても Google Workspace 側のユーザーのアドレスは出てない
- 予備のメールアドレスはエイリアスなので、そのアドレスに送ると Google Workspace 側のユーザーに届く。必要に応じて転送設定を調整する
でもまあいろいろ考えると Google Workspace 側のユーザーからメールを送信するのが一番シンプルでよさそうなので、そのようにした。