Sup

提供: ArchWiki
2017年5月13日 (土) 21:11時点におけるKusakata (トーク | 投稿記録)による版 (翻訳)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

Sup は大量のメールを管理する必要があるユーザーのために開発されたパワフルなメールクライアントです。Mutt と Gmail をあわせて閲覧することができ、高速な操作・検索・タグ付与・自動的な連絡先管理が可能です。一度に様々なアカウントを扱うことができます。

インストール

Sup は Ruby 2.3.3 でのみ動作します。Arch の Ruby は新しいため sup がクラッシュしてしまいます。現在のところ Sup は新しいバージョンの Ruby で動作させるためのメンテナンスが活発に行われていません。

RVM を使うことで一時的に sup をインストールできます。

設定

Sup には sup-config という名前の使いやすい設定ツールが付属しています。コンソールで起動して以下の手順に従ってください:

  1. フルネームを入力。
  2. メインのメールアドレスを入力。また、他のメールアドレスも入力。
  3. 署名ファイルのパスを入力 (存在する場合)。
  4. 新しいメールを作成するときに使用するエディタを入力。エディタに渡す引数も指定してください。
  5. メールのソースを追加:
    1. mbox ファイル
    2. 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 から設定を始めると良いでしょう。

ヒント: サーバーによってはクォータが設定されており、archivemailAUR を使うことで古いメールをサーバーから消去できます。

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 フォルダに pulsecruft というラベルが使われています。Pulse からのメールは全てインポート時にアーカイブされ、画面が溢れないようにビューに表示されません。ラベルと id について詳しくは sup wiki を見てください。

警告: ソースの id は一意になるように設定しなければなりません。

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 を参照。

テキスト以外の添付ファイルを表示

ノート: xdg-open を使うには xdg-utils をインストールします。

以下の内容で ~/.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 によってインポートされたメッセージを表示します。

新規ユーザーにとって一番重要なキーは ? です。いつでもキーボードコマンドのリストを表示してくれるので、プログラムを操作する方法を確認できます。

スレッドを移動するには、方向キーか jk キーを使います (Shift+jShift+k は Page Up や Page Down キーのように使えます)。新しいメッセージでスレッドを切り替えるには、Tab キーを押します。Sup はデフォルトでは全てのスレッドをロードしません。Shift+m でスレッドをロードします (ウィンドウにメッセージが自動的にロードされます)。

スレッドを表示するには、選択してから Enter キーを押します。スレッドを表示しているときに個別のメッセージを選んだら、Enter キーを押して開いたり閉じたりできます。Shift+n を押すと新しいメッセージだけを開き (デフォルトビュー)、Shift+e を押すと全てのメッセージの状態を切り替えます。o を押すとメッセージの中で非表示となっている部分が表示されます (署名など)。

スレッド内のメッセージを移動するには、np キーを押します。メッセージのヘッダーを表示するには 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.

supsup-dump など別の実行ファイルを使ってみて Illegal instruction (core dumped) エラーメッセージが表示されないか確認してください。

参照