Chienomi

GMailのメールを全て取り込んでアーカイブする

Live With Linux::practical

今回のお題はすごく簡単そうに見えて非常に難しいもの。

実際にやってみると分かるけれど、GMailは非常に特殊で、GMailの外にメールを持ち出すのがとても難しい。

今回のゴールは、GMail上にあるすべてのメールをローカルにダウンロードしてアーカイブする、または他のIMAPサーバーに移動することである。 この全てはメールの種別を(その場では)区別しないものとする。

この際、ローカルで保存する場合は1メール1ファイル形式に限るものとする。

GMailの難しさ

まず、GMailは通常のPOP/IMAPアクセスが効かない。

以前は可能だったが、現在はできないようになっている。 OAuthが必須とされ、一時期は安全性の低いアプリでのアクセスを許可するという設定もあったのだが、現在はそれもなさそうだ。

GMailのOAuthに対応したメールクライアントを使えばできそうに見えるのだが、実際はOAuthで認証したあとIMAPで多数のメールを選択して操作すると、スロットリングのような処理を受けた上で切断されたり、処理がエラーを返したりする。

最初はVivaldiで移動しようとしたのだが、「移動したように見えてできてない」という状態になって、扱いにとても困ってしまった。

ThunderbirdもGMailの扱いは意外と微妙。

Aqua Mailも試してみたけれど、移動操作は10通単位でしかできなかった。

また、GMailは非常に複雑なメール分類を行い、メール全体を選択するのが難しい。 「すべてのメール」はバーチャルフォルダ扱いなので、複数のメールをまとめて扱えなかったりする。 このために、メールのアーカイブがかなり難しい。

Claws Mailでメール取り込み

最終的には私の愛用のメールクライアントであるClaws Mailを使った。

Claws Mail自体はGMailのOAuthに対応しているが、Claws MailにOAuthクライアントが組み込まれておらず、自分でアプリを作らなければならない。

これもうまく動かず、私が試したときはそもそもIMAPアクセスが通らなかった。

Claws Mailを使ってGMailからメールを取り込むベストな方法は、POPを使うことだ。

まず、事前準備としてinboxを空にしておく。 POPで受信する場合はinboxに入るため、アーカイブすることを考えると分類したいからだ。 もちろん、アーカイブしたあとメールを戻してもいい。

次に、普通にPOPを設定する。 受信メールサーバーはpop.gmail.com、送信サーバーはsmtp.gmail.comを設定する。 アカウントはGoogleのアカウントのメールアドレス、パスワードはGoogleアカウントのパスワード。 POPはTLS(POPS/995)、SMTPはSTART TLS(Submission/587)を使う。

これで一旦保存して受信を行うと、アプリパスワードを設定するように回答される。 ここで表示されるURLをコピーして、Googleにログインしているブラウザで開く。

するとGoogleのドキュメントが出るので、ここからセキュリティ設定に入る。

Googleアカウントからもセキュリティ設定に入れるが、事前にそれをしないのは、二段階認証に関わっている。

アプリパスワードの設定は二段階認証を必要とするが、Googleアカウントの二段階認証の項目では電話番号を登録することを強要される。

しかし、ドキュメントから飛んだ場合は普通にセキュリティのページに入れる。

ただし、二段階認証は有効にする必要がある。 Androidユーザーであれば、Androidスマートフォンで認証ができる。

2段階認証プロセス→アプリ パスワードと進み、新しいアプリを登録する。 すると、16桁のパスワードが表示されるので、Claws MailのGMailのパスワードをこれで置き換える。

次にGMailの設定に移動する。 ⚙から「すべての設定を表示」をクリック、「メール転送とPOP/IMAP」タブへ進む。

そして「POPダウンロード」で「1. すべてのメール」「2. GMailのメールを削除する」と設定する。 POPのアクセスは種別を問わず全てのメールをダウンロードする。 1.についてメールを差分でダウンロードしようとするとうまくいかない。そこですべてのメールをダウンロードしようとするわけだが、メールが残っていると同じメールをダウンロードしてしまう上に、一発で全部のメールをダウンロードできないため、非常にややこしいことになるため、ダウンロードしたメールは消していく必要がある。

あとはPOPアクセスでダウンロードしていくだけだが、GMialは一発で全部のメールをダウンロードさせないため、メールがなくなるまで受信を繰り返す。

IMAPサーバーに置きたい場合は、ダウンロード後にIMAPフォルダへ移動する。

送信と受信を分けたい場合は、Fromヘッダーを自身のアドレスにしたフィルタを適用して全選択→移動すればいいだろう。

他のメールクライアントについて

POPが扱えるメールクライアントなら、多分同じような運用が可能。