getmail と Gmail

  1. 日付2026年3月4日 0:05
  2. 更新 2026年3月8日 2:01
  3. 説明Gmail をローカルに気軽にバックアップしよう!
  4. 分類 Linux

2026/03/04 19:43 微調整

2026/03/08 2:01 さらに微調整

この記事では、Gmail にあるメールをローカルにバックアップするための方法を紹介します。

使ったのは getmail という CLI ツールです。正確には原作を Python 3 にも対応させたバージョンで getmail6 というものです。

設定ファイルを用意して、コマンドを実行することで簡単にメールを受信することが出来ます。

オリジナル版はこちらです。

https://pyropus.ca./software/getmail/

入れる

早速インストールします。

paru -S getmail6

ご自身のパッケージマネージャーにあるかどうかは以下の CLI ツールの README によくあるリストをご覧ください(下のタグをクリックすると一覧へ飛べます)。

AUR packageHomebrew packagePyPI package

uv や pip(それぞれ Python のパッケージマネージャー)なら場所を問わずインストールすることが可能です。これらは広く使われているので、ほとんどの環境で簡単に入れることが出来るはずです。

uv tool install getmail6 # uv
pip install getmail6 # pip

この記事を書いた際のバージョンはこちらです。

● getmail --version
getmail 6.19.10

下準備

次に適当なフォルダを作成します。浅すぎず、深すぎずという場所に。

mkdir ~/iroiro/backup/gakkougmail
cd ~/iroiro/backup/gakkougmail

そして、設定ファイルである getmailrc を作成します。また、設定ファイルやログなどをまとめるために getmail というフォルダも作ります。

mkdir getmail
nvim getmail/getmailrc

設定ファイル

# https://pyropus.ca./software/getmail/configuration.html
[retriever]
# IMAP と SSL (HTTPS 越し)
type = SimpleIMAPSSLRetriever
server = imap.gmail.com
mailboxes = ALL
username = {{ username }}
password = {{ password }}

[destination]
type = Maildir
# メールを置く場所
# 最後は / で終わらせる
path = oku/

[options]
# ログの保管場所
message_log = getmail/log
# 増分だけ取得する
read_all = false
# 何も変更しない
delivered_to = false
received = false

これは私の設定ファイルです。

参考

https://pyropus.ca./software/getmail/configuration.html

説明

設定した項目について説明します。全部読んだわけじゃないですが、私にはこれ以外に必要なものは無さそうです。英語わからないので意味は間違ってるかもしれません。

[retriever] ・ メールアカウントの情報

  • type ・ メールレトリーバーの種類

    IMAP、POP3、Multidrop 等があります。どれを選べばいいのかはよくわからなかったので Wiki に書いてあった SimpleIMAPSSLRetriever にしました。

    これは IMAP と SSL(HTTPS 接続に対応)を組み合わせた値です。

  • server ・ メールサーバーの URL

    メールサーバーの URL です。Gmail の IMAP なら imap.gmail.com です。

  • mailboxes ・ メールボックスから取り出すもの

    改めてドキュメントを見返していたら ALL というオプションを発見したのでこちらに変えます。

    前は mailboxes = ("Inbox", "[Gmail]/Sent Mail", "[Gmail]/Drafts") と書いてました。左から、受信トレイ、送信済み、下書きを示しています。

    ただし、Inbox 以外は Gmail でしか使えず、環境や時間によって違いが生まれてしまうので、ALL で全てを一度ローカルに回収してしまってからフィルターにかけるほうがいいと個人的には思います。

    余計なものはいらない、受信にあまり時間をかけたくないという場合にはありかもしれません。

  • usernamepassword ・ ユーザー名とパスワード

    パスワード にて。

[destination] ・ 保存する場所

  • type ・ 保存形式

    ここ を翻訳して見ると Maildir が一番シンプルでいいかなと思います。maildir という形式でローカルに全てを保存する方法です。

  • path ・ フォルダのパス

    どこのフォルダに保存するか。絶対パスでも相対パスでも可。上の例では oku/ という場所にしていますが、いくつかのフォルダを事前に自ら作っておく必要があります(実行エラーになります)。

    mkdir -p oku/cur oku/new oku/tmp

    */cur*/new*/tmp の3つです。忘れずに作っておく。

