Lubuntu 20.04のインストールメモ、操作メモでも書いたが、
Trojitáは、かなり高速だ。しかしhtml形式メールは、いちいちLoadボタンを押さなきゃいけないことと、キーバインドをそこまでカスタマイズできないので、噂に聞くmutt
をインストールしようと思う。
で、よくよく調べると Vim から Neovim が派生(?)したように、Mutt から派生した
NeoMuttというのがあるらしい。そもそもmutt
を使ったことがないので、新しいneomutt
をインストールすることにした。
参考にしたのは以下のページ
実行したコマンド
$ sudo apt install neomutt w3m gnupg
$ mkdir -p ~/.config/neomutt/
$ mkdir -p ~/.mutt/cache/headers/
$ mkdir -p ~/.mutt/cache/bodies/
$ mkdir -p ~/.mutt/certificates/
$ nvim ~/.config/neomutt/passwds
$ gpg --gen-key
$ gpg -r gpg_real_name -e ~/.config/neomutt/passwds
$ shred -u ~/.config/neomutt/passwds
$ echo "text/html; w3m -I %{charset} -T text/html; copiousoutput;" > ~/.mutt/mailcap
$ nvim ~/.config/neomutt/neomuttrc
基本は上記のとおりなので passwds 、 neomuttrc は各自、編集して終わり。以下、細かい補足、自分へのメモ。
ディレクトリの作成
-
メールヘッダ用のキャッシュディレクトリ
~/.mutt/cache/headers/
-
メール本文用のキャッシュディレクトリ
~/.mutt/cache/bodies/
-
CA証明書を格納するディレクトリ
~/.mutt/certificates/
私の場合、メール件数は80,000件程度だけど、それでも初回起動時はキャッシュされてないので、neomutt
でも、数十分は待たされることになる。しかも、途中でCtrl+c
などして中断しないと、ヘッダーを全件取得するまで、操作できない。でも、一度読み込めば、次回からは数秒である。
パスワードファイルの作成
今時、個人情報の固まりであるGoogleを二要素認証にしていない人はいないので、アプリパスワードを生成して、それをファイルに平文でまずは記述する。
~/.config/neomutt/passwds
set imap_pass="Googleのアプリパスワード"
set smtp_pass="Googleのアプリパスワード"
GPG鍵ペアを生成
gpg --gen-key
でGPG鍵ペアを生成する。
Real name | Email address | Passphrase |
---|---|---|
名前 | メールアドレス | パスフレーズ |
を入力する。誰かとやりとりするわけでもなく、アプリパスワードで生成したパスワードを保護するためなので、Real nama
とあるけど、アプリ名、偽名でもなんでも良いと思う。メールアドレスも、本当に自分のメールアドレスでも適当なものでも。パスフレーズも面倒だと思ったら、空入力して無しにすることもできる。
もしパスフレーズを設定した場合は、そのセッションでのneomutt
初起動の度聞かれることになる。ただし、それもパスワードと鍵(seahorse
)で保存しておくことはできる。
$ gpg --gen-key
gpg (GnuPG) 2.2.19; Copyright (C) 2019 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Note: Use "gpg --full-generate-key" for a full featured key generation dialog.
GnuPG needs to construct a user ID to identify your key.
Real name: gpg_real_name
Email address: xxxxxxxxx@gmail.com
You selected this USER-ID:
"gpg_real_name <xxxxxxxxx@gmail.com>"
Change (N)ame, (E)mail, or (O)kay/(Q)uit? O
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
gpg: key 90ABCDEF12345678 marked as ultimately trusted
gpg: revocation certificate stored as '/home/arimasou16/.gnupg/openpgp-revocs.d/1234567890ABCDEF1234567890ABCDEF12345678.rev'
public and secret key created and signed.
pub rsa3072 2021-01-20 [SC] [expires: 2023-01-20]
1234567890ABCDEF1234567890ABCDEF12345678
uid gpg_real_name <xxxxxxxxx@gmail.com>
sub rsa3072 2021-01-20 [E] [expires: 2023-01-20]
生成できた秘密鍵、公開鍵は、重複しなければ Real name 、 Email address どちらかだけの指定で暗号化処理、削除を行なうことができる。
パスワードファイルの暗号化
先程、生成した鍵を指定して、パスワードを記載したファイルを暗号化する。
$ gpg -r gpg_real_name -e ~/.config/neomutt/passwds
gpg: checking the trustdb
gpg: marginals needed: 3 completes needed: 1 trust model: pgp
gpg: depth: 0 valid: 2 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 2u
gpg: next trustdb check due at 2023-01-20
暗号化ファイルは名前を指定することもできるが、指定しない場合、元ファイルにgpg
が付与されて生成される。 passwords.gpg 。
平文でパスワードが記載された passwds は不要なので、shred -u ~/.config/neomutt/passwds
でランダム情報を書き込んで削除する。-u
を指定しなければ、 passwds が残ったままで、開くとランダム情報が書き込まれてることが確認できる。その後はrm
で削除してもらえば良い。
HTMLメールを読むための設定ファイルを生成
echo "text/html; w3m -I %{charset} -T text/html; copiousoutput;" > ~/.mutt/mailcap
↓のようになっていれば良し。 ~/.mutt/mailcap
text/html; w3m -I %{charset} -T text/html; copiousoutput;
-
-I
入力文書の文字コードを指定する.
-
-T
表示する文書のタイプを指定する
-
copiousoutput
The Mutt E-Mail Client : Mutt の MIME サポートより
このフラグは Mutt にそのコマンドがたくさんの量のテキストを標準出力に渡し得るということを教えます。これによって Mutt は閲覧コマンドの出力に対してページャーを起動します
設定ファイルの編集
基本、 環境構築:Terminal(CLI)向けメーラー”Neomutt”でGmailを送受信するための設定からの丸パクリ。
~/.config/neomutt/neomuttrc
|
|
上記設定すると、こんな感じ
名前、メールアドレスの設定部分はハイライトされた5、7、9,10行目。
暗号化したパスワードファイルを復号化しているのは4行目のsource "gpg -d ~/.config/neomutt/passwds.gpg |"
の行となる。
サイドバーに複数のフォルダを表示する場合は、32行目のmailboxes
を+
を付けて、そのフォルダ名を半角スペース区切りで列挙していく。また、これをしておくと、c?
で開くメールボックス(フォルダ)候補として表示される。また、トップフォルダだけ読み込めば開かれるので、複数指定したからといって起動が遅くなることはない。
キャッシュフォルダにはフォルダ名で保存されているので、フォルダ名を変更した場合は、~/.mutt/cache/headers/imaps\:xxxxxxxxx@gmail.com@imap.gmail.com\:993/変更前フォルダ名.hcache
を変更するか、再度キャッシュしなおす必要がある。
html形式メールを自動でhtml形式で表示させる場合は34、35行目のように設定する。
neomutt
を使う上で一番懸念だった新着メールの通知はset new_mail_command="notify-send --icon='/usr/share/icons/hicolor/48x48/apps/neomutt.png' 'New Email' '%n new messages, %u unread.' &"
とすることで通知されるようになる。アイコンはhttps://neomutt.org/images/mutt-48x48.png
をダウンロードして使わせてもらった。
日付フォーマットの編集
そして、デフォルトのままだと一覧での日付が月日しか表示されない。それだと不便なのでインデックスフォーマットを編集する。
# インデックスフォーマット デフォルト"%4C %Z %{%b %d} %-15.15L (%?l?%4l&%4c?) %s"
set index_format="%4C %Z %<[y?%<[d?%[%H:%M ]&%[%m/%d (%a) %H:%M]>&%[%Y/%m/%d %H:%M]> %-15.15L (%?l?%4l&%4c?) %s"
フォーマットは strftime(3) manページに準拠しているらしい。
で今日より前のメールの日付はとか、今年より前のメールの日付は、という風に変更したいと思うのが、普通だと思うので、そのやり方は Conditional Dates - NeoMuttに書いてあった。
自分の設定だと今日のは時:分
、今年のは月/日 (曜日) 時:分
、去年以前は年/月/日 時:分
という形で表示される。
37 00:02 Amazon.co.jp ( 43K) Amazon.co.jp ご注文の確認 D01-1234567-8901234
39 + 02/21 (日) 21:13 nttxstore_4@sho ( 14K) 【NTT-X Store 楽天市場店】商品発送のお知らせ
1594 + 01/01 (金) 01:58 BRIDGE INC. ONL (8.2K) ご注文確認メール(自動配信)
1595 + 2020/12/31 22:50 Instagram ( 15K) InstagramにLinuxのChromeから新しいログインがありました
例に書いてある%<[y?%<[m?%<[d?%[%H:%M ]&%[%a %d]>&%[%b %d]>&%[%m/%y ]>
とおりだと、今日のは時:分
、今月のは曜日 日
、今年のは各国の表現で省略した月名 日
、去年以前は月/年
という形で表示される。
33 00:02 Amazon.co.jp ( 43K) Amazon.co.jp ご注文の確認 D01-1234567-8901234
35 + 日 21 nttxstore_4@sho ( 14K) 【NTT-X Store 楽天市場店】商品発送のお知らせ
786 + 日 31 BOOTH事務局 (7.8K) team zpnからメッセージが届いています [BOOTH]
1589 + 1月 01 BRIDGE INC. ONL (8.2K) ご注文確認メール(自動配信)
1590 + 12/20 Instagram ( 15K) InstagramにLinuxのChromeから新しいログインがありました
どうも今月より前という判定が2月だとおかしいみたい。1/31のメールまで今月扱いになってる。また%<[y
を%[1y
というふうに数字を入れれば、今日から1年前という点ではなく線の差で、条件設定できる。
デスクトップアプリとしての登録
起動させたければ、Win+r
なり起動ランチャーからneomutt
と打つだけだけど、デスクトップアプリとして登録させる場合は、以下のファイルを作成する。
~/.local/share/applications/neomutt.desktop
[Desktop Entry]
Name=NeoMutt
GenericName=Command line mail reader
Comment=Command line mail reader
TryExec=neomutt
Exec=neomutt
Terminal=true
Type=Application
Keywords=mail;e-mail;IMAP;SMTP;eml;MUA;
Icon=neomutt
Categories=Network;Email;
StartupNotify=false
MimeType=x-scheme-handler/mailto;
書式のチェックdesktop-file-validate ~/.local/share/applications/neomutt.desktop
して問題ないことを確認。
チートシート
動作 | キー |
---|---|
一覧での上 | j |
一覧での下 | k |
一覧戻る | i |
フォルダ変更一覧 | c? |
フォルダ一覧取得 | c[tab] |
フォルダ一覧から一覧に戻る | y |
メッセージでの上 | PgUp または - |
メッセージでの下 | PgDn または [Space] |
一覧、メッセージでの最上 | [Home] |
一覧、メッセージでの最下 | [End] |
メール削除(dフラグon) | d |
メール削除取消(dフラグoff) | u |
添付ファイルをみる | v |
検索 (下に) | / |
検索(上に) | [Esc]/ |
次の検索 | n |
メール作成 | m |
全員に返信 | g |
先頭まで移動 | Ctrl+a |
文末まで移動 | Ctrl+e |
先頭まで削除 | Ctrl+u |
文末まで削除 | Ctrl+k |
メニュー中断 | Ctrl+g |
保存して終了 | q |
保存せず終了 | x |
キーバインドはこちらに Getting Started - NeoMutt。
環境によってはズレる箇所がある
最後に、解決してない部分をメモ。サイドバーに表示させるフォルダ名が全角だったり、スレッドの返信マーク└─>
があると、ズレる。ああ日本語は想定されてないのかなぁ、と思ったけど、nvim-qt
からterminal
でneomutt
で表示するとズレない。
フォントなのか、いや、両方Illusion N
を使っているし、set ambiwidth=single
になっている。試しにフォントを通常のもの、set ambiwidth=double
にしてみたけど、直らない。
というページがあって、全角文字の幅で表示するためのFormula群をインストールすれば直るのかなぁ、と思いつつ、あれこれインストールして複雑化させたくない気持ちもある。
見た目の問題なので、とりあえず放置して、このまま使うことにする。
追記 2021-05-01
alacritty
だとズレない。なのでneomutt.desktopはTerminal=false
Exec=alacritty -t "neomutt" -e neomutt
とした。
追記ここまで