Sup
Sup は大量のメールを管理する必要があるユーザーのために開発されたパワフルなメールクライアントです。Mutt と Gmail をあわせて閲覧することができ、高速な操作・検索・タグ付与・自動的な連絡先管理が可能です。一度に様々なアカウントを扱うことができます。
目次
インストール
Sup は Ruby 2.3.3 でのみ動作します。Arch の Ruby は新しいため sup がクラッシュしてしまいます。現在のところ Sup は新しいバージョンの Ruby で動作させるためのメンテナンスが活発に行われていません。
RVM を使うことで一時的に sup をインストールできます。
設定
Sup には sup-config
という名前の使いやすい設定ツールが付属しています。コンソールで起動して以下の手順に従ってください:
- フルネームを入力。
- メインのメールアドレスを入力。また、他のメールアドレスも入力。
- 署名ファイルのパスを入力 (存在する場合)。
- 新しいメールを作成するときに使用するエディタを入力。エディタに渡す引数も指定してください。
- メールのソースを追加:
- mbox ファイル
- maildir ディレクトリ
0.12 リリースでリモートソース (POP3, IMAP, IMAPS, mbox+ssh) のサポートは削除されました。
Sup は基本的に MUA (メールユーザーエージェント) であり、メールのダウンロード自体は管理しません。offlineimap, fetchmail, rsync などのツールを使ってローカル環境の mbox や maildir フォルダにメールを転送することができます。
sup wiki に載っているサンプル では offlineimap を使って gmail+imap ソースを設定しています。Mutt#POP3 サブセクションにはメールの転送方法についての情報が存在します。
メールソースを追加したら sup-config
によって sup-sync
コマンドが実行され、メールがメールボックスにインポートされます。
メールのフィルタリング
sup は一度に全てのメールを表示しフォルダを使いません。メールの表示・非表示はフィルタリングで管理する必要があります。
メールをフィルタリングする方法は様々です。メールにアクセスする方法によってサーバー側でフィルタリングしたり (例: imapfilterAUR) あるいはクライアント側でフィルタリングできます。
以下を見てどちらにするべきか決めてください:
- 常に同じコンピュータを使ってメールをチェックする場合、ローカルでフィルタリングしてください。
- 他のコンピュータを使っているときでもメールを読めるようにしたい場合、サーバー側でフィルタリングしてください。
ローカルフィルタリング
sup のフック before-add-message.rb を使うことで簡単にメールにラベルを付与したりアーカイブしたり既読にしたりできます。ruby の知識が多少必要です。
サーバーサイドフィルタリング
Sup はあくまで非表示にするだけなのでサーバーを綺麗に保つには他のツールを使う必要があります。人気のあるメールフィルターとして imapfilterAUR が存在します。example.config から設定を始めると良いでしょう。
sup ソース
Sup は ~/.sup/sources.yaml
ファイルを使ってメールとインデックスを同期し、ソールのメールに複数のラベルを追加できます。
--- - !supmua.org,2006-10-01/Redwood/Maildir uri: maildir:/home/User/Mail/Inbox usual: true archived: false id: 1 labels: [] - !supmua.org,2006-10-01/Redwood/Maildir uri: maildir:/home/User/Mail/Pulse usual: true archived: true id: 2 labels: - pulse - cruft
上記の例では Pulse フォルダに pulse と cruft というラベルが使われています。Pulse からのメールは全てインポート時にアーカイブされ、画面が溢れないようにビューに表示されません。ラベルと id について詳しくは sup wiki を見てください。
sup フック
sup にはプログラムを簡単にカスタマイズできるようにフックが存在します。詳しくは sup wiki を参照してください。
before-poll フック
自動的にフィルタリング・同期するには、before-poll を使って起動フックを設定します:
File: ~/.sup/hooks/before-poll.rb Executes immediately before a poll for new messages commences. No variables.
フィルタリングを行わない例:
say "Running offlineimap..." system "offlineimap", "-o", "-u", "quiet"
フィルタリングを行う例:
say "Running imapfilter..." system "imapfilter", "-c", "path-to-config.lua" say "Running offlineimap..." system "offlineimap", "-o", "-u", "quiet"
sup を起動するとフィルタリングが開始されメールが同期されます。詳しくは sup wiki を参照。
HTML 添付ファイルを表示
以下の内容で ~/.sup/hooks/mime-decode.rb
を作成:
require 'shellwords' unless sibling_types.member? "text/plain" case content_type when "text/html" `/usr/bin/w3m -dump -T #{content_type} #{Shellwords.escape filename}` end end
あるいは:
require 'shellwords' unless sibling_types.member? "text/plain" case content_type when "text/html" `/usr/bin/links -dump #{Shellwords.escape filename}` end end
詳しくは sup wiki を参照。
テキスト以外の添付ファイルを表示
以下の内容で ~/.sup/hooks/mime-view.rb
を作成:
# filename has already been shellesacped pid = Process.spawn("xdg-open", filename, :out => '/dev/null', :err => '/dev/null') Process.detach pid true
詳しくは sup wiki を参照。
使用方法
sup
コマンドを実行すると Sup メールクライアントが起動します。プログラムは sup-config
によってインポートされたメッセージを表示します。
新規ユーザーにとって一番重要なキーは ?
です。いつでもキーボードコマンドのリストを表示してくれるので、プログラムを操作する方法を確認できます。
スレッドを移動するには、方向キーか j
と k
キーを使います (Shift+j
と Shift+k
は Page Up や Page Down キーのように使えます)。新しいメッセージでスレッドを切り替えるには、Tab キーを押します。Sup はデフォルトでは全てのスレッドをロードしません。Shift+m
でスレッドをロードします (ウィンドウにメッセージが自動的にロードされます)。
スレッドを表示するには、選択してから Enter
キーを押します。スレッドを表示しているときに個別のメッセージを選んだら、Enter
キーを押して開いたり閉じたりできます。Shift+n
を押すと新しいメッセージだけを開き (デフォルトビュー)、Shift+e
を押すと全てのメッセージの状態を切り替えます。o
を押すとメッセージの中で非表示となっている部分が表示されます (署名など)。
スレッド内のメッセージを移動するには、n
と p
キーを押します。メッセージのヘッダーを表示するには h
キーを押します。
バッファを切り替えるには b
キーを押すか、;
キーを押して開いているバッファのリストを表示します。バッファを終了するには x
キーを押します。
スレッドをアーカイブするには a
キーを押します。inbox から非表示になり、誰かが返信すると再度表示されます。スレッドを終了するには &
キーを押します。Gmail の "mute" 機能と同じで、返信されても非表示のままになります。inbox にはずっと表示されませんが、検索結果には表示されます。
スレッドにスターを付けるには *
キーを押します。スレッドをスパムとして扱うには Shift+s
キーを押します。Sup にはスパムフィルターが内蔵されていないため、spamassassin などのプログラムが必要です。
スレッドにタグを付けるには t
キーを押します。スレッド内のメッセージにラベルを付けるには l
キーを押します。ラベル検索は Shift+l
キーです。検索したいラベルで Enter
するか Enter
を押してからラベルのリストを呼び出します。全文検索は \
キーです。
連絡のリストは Shift+c
キーで表示できます。リスト内の誰かにメールを出したいときは名前を選択してから Enter
キーを押してください。
バックアップとリストア
メールのバックアップは非常に重要です。mbox ファイルや maildir ディレクトリなどソースをバックアップしてから、以下のコマンドを実行してください:
$ sup-dump > filename
テキストファイルに全てのメッセージの状態がバックアップされます。テキストファイルからメッセージの状態をリストアするには、以下のコマンドを実行:
$ sup-sync [<source>+] --restored --restore filename
上記のコマンドでバックアップされるのはメッセージの状態だけです。メッセージ自体は別個にバックアップする必要があります。
トラブルシューティング
Illegal instruction (core dumped) という表示を残してクラッシュする
sup
は SSE2 命令を使用するようにコンパイルされた Xapian という名前の検索エンジンを使っています。CPU が SSE2 命令をサポートしていない場合、以下のようなエラーメッセージが表示されます:
Illegal instruction (core dumped)
問題を解決するには --disable-sse
フラグを使って Xapian をコンパイルします。
1. https://rubygems.org/gems/xapian-ruby から gem をダウンロード。
2. 以下のコマンドを実行:
$ gem unpack xapian-ruby.gem $ gem unpack --spec xapian-ruby.gem $ mv xapian-ruby.gemspec xapian-ruby/ $ cd xapian-ruby
3. Rakefile
を編集して設定コマンドの末尾に --disable-sse
を追加:
system! "./configure --prefix=#{prefix} --exec-prefix=#{prefix} --disable-sse" system! "./configure --prefix=#{prefix} --exec-prefix=#{prefix} --with-ruby --disable-sse"
4. 以下のコマンドを実行:
$ gem build xapian-ruby.gemspec $ gem install --local xapian-ruby.gem
これで Xapian の問題は解決するはずです。sup-config
を実行したときに以下のようなエラーメッセージが表示される場合:
This Sup version expects a v4 index, but you have an existing v0 index. Please run sup-dump to save your labels, move /home/user/.sup/xapian out of the way, and run sup-sync --restore. (RuntimeError) Rats, that failed. You may have to do it manually.
sup
や sup-dump
など別の実行ファイルを使ってみて Illegal instruction (core dumped) エラーメッセージが表示されないか確認してください。