getmail と Gmail
- 日付・2026年3月4日 0:05
- 更新 ・ 2026年3月8日 2:01
- 説明・Gmail をローカルに気軽にバックアップしよう!
- 分類 ・ 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 によくあるリストをご覧ください(下のタグをクリックすると一覧へ飛べます)。
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で全てを一度ローカルに回収してしまってからフィルターにかけるほうがいいと個人的には思います。余計なものはいらない、受信にあまり時間をかけたくないという場合にはありかもしれません。
usernameとpassword・ ユーザー名とパスワードパスワード にて。
[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_toとreceived・ メールの変更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 などのメールアプリで読み込めるはずです。私も後で見てみようと思います。
これで終わりです。メールを自分の手の中に保管して、安心を得ましょう!バイバイ!