佐原瑠能の記録

個人ドメインで無料Gmailを使い、SPFと遅延の対策をする

目次

2022年あたりから、個人ドメインで無料Gmailを使ったメールのやり取りが、SPFの導入により難しくなった。環境を再構築した。

やりたいこと

  • 独自ドメインを個人メールに使用。
  • Gmailに全てのメールを持ち、Gmailでメールを書く。
    • メール受信時、iPhoneで通知をもらう。
    • iPhone(iOS)上では、Gmailアプリを使い、Appleのメールアプリはアンインストールする。
    • Mac上では、Webのみ使う(メールアプリは使わない)。通知は不要。
  • SPFが設定されたドメインで送信されたメールを正しく受信できる。
  • 遅延なく「今受信したメール」を確認できる。
  • 簡単なGUIでメールアカウントを管理(追加、削除、転送設定等)できる。

Gmailで一本化

Gmailですべてのメールを送受信し、アドレス帳を管理する。他のメールサービスにメールは保存しない。

Gmailならどこからでも便利にアクセスでき、macのmigration、iPhone / Androidのmigrationも必要ない。あらゆる場所や環境から唯一Gmailのメールストレージ・メールクライアントを操作する。

Google Workspaceは利用しない

個人のためで、他に有料で使いたいGoogleツールがない場合はオーバースペックな上、個人アカウントとの行き来(個人→business、business→個人)がかなり面倒(いずれもmigrationが必要)。

メールだけの場合、月額680円はやや高額。

メールサーバーは自分で管理しない(EC2インスタンス等)

エンジニアならEC2インスタンスにPostfix/Dovecot入れて、設定ファイルでメールサーバーを管理するという方法もある。他の用途でEC2インスタンスがある場合は特に。しかし、OSをメンテナンスしたり、packageをupgradeしたり、設定を編集してserviceを再起動したり、トラブル時に調査したり等、面倒な作業が多いため、やらない。

個人ドメインに対応した有料のメールサービスが存在する。

メールボックスはあくまで一時データを保存するためで、Gmail側でメールを取得したらメールボックスからはデータを消す。そのため容量は1GBでも十分なぐらい。

メールボックスとして、SMTPサーバーとIMAPサーバーでセキュアな通信(SSL/TLS)に対応したサービスなら基本的にOK。例えばさくらメールボックスとAWS WorkMailはいずれも対応していて、設定しやすいGUIが提供されている。

  • さくらメールボックスは月額100円未満。ストレージも20GBと余裕がある。IMAPでメールを閲覧できる。
  • AWS WorkMail は月額4ドル。ストレージは50GBもある。IMAPでメールを閲覧できる。(Exchange ActiveSyncにも対応しているがここではGmailクライアントを使いたいので使わない。)

Gmailにメールを転送せず、「今受信したメール」を常に確認できるようにしたい

SPFが設定されたドメインからのメールを受信したい場合、SPFの仕組み上、メールの転送機能は利用できない。転送は諦める。

また、転送せず個人ドメインのメール(カスタムメール)を持つ方法としてGoogle Workspaceのアカウントという方法が存在するが、前述の通り、面倒だし高額なためやりたくない。

転送以外な方法として、Gmailには定期的に(1時間に1回程度)IMAP/POPでメールサーバーからメールを取得する機能がある。がしかし、それでは「今受信したメール」が簡単には確認できない(設定に行き、メールを確認するをクリックする必要があり、面倒)。

ここが一番設計がむずかしい部分で、一部の機能を少し割り切って設計が必要。

「今受信したメール」を確認したいのは、サービスからくるメールのみ

個人とのコミュニケーションにおいて、リアルタイムでメッセージやり取りをするなら、そもそもメールを使うべきか。LINEやメッセンジャーを使うべきだと考える。

サービスから届くメールのほどんどは緊急性が無いものばかり。そもそもサービスから受けたい緊急なメッセージがあるなら、プッシュ通知を利用するべきと考える(例:フリーマーケットのチャットのやり取り)。

