GmailのPOPサーバーにおいて、メールの存在を認識できないことがある [Linux]
1. 発生事象
2. 対処方法
Gmail の POP サーバーにおいて、メールの存在を正しく認識できないことがある。
このため、クライアント側での既読情報の管理には工夫が必要である。
(例) (1) 時刻 X + 0 分の確認結果: 3 通のメールが存在 この時点でのクライアントの管理情報を下記のようにする。 ・未読のメール数/メールの総数: 3/3 その後、すべてのメールを参照し、クライアントの管理情報を下記のようにする。 ・未読のメール数/メールの総数: 0/3 (2) 時刻 X + 10 分の確認結果: メールなし ← 実際には 3 通のメールが存在 メールが存在しないため、既読メールに関する情報が初期化される。 よって、クライアントの管理情報は下記のようになる。 ・未読のメール数/メールの総数: 0/0 ← 正しくは 0/3 (3) 時刻 X + 20 分の確認結果: 3 通のメールが存在 3 通を新規メールと判断し、クライアントの管理情報は下記のようになる ・未読のメール数/メールの総数: 3/3 ← 正しくは 0/3 (4) メールの存在が認識される場合には、メールの UID は正しい値が得られる。
・メールが存在する場合に、メールなしと回答されることがある。
・発生頻度は低い。
2021-08 の上旬に数回発生した。
・少し時間をあけ再実行すると、正しい結果が得られる。
現在、10 分毎に確認を行っている。
・現時点では、Gmail 以外の POP サーバーでは発生していない。
・存在確認には、Perl の Mail::POP3Client.pm を使用したスクリプトを使用している。
2. 対処方法
上記のスクリプトに、下記の機能を追加する。
(1) クライアント側で既読情報を一定の期間保持する。
(変更前)
サーバー上で存在が確認されたメールの既読情報しか保持しない。
(変更後)
一度作成した既読情報は、メールなしと判断された後も一定期間保持する。
・例えば、メールなしと判断された後の 3 回目の確認時まで保持する。
コメント 0