[options] ・ 設定

  • message_log ・ ログを保存する場所とファイル名

    どこでも大丈夫ですが、getmail/log として、設定ファイルと同じフォルダにまとめて、ファイル名 log もわかりやすくするのがおすすめです。

  • read_all ・ 毎回全て読み込むか

    false にするのがおすすめです。そうすることで途中で途切れてもそこから再開することが出来ますし、増分だけ新たに受信するためサーバーの負担も軽減されます。

    もし何らかの事情で既に受信したものの一部を削除したいと考えている場合は getmail はそれに気付けないので損失を防ぐために read_all = true にしてください。デフォルトは false です。

    ちなみに進行状態をリセットしたいなら、設定ファイルの置いているフォルダにある小さなバイナリファイル getmail/oldmail-xxx を削除すれば最初からやり直せます(きっと一番新しい更新時間のものが直前まで取得していたものです)。

  • delivered_toreceived ・ メールの変更

    Delivered-To: という名前、Received: という名前のヘッダーをそれぞれ getmail によって追加させるか。デフォルトではどちらも true です。Wiki には無効にする設定として紹介されていて、私もメールはそのままの状態で何も手を付けないでほしいので、どちらも無効にします。

パスワード

ユーザー名にはメールアドレスを入れます。例えば学校のメールなら 422a1f@xxx.ac.jp のようなものがそのままユーザー名になります。

username = 422a1f@xxx.ac.jp

次にパスワードですが、これは少し面倒で必要なものがあります。今からの方法は Gmail を前提としますが、最近のメールはどこも似たようなものが必要になるかもしれません。また、アカウントの制限によっては難しい場合もあるかもしれません(2段階認証を有効に出来ない場合など)。

password = 1234567890

まず普通にパスワードにアカウントのパスワードを指定すると以下のようなエラーに遭遇します。

● getmail --getmaildir=getmail --verbose
getmail version 6.19.10
Copyright (C) 1998-2025 Charles Cazabon and others. Licensed under GPL-2.0.
SimpleIMAPSSLRetriever:422a1f@xxx.ac.jp@imap.gmail.com:993:
getmailrc: operation error (IMAP login failed with: b'[AUTHENTICATIONFAILED] Invalid credentials (Failure)'.
                        Tried IMAP authenticate, which also failed with: [AUTHENTICATIONFAILED] Invalid credentials (Failure))
  0 messages (0 bytes) retrieved, 0 skipped

検索してみてもいまいち情報が見つからず… メーリングリストという古のフォーラムっぽいものを雰囲気で読んでみたり、そうした中で アプリ パスワード というものが必要だと知りました。

アプリパスワードは普段ログインする時に使うパスワードとは異なり、言い換えると API キーのようなものです。1つ目のリンクのメールらしきものでも「app password」として言及されています。

Gmail も昔はユーザー名とパスワードだけでメールを受信することが可能だったみたいですが、3年ほど前からパスワードは使えなくなり、OAuth2 による認証か、この安全性の低くなるアプリパスワードが必要になったようです。

アプリパスワードは自分で生成する必要があります。また、条件としてアカウントの2段階認証が有効である必要があります。

まず、2段階認証が有効になっているかを確認してください。もし有効にしていなかったら、複数の安全な方法(紛失したら危ないので)、例えばパスキー等を追加して使えるようにします。

次に同じ2段階認証の設定項目に アプリ パスワード があるはずです。ここから適当なアプリ名でパスワードを生成してください。一度表示されたら二度と見返せなくなるので注意してください。

https://myaccount.google.com/signinoptions/twosv

password = kuma kawa iisa ikou

設定でのアプリパスワードの場所

実行

じゃあ準備も整ったことなので、受信を開始します!

getmail --getmaildir=getmail --verbose

時間は結構かかります。私は2000件で20分くらいかかりました。ゆっくりめです。

メールをダウンロードしているログ

これで一安心です。ダウンロードしたメールは Thunderbird などのメールアプリで読み込めるはずです。私も後で見てみようと思います。

これで終わりです。メールを自分の手の中に保管して、安心を得ましょう!バイバイ!