しかし、すぐに受信したいメールも一応存在する。

  • ログインして、二段階認証のコードがメールで届いている場合。
  • サービスに登録して、メールアドレスの確認メールが届いている場合。
  • 自分のアクション(商品の購入、予約等)に対する確認メールが届いていて、それをすぐに確認したり、それに対し更にアクションを起こしたいケース(やっぱキャンセル、関係者に転送する等)。

これらのケースはいずれも、メールを確認したいタイミングは分かっていて、やりたいことは単純な作業。メールを確認したいタイミングは、Webやアプリで操作しているときであるため、メール受信のリアルタイムプッシュ通知は必要ないと思われる。プッシュ通知があったとしても、あくまでショートカットとしてのプッシュ通知であり、タイミングを通知してくれるものではない。

メールの受信を即座に検出して、リアルタイムでプッシュ通知が届くのがベストだが、これは諦めるとする。残る課題は、手動で「今受信したメール」をいかにシームレス&簡単にできるようにできるか。調べたところ、Gmailアプリのマルチアカウント機能を使うのが一番手っ取り早かった。

Gmailアプリには複数のアカウントでメールの確認ができ、アカウント切り替えはせずとも、「すべての受信トレイ」に全アカウントのメールが確認できる。IMAPアカウントを入れておけば直接メールサーバーのメールを閲覧(参照のみで削除せず)できる。

まとめると、次の対応表になる。

機能WebiOS
メール受信のプッシュ通知重視しない(リアルタイムでない)重視しない(リアルタイムでない)
「今受信したメール」の確認確認しないGmailアプリを立ち上げることで確認

ソリューション

前提

  • ドメインを持っている。
    • うちはドメインの登録はValue-Domain、ネームサーバーはRoute53。
  • メールクライアントはGmail、WebとiOSアプリを利用する。
  • メールサーバーのサービス(IMAP/POP、SMTP)を利用する。
    • うちはメールサーバーはさくらのメールボックス(安い、メールボックスの追加が楽なため)。

メールボックスの設定

使い分けのためメールボックス(アライアス等)が複数あると思われるが、Gmail受信用のメールボックスを1つ設けておく(あるいはメインのメールボックスを1つ選ぶ)。

このメールボックスに、Gmailで受信したいメールを全て転送しておく。同じメールサービス内のメール転送はSPFチェック等が無い。

Web上のGmailの設定

Gmailの「設定 / アカウントとインポート」にて、次の設定を行う。

  • 「他のアカウントのメールを確認」に確認するメールボックスを設定する。
  • 「名前(Gmail を使用して他のメール アドレスからメールを送信します)」に送信用のアカウントを設定する。

iOS版Gmailアプリの設定

アカウントを2つ設定する。

  • Web上で設定したGmailアカウント。
  • メールサーバーのIMAPアカウント。

「すべての受信トレイ」を常時使えばアカウント切り替えは必要ない。メインであるGmailアカウントを常に設定しておける。アプリ立ち上げ時や、メール画面を下に引っ張って更新すると、IMAPアカウントのメールがすぐに受信できる。

Gmailアカウント側のメールは1時間に1回ぐらいしか更新されないが、IMAPアカウント側のメールはすぐに確認できる。Gmailアカウント側のメールが更新されたときには、IMAPアカウント側のメールは削除されているため、表示されなくなる。Gmail側が受信したメールはメールサーバーから削除される。

キャッシュの関係で一時的に両方のアカウントで同じメールが表示されることがあるが、見分けるのは簡単で大した問題にならない。画面更新やアプリ再起動等ですぐにIMAP側のメールは消える。注意するべきなのは、メールを送信するとき。IMAPアカウントから送信しないこと、それだけになる。

関連記事

目次

カテゴリー
タグ
関連記事
佐原 瑠能

佐原 瑠能

さいたま市浦和区在住、2児の父、4人家族で生活。 フランスに約18年住んでいた。