PR

メールサーバのデータを完全同期したのに「メールが消えた」と言われる理由

スポンサーリンク

はじめに

メールサーバのリプレース作業では、旧サーバと新サーバのデータを完全に同期してから切り替えることが一般的です。

例えば rsync を使用して、

rsync -av /maildata/ new-server:/maildata/

でメールデータを旧サーバから新サーバにコピーし、切り替え直前に再度差分同期を行います。

管理者としては、

「これで旧サーバと新サーバは完全に同じ状態になった」

と思うでしょう。

ところが切り替え後、

利用者から次のような問い合わせを受けることがあります。

  • メールが消えた
  • 以前のメールが見えない
  • 受信済みメールが突然なくなった
  • 届いているはずのメールがない

実はこれは移行失敗ではなく、「メールサーバのデータ」と「利用者が見ているメール」が別物であることが原因です。

管理者が見ているもの

サーバ管理者が確認しているのはメールサーバ内のデータです。

例えば、

user1
 ├─ mailA
 ├─ mailB
 └─ mailC

であれば、

新サーバにも

user1
 ├─ mailA
 ├─ mailB
 └─ mailC

が存在します。

ファイル数もパーミッションも一致しています。

容量も一致しています。

rsyncの結果にもエラーはありません。

つまり管理者視点では「完全同期」です。

利用者が見ているもの

一方、利用者はメールサーバのファイルを直接見ているわけではありません。

OutlookやThunderbirdなどのメールソフトを通じてメールを見ています。

POP受信環境では、

メールソフト側が

  • 受信済みメール
  • ダウンロード履歴
  • UIDL情報

などを管理しています。

つまり利用者が見ているメール一覧は、

サーバ上のメール
+
メールソフト側の管理情報

によって構成されています。

もう少し具体的に説明すると

原因はPOPがメールを管理する仕組みにあります。

POPではメールサーバ上のメールを識別するために、

「UIDL」

と呼ばれる管理情報を利用しています。

メールソフトは

UIDL-001
UIDL-002
UIDL-003

のような情報を記録しています。

新サーバではUIDLが変わることがある

サーバ移行後、

同じメールデータをコピーしていても、

UIDL-101
UIDL-102
UIDL-103

のようにUIDLが変化することがあります。

メールソフトから見ると、

今まで見ていたメール
↓
存在しない

新しいメール
↓
別物

として認識されます。

メールソフトによってはメールが表示されなくなる

POPクライアントは、

「過去に受信したメール」

をUIDLで管理しています。

そのため、

  • メールが再受信される
  • メールが消えたように見える
  • 一部だけ表示されない

といった現象が発生します。

利用者から見ると、

昨日まで見えていたメールがない

状態になります。

サーバの完全同期=利用者環境の完全同期ではない

ここが移行時の最大の落とし穴です。

管理者は

旧サーバ = 新サーバ

を作れます。

しかし、

旧サーバ
+
利用者PCのメールソフト
=
新サーバ
+
利用者PCのメールソフト

までは保証できません。

そのため、

サーバ上には存在しているメールなのに、

利用者からは

メールが消えた

ように見えることがあります。

実際によくある問い合わせ

移行翌日に最も多い問い合わせがこれです。

「先週受信したメールが見えません」

管理者がサーバを確認すると、

ちゃんと存在している

というケースです。

ユーザーからするとメールが消えています。

管理者からするとメールは存在しています。

どちらも間違っていません。

見ている場所が違うためです。

特にPOP環境は注意

IMAPの場合はメール状態の多くをサーバ側で管理します。

一方POPは、

メールソフト側の情報に依存する部分が大きいため、

サーバ移行時の影響を受けやすくなります。

そのため、

「メールデータを同期したから大丈夫」

ではなく、

「利用者のメールソフトがどう動くか」

まで考慮して移行計画を立てる必要があります。

対策方法

方法1:IMAPへ移行する

IMAPであれば、

  • メール
  • フォルダ
  • 既読情報

をサーバ側で管理できます。

サーバ移行時のトラブルも大幅に減ります。

方法2:あえてメールデータは移行しない

POP環境を継続する場合は、

メールデータは新サーバに移行しない方が良いです。

全く新規のデータを新サーバで1から作成する方がトラブルは少ないかもしれません。

ただし、この場合、取りこぼしが無いように旧サーバで最後までメールを取り込んで新サーバのメールサーバの設定に変更しましょう。

方法3:テストユーザーで事前検証する

本番移行前に、

  • Outlook
  • Thunderbird
  • Windows Mail

など実際に利用しているメールソフトで検証します。

旧サーバのアカウントとは別に、新サーバ用のアカウントを作成する方法もあります。

メールソフトによって挙動が異なるためです。

まとめ

メールサーバ移行では、

「サーバ間のデータ同期」

「利用者から同じように見えること」

は別問題です。

特にPOP受信環境では、

サーバを完全同期しても利用者のメール一覧が変わる場合があります。

移行作業では、

  • メールデータの同期
  • DNS切り替え
  • メールソフトの挙動確認
  • 利用者への事前周知

まで含めて検討することが重要です。

「サーバは完全同期できたのにメールが消えたと言われる」

という事態を防ぐためにも、事前検証を十分に実施しましょう。

今回はここまでです。最後までお読みいただきありがとうございました。