Rust製のCLI電子メールクライアントのHimaraya

Rust製のCLI電子メールクライアントのHimarayaというものを見かけたので少し試してみました.

Himarayaは単体ではCLIのクライアントでバッチ的に利用できます.VIm/Neovimのプラグインを使うとTUIで直感的に操作できるようになるようです.
Windows/macOS/Linux(amd64)はリリースページからバイナリが入手できます.今回はLinux amd64環境で試しました.

$ wget https://github.com/soywod/himalaya/releases/download/v0.2.2/himalaya-linux.tar.gz (1)
$ tar tvf ./himalaya-linux.tar.gz (2)
-rwxr-xr-x runner/docker 9090192 2021-04-05 00:50 himalaya.exe
$ tar xf ./himalaya-linux.tar.gz (3)
$ sudo install -m 755 ./himalaya.exe /usr/local/bin/himaraya (4)
$ rm ./himalaya.exe
$ mkdir ~/.config/himalaya (5)
$ vi ~/.config/himalaya/config.toml (6)
$ cat ~/.config/himalaya/config.toml
name = "Kenichiro Matohara"
downloads-dir = "~/.config/himalaya/gmail/"
signature = "Regards,"

[matoken_gmail]
default = true
email = "matoken@gmail.com"

imap-host = "imap.gmail.com"
imap-port = 993
imap-login = "matoken@gmail.com"
imap-passwd-cmd = "gpg2 --no-tty -q -d ~/.msmtp-password-gmail2.gpg"

smtp-host = "smtp.gmail.com"
smtp-port = 487
smtp-login = "matoken@gmail.com"
smtp-passwd-cmd = "gpg2 --no-tty -q -d ~/.msmtp-password-gmail2.gpg"
  1. Linuxリリースバイナリのダウンロード
  2. アーカイブの内容確認
  3. アーカイブの展開
  4. /usr/local/binhimaraya として導入
  5. 設定ファイルディレクトリの作成
  6. 設定ファイル作成

設定ファイルは README.md にgmailの例が書かれているので,imap4/smtpの場合はそのまま真似すると良さそうです.
設定ファイルのパスワード部分の imap-passwd-cmd , smtp-passwd-cmd は平分でも書けるようですが,コマンドが書けるのでmsmtpで使っているgpg2のものを使いました.opensslなども使えます.パスワードマネージャを使っても良さそうです.

$ himaraya list

UID    |FLAGS |SUBJECT                                           |SENDER                     |DATE
403387 |       |[oss-security] CVE-2021-29136: umoci: malicious … |Aleksa Sarai               |2021-04-06 11:13:14
403386 |       |[oss-security] Django: CVE-2021-28658: Potential… |Mariusz Felisiak           |2021-04-06 09:10:32
403385 |       |Ingress Damage Report: Entities attacked by taar… |Niantic Project Operations |2021-04-06 07:52:16
403384 |       |Ingress Damage Report: Entities attacked by taar… |Niantic Project Operations |2021-04-06 07:52:14
403383 |       |Ingress Damage Report: Entities attacked by taar… |Niantic Project Operations |2021-04-06 07:52:15
403382 |      |CPUのコアを増やせば、コア間の通信が増え処理速度が上がらないのではありませんか?         |Quoraダイ
ジェスト                |2021-04-06 06:35:23
403381 |      |In October, you had 4.8K users visit your websit… |Google Analytics           |2021-04-05 22:44:18
403380 |      |Daily activity summary for Nextcloud              |Nextcloud                  |2021-04-05 21:30:06
403379 |       |Re: [oss-security] Risk of local privilege escal… |Leo Famulari               |2021-04-05 20:20:55
403378 |       |Re: [oss-security] Risk of local privilege escal… |Leo Famulari               |2021-04-05 20:19:15

いくつかのコマンドを使いバッチ的にメールボックスを操作できます.しかし普通のMUAとして使うには面倒です.

Vim/Neovimのプラグインを使うとTUIで利用できるらしいので試してみます.

Note
※前提条件として,vim-plugが使える状態になっている必要があります.
junegunn/vim-plug: Minimalist Vim Plugin Manager
$ echo "Plug 'soywod/himalaya', {'rtp': 'vim'}" >> ~/.vimrc

Vimの設定ファイルの ~/.vimrc にHimaraya pluginを追記します.
vimを起動して, :PlugInstall を実行してHimaraya Pluginを導入します.

その後,Vimの中で :Himaraya で起動します.

Himarayaの設定ができていればそのままTUIで使えるようになります :)

