メールアドレスを変えた件
事の発端
PCを触り始めた中学時代から、私はずっとメインのメールアドレスとしてYahoo!メールを利用していました。
メールクライアントとしては今現在、PCではOutlookを、スマホではiOS標準のメールアプリにアカウントを追加することで日々送受信をしていました。
きっかけは、3日ほど前にiOSのメールアプリでYahoo!メールが受信できなくなったことで、これは公式で通知が出ているとおり、セキュリティ対策の一環でIMAP/POP/SMTPアクセスが拒否設定に変更されてしまったことが原因でした。
この問題自体は、パスワードを再設定してIMAP/POP/SMTPを再度許可に切り替えることで事なきを得たのですが、Yahoo!いわく、
※今後もパスワードの変更をお願いする可能性があります。
ということで、サードパーティのメーラーを使いたいがために不定期にいちいちパスワードを変えなければならんのはメインとして使っているメールとしては正直耐えられない運用だと思いました。
なので、これを機にメインのメールアドレスを独自ドメインのものに切り替えようと思って、思ったのが地獄の始まりでした。
各種サイトのメールアドレス変更
元々独自ドメインでメールアドレスを持っていたので、とりあえずアカウントを持っている各種Webサイトやアプリの登録メールアドレスを変更するところからです。
都合200アカウントほどあり、骨が折れましたが、徹夜で何とかしました。しんどかったですが、単純作業なので技術的に難しいところは特にありませんでした。
とりあえずここは乗り切ります。
メールサーバをExchangeに移行
メールアドレスを変更して1日運用して、違和感を覚えました。Yahoo!メールはほぼ受信日時のとおりに来るのに、独自ドメインの方は受信日時の数分、下手すると数十分後くらいにならないとメールが届かないように見えたのです。
iOSのメールの設定を色々眺めていると、「データの取得方法」というのがあり、Yahoo!メールの方は「プッシュ」となっているのに、独自ドメインの方は「フェッチ」となっており、「プッシュ」の選択肢が表示されていないではありませんか。
SE的な知識から受信遅延はほぼ間違いなくこの設定の違いによるものだろうと当たりをつけ、M365 Copilotくんに色々聞きました。
結論、独自ドメインのメールサーバはAWSのWorkMailを使っており、このIMAPサーバは “IMAP IDLE” というプロトコルをサポートしていないので、ポーリングすることでしか新着メールを検出できない、というものでした。
ということでCopilotからの提案はMicrosoft Exchangeサーバに移行するというもの。ExchangeはM365 Personalには入っておらず、個別契約だと1ユーザーあたり月額599円+税からとなります。AWSも運用しているしGitHub Copilotにも課金しているなかで正直出費を増やしたくないところではありましたが、背に腹は代えられないしどうせ1ユーザーだしと思って手を出すことにします。
WorkMailからExchangeへの移管ですが、これは手順に従っていけばそんなに詰まることはなかったかなと思います。DNSをCloudflareで管理していた恩恵もあるのか、レコード設定もExchangeのセットアップウィザードで何か上手いことやってくれました。
WorkMailに取り残されたメールたち
とりあえずExchangeに移行した状態でもう一度iOSのメールアプリにアカウントを再設定して、送受信できるところまでは苦もなく確認できました。
ところがところが!WorkMail時代に受信していたメールがまるまるなくなってしまったではありませんか??
これもCopilotに聞いたところ、メールそのものはまだWorkMail側のIMAPサーバに取り残されているということで、WorkMailからExchangeへのデータ移行が必要だと言われました。
データ移行はExchangeにそういう機能があったので、ユーザー情報を記載したCSVファイルを手で作成するというなんとも前時代的な仕組みではありましたが、実行するところまではいけました。
しかし…これも上手くいかず。
2/28の夜、寝る前にバッチを仕掛けて、3/1の朝に起きて実行結果を確認したところ、アクセス拒否とかなんとかで処理がコケてしまっていました。
これの原因調査を始めると1ヶ月コースになるな……と悟った私は、バッチ移行は諦めて手動での移行に切り替えます。
やり方は至極単純で、PC版のOutlookに
- WorkMailのアカウント
- Exchangeのアカウント
の両方を追加します。WorkMailの方に取り残されていたメールたちが出てくるので、それをExchangeの受信トレイにドラッグ&ドロップです。分かりやすくていいでしょ。間違える余地がありません。
とりあえずこれも解決。
WorkMailと関連DNSレコード削除
とりあえずザッと移行はできたと思い込んだので、ここで使わなくなったWorkMailの組織と関連するDNSレコードを全部削除しました。
ここもCopilotに手伝ってもらって、CloudflareのDNSレコードをtxtで吐き出して、削除、更新対象の一覧を教えてもらって、そのとおりにやりました。Copilot様々です。
ブログの問い合わせメールがあったことに気付く
これで万事解決~!とでも思ったか?そうは問屋が卸しません。
早速この体験をブログに載せよっかな~とWorkPressの管理画面を色々眺めていたときに気付いてしまったことがありました。このブログには「問い合わせ」という機能があり、読者の皆様からご意見やらクレームやらを24/365で受け付けておるのですが、これの送信先アドレスもまた、独自ドメインで払い出しているものだったのです。
とりあえずExchangeでアドレス1つ払い出して…とやろうと思ったのですが、これをやると料金が倍になることが発覚しました。営利目的でもないしょぼいブログの問い合わせ機能のために、年7,000円超を払うのは正直ツラいところがありました。
…ので、すったもんだしましたが、最終的には
- 自分用アドレスのエイリアスとして問い合わせ用アドレスを設定
- SESのIDに問い合わせ用アドレスを追加
- 関連するDKIMだのSPFだのDMARCだののレコードを追加
- SESでSMTP送信用のIAMアカウントを払い出し
- IAMアカウントをWP Mail SMTPに設定
で苦しいながらも解決しました。
Yahoo!→独自ドメインへのメール送信が失敗する
テスト送信して気付いたのですが、Yahoo!から独自ドメインへのメール送信が失敗する(配信不能メールが即時返ってくる)ことが分かりました。
正直、自分から自分宛てに送って気付いたもので、他のドメインからの送信は成功しており、正直実運用上はほとんど影響ないんじゃないかとは思っているのですが、ちょっと気持ち悪かったので調べました。
CopilotいわくでDMARCの設定が厳しいから緩めるみたいな更新をしてみたのですが、DNS更新から十数分経って、現状まだ事象の解決には至っていません。
これがDNS伝播が完全でないためなのか、他に原因があるのかは分かりませんが、今日これから試行錯誤してもしょうがないので、明日まで様子見することにします。
最後に:iOS標準アプリからOutlookへの移行
かねがねiOS標準のメールアプリについても、シンプルなのはいいんですがシンプルすぎて使い勝手としては逆に微妙かなと思っていたフシがあり、これを機にデフォルトのメールアプリをiOS版Outlookに切り替えてみました。
そのときCopilotに聞いて分かったことなのですが、OutlookとExchangeという組み合わせとなる以上、もはやIMAP IDLEですらなく、Active SyncとかいうMicrosoftの仕組みで完結するそうです。期せずして私はほぼベストなパフォーマンスに到達していたようです。
| 構成 | 通知の即時性 | 安定性 | iOSとの相性 |
|---|---|---|---|
| WorkMail x IMAP | 低 | △ | △ |
| 任意IMAP x Outlook iOS | 中 | △ | △ |
| Exchange x iOS標準 | 高 | ◯ | ◯ |
| Exchange x Outlook | 最高 | ◎ | ◎ |
