メールはターミナルで - himalaya

カテゴリー:  Tech タグ:  mail

himalaya

Raspberry Pi5でターミナルでメールが読めたら良いなとCLIでメールが扱えるRust製のhimalayaを見つけたので試してみました。

himalayaとは

himalayaとは、 email-lib をベースとしてコマンドライン・インターフェイスでメールを扱えるRust製のツールです。

どうやら構想として単体で使うというより、このCLIベースのツールにUIを合わせて使うという想定のようです。

himalayaのインストール

以下のコマンドでインストールできるようです。

# Arch Linux (official)
$ pacman -S himalaya

# Arch Linux (from sources)
$ yay -S himalaya-git

# Homebrew
$ brew install himalaya

# Scoop
$ scoop install himalaya

# Cargo
$ cargo install himalaya

# Nix
$ nix-env -i himalaya

# Fedora/CentOS
$ dnf copr enable atim/himalaya
$ dnf install himalaya

aptではパッケージが見つからなかったので、今回はRustの環境を作って cargoでインストールしました。

himalayaの設定

設定はhimakaya --config でウィザードが起動して必要な項目をインプットしていけば設定ファイルを 作成してくれます。設定ファイルは $XDG_CONFIG/himalaya/config.tomlに保管されるので、これをベースに 編集しました。

[Fastmail]
backend = "imap"
email = "hogehoge@fastmail.com"
default = true
display-name = "Taro Yamada"
imap-host = "imap.fastmail.com"
imap-port = 993
imap-ssl = true
imap-login = "hogehoge@fastmail.com"
imap-auth = "passwd"
sender = "smtp"
smtp-host = "smtp.fastmail.com"
smtp-port = 465
smtp-ssl = true
smtp-login = "hogehoge@fastmail.com"
smtp-auth = "passwd"

folder.sync.filter.include = ["INBOX"]
folder.alias.inbox = "INBOX"
folder.alias.sent = "Sent"
folder.alias.drafts = "Drafts"
folder.alias.trash = "Trash"

[Fastmail.imap-passwd]
cmd = "pass fastmail.com/hogehoge@fastmail.com"

[Fastmail.smtp-passwd]
cmd = "pass fastmail.com/hogehoge@fastmail.com"

[Fastmail.pgp]
backend = "none"

パスワードを平文で書くのはためらわれたので、上記の設定ではpassコマンドから呼び出すようにしています。

passコマンドのインストールと設定は以下の通りです。gpgが導入されている前提です。

sudo apt install pass             # passコマンドのインストール
pass init fastmail.com            # fastmail.comのための領域を初期化
pass insert hogehoge@fastmail.com # パスワードの挿入

以上でパスワードがgpgで暗号化されて格納されます。 以降は、pass fastmail.com/hogehoge@fastmail.com というコマンドで 毎回gpgのパスフレーズを入力すると標準出力に登録したパスワードが出力されます。

多くのメールサービスでも同様ですが、ここでのパスワードはメールサービスへのログインパスワードとは別に アプリ用のパスワードを生成しておく必要があります。

himalayaの操作

以下は簡単な操作をコマンドラインからやってみました。

himalaya list  # メール一覧の取得

ID     │FLAGS │SUBJECT              │FROM                                   │DATE
100050 │✷     │【お得なキャンペー…  │NewsPicks                              │2024-04-04 06:02+09:00
100049 │✷     │Google Authenticato… │ITmediaエンタープライズ メールマガジン │2024-04-04 05:18+09:00
100048 │✷     │レビューをご報告い…  │Amazon Reviews                         │2024-04-03 20:08+00:00
100047 │      │【抽選チケット進呈…  │三井住友カード                         │2024-04-04 00:31+09:00
100046 │✷     │ご利用のお知らせ【…  │三井住友カード                         │2024-04-04 00:29+09:00
100045 │✷     │Staff Pick: Your Pr… │PledgeBox                              │2024-04-03 15:03+00:00
100044 │      │Font Awesome Mechan… │Keyboard Awesome                       │2024-04-02 15:29+00:00

himalaya folders  #メールボックス一覧の取得

NAME                    │DESC
INBOX                   │Extension("\\HasNoChildren")
Archive                 │Extension("\\HasNoChildren"), Archive
Drafts                  │Extension("\\HasNoChildren"), Drafts
Family                  │Extension("\\HasNoChildren")
Friends                 │Extension("\\HasNoChildren")
Junk Mail               │NoInferiors, Extension("\\HasNoChildren"), Junk
Learn_Spam              │Extension("\\HasNoChildren")
Notes                   │Extension("\\HasNoChildren"), Extension("\\XNotes")
Preservation            │Extension("\\HasNoChildren")
Recruit                 │Extension("\\HasChildren")
Sent Items              │Extension("\\HasNoChildren"), Sent
Snoozed                 │NoInferiors, Extension("\\HasNoChildren"), Extension("\\Snoozed")
Temporary               │Extension("\\HasNoChildren")
Trash                   │NoInferiors, Extension("\\HasNoChildren"), Trash

himalaya read 100044  # メールを読む

From: Keyboard Awesome <hello@m.fontawesome.com>
To: hogehoge@fastmail.com
Subject: Font Awesome Mechanical Keyboard!

ANNOUNCING THE LIMITED EDITION FONT AWESOME MECHANICAL KEYBOARD!

Available now, and exclusively as an add-on to the Web Awesome Kickstarter [https://www.kickstarter.com/projects/fontawesome/web-awesome?ref=f4176c] campaign, we're excited to announce our very first keycap set and custom keyboard collaboration with Mode Designs!

〜〜以下、省略〜〜


himalaya delete  #メールの削除
Email(s) successfully deleted!

himalaya まとめ

使ってみると、コマンドラインからメールが扱えるのでシーンによっては使えるかなと思いました。 ただし、送信系はうまく動作しなかったので確認できていません。

muttやneomuttのように普段使用するMUAとしては使い勝手がよいと言えないので、 バッチ的にメールを扱いたいときにはよいかもしれませんが移行する気にはなれません。

一時期このコマンドと連携しVimをUIとして機能されるVimプラグインがあったようですが、 既にDeprecateされていました。現在はGUIのインターフェイルを開発しているようですが、 それならば普通のGUIのメールアプリを使ったほうがよいでしょう。

コメント

Comments powered by Disqus