今の時点ではあまり使いやすくはなくAlpineやMutt/NeoMuttのほうが良さそうです.でも開発も活発そうなのでこれからに期待したいです.

ところで名前の Himaraya は山つながりで Alpine のインスパイアなのでしょうか?

環境
$ himalaya --version
himalaya 0.2.2
$ dpkg-query -W vim gpg
gpg     2.2.27-1
vim     2:8.2.2434-3
$ lsb_release -dr
Description:    Debian GNU/Linux bullseye/sid
Release:        unstable
$ arch
x86_64

Mutt 1.6.0を試す

Mutt 1.6.0がリリースされました.安定版としては2007年のMutt 1.4.2.3以来9年ぶり!?

Muttはターミナルで動作するメーラーです.似たものにAlpine(旧pine)があります.emacs使いだとMewを使う方も居ますね. MuttとAlpineについては以下の記事が参考になると思います.

使いはじめるまでの速さはAlpineが一番だと思います. GPGやらカスタマイズやらのしやすさはMuttかな?(個人の感想です)

最近Alpineで1000000通を超えるメールボックスで1000000通目までしか見られないという現象やSubjectに♪などがあると動作や表示が崩れるといった問題に遭ったのでMutt環境を作りなおしたところでした.せっかくなのでMutt 1.6.0もBuild ざっとこんな感じでbuildしました.はじめprefixしか指定せずにbuildしてimapに繋がらないとかやってしまいましたorz

$ #stretchのMutt Version
$ mutt -v|head -1
Mutt 1.5.24 (2015-08-30)
$ # stretchのMutt configure 確認
$ mutt -v|grep Configure\ 
Configure options: '--prefix=/usr' '--sysconfdir=/etc' '--mandir=/usr/share/man' '--with-docdir=/usr/share/doc' '--with-mailpath=/var/mail' '--disable-dependency-tracking' '--enable-compressed' '--enable-debug' '--enable-fcntl' '--enable-hcache' '--enable-gpgme' '--enable-imap' '--enable-smtp' '--enable-pop' '--with-curses' '--with-gnutls' '--with-gss' '--with-idn' '--with-mixmaster' '--with-sasl' '--without-gdbm' '--without-bdb' '--without-qdbm' '--build' 'x86_64-linux-gnu' 'build_alias=x86_64-linux-gnu' 'CFLAGS=-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wall' 'LDFLAGS=-Wl,-z,relro' 'CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=2 -I/usr/include/qdbm'
$ sudo apt-get build-dep mutt
$ wget ftp://ftp.mutt.org/pub/mutt/mutt-1.6.0.tar.gz ftp://ftp.mutt.org/pub/mutt/mutt-1.6.0.tar.gz.asc
$ gpg --verify mutt-1.6.0.tar.gz.asc 
gpg: 署名されたデータが'mutt-1.6.0.tar.gz'にあると想定します
gpg: 2016年04月03日 03時22分52秒 JSTにRSA鍵ID 80316BDAで施された署名
gpg: "Kevin J. McCarthy <kevin@8t8.us>"からの正しい署名
gpg: *警告*: この鍵は信用できる署名で証明されていません!
gpg:       この署名が所有者のものかどうかの検証手段がありません。
主鍵フィンガー・プリント: 8975 A9B3 3AA3 7910 385C  5308 ADEF 7684 8031 6BDA
$ tar tvf mutt-1.6.0.tar.gz |lv
$ tar xf mutt-1.6.0.tar.gz
$ cd mutt-1.6.0
$ ./configure --prefix=$HOME/usr/local --disable-dependency-tracking --enable-compressed --enable-fcntl --enable-hcache --enable-gpgme --enable-imap --enable-smtp --enable-pop --with-curses --with-gnutls --with-gss --with-idn --with-mixmaster --with-sasl --with-slang --without-gdbm --without-bdb --without-qdbm --build x86_64-linux-gnu
$ make
$ make install

Mutt 1.6.0にしても設定は1.5.24のものがそのまま使えているようです. 1000000通目以降も読めます.1034161通までは確認.Subjectに♪があると崩れたりするのはMutt 1.6.0でも同じでした.これはS-Langとかの問題なのかな?configureとかもちゃんと確認したほうがいいかもですね.

普通にGUIのメーラーを使えばいいんじゃ?と思われるかもしれませんがメールボックスが大きくなってくると辛くなってきます.そういう環境でもサーバで起動しっぱなしにしてるとサクサク動くしsshさえ使えればメールの読み書きもできるしということで使っています. ということで今はWebではSquirrelMail/gmail,GUIではSylpeed/ClawsMail,端末ではAlpine/Muttをという感じで併用中です.