ダウンロード:
shaling-dist-20070313.tar.gz
(70KBytes, 要 Python2.4以上)
更新履歴
デモ: その1 (メールを検索する)、 その2 (メールを書く)
Shaling (車輪) は UNIX と Python ユーザのための電子メールクライアントです。
警告: このプログラムは現時点ではまだ開発段階のものであり、エラー処理やテストが完璧ではありません。 そのため、何かあったときに自力で解決できる人以外は使用をお控えください。 また、機能や仕様は将来変更されることがあります。
ご意見・ご質問はこちらへ: http://groups.google.com/group/shaling-users/
ここでは、ユーザが個人のディレクトリにインストールする場合を想定しています。 (Shaling は単なる Python スクリプトなので、実行ファイルのパスさえ通っていれば どこにインストールしてもかまいません)
まずダウンロードした tar ファイルを適当な場所に展開します。
$ tar zxf shaling-dist-20070228.tar.gz $ cd shaling-dist-20070228 $ ls -l -rw-r--r-- 1 yusuke 463 Jan 2 11:27 Makefile -rw-r--r-- 1 yusuke 248 Jan 6 15:51 README drwxr-xr-x 2 yusuke 4096 Jan 14 01:31 bin (実行可能ファイル) drwxr-xr-x 2 yusuke 4096 Jan 14 01:21 docs (文書ファイル) drwxr-xr-x 2 yusuke 4096 Jan 14 01:33 etc (設定ファイルのサンプルなど) drwxr-xr-x 3 yusuke 4096 Jan 14 01:35 shaling (Shaling本体)
次に、このディレクトリ内にある bin
ディレクトリにパスを通します。
$ PATH=$PWD/bin:$PATH
その後、
とタイプすると、
「設定ファイルがない」という以下のようなエラーが表示されます。
shaling
$ shaling [Errno 2] No such file or directory: '/home/yusuke/.shalingrc' shalinrc not found!
もし、ここで
またはUnknown option: -E
といわれる場合は、古いバージョンの Python が実行されている可能性があります。 Python 2.4 以上をインストールし、それがSyntaxError: invalid syntax
python
というコマンドで
実行されるようにしてください。
コマンドがデフォルトで
Python 2.4 以外のものを実行する場合は、環境変数 python
PYTHON
に
Shaling を実行するための Python コマンドラインを設定してください。
(ここで指定している設定例: $ export PYTHON="python2.4 -E -O"
-E -O
オプションは実行速度を上げるためのものです)
.shalingrc
を書く
次に、ホームディレクトリ上に設定ファイル .shalingrc
を作成します。
先ほどの shaling-dist/etc/
ディレクトリ内に
サンプルの設定ファイルが含まれていますので、
これをホームディレクトリにコピーして編集します。
$ cp etc/shalingrc.sample ~/.shalingrc $ vi ~/.shalingrc
.shalingrc
ファイルの中身は Python スクリプトであり、
これは Shaling を起動する際に毎回実行されます。
したがって、このファイルの内容は Python の文法に従っている必要があります。
最低でも以下の 5つの変数を書き換えてください:
設定例:
TOP_DIR = '/home/username/Mail/' (データベース用のディレクトリ) SPOOL = '/home/username/.Maildir/new/' (スプール名) MY_FROM = 'Your Name <yourname@your.domain>' (From ヘッダ) EDITOR = 'emacs %s' (使用するエディタ) SMTP_HOST = ('smtp-server.your.domain', 25) (SMTPホスト名とポート番号)
TOP_DIR
(データベース用のディレクトリ)
Mail
などの名前にします。
SPOOL
(スプール名)
'/var/spool/mail/yusuke'
など)
'/home/yusuke/.Maildir/new/'
など、
末尾に /
を含むこと)
'pop3:ホスト名,ユーザ名,パスワード'
の形式
(この形式は、将来変更される可能性があります)
注意:
Maildir を指定する場合は、 (cur, new, tmp を含む) 大元のディレクトリではなく、
新しいメールが配信される new
ディレクトリを指定してください。
MY_FROM
(From ヘッダ)
From:
フィールドを指定します。
これは 'Yusuke Shinyama <yusuke@my.domain>'
のような文字列にします。
EDITOR
(使用するエディタ)
%s
の部分が編集するファイル名に置き換わりますので、
必ず %s
をひとつだけ含むようにしてください。代表的な例は
'vi %s'
や 'emacs %s'
でしょう。
SMTP_HOST
(SMTPホスト名とポート番号)
('ホスト名', ポート番号)
のタプルで指定します。
SMTP AUTH や POP before SMTP は今のところサポートしていません。
RULES
(メールの振り分け規則)
RULES = [ '/home/yusuke/rules.txt' ]
TERMINAL_CHARSET
(端末の文字セット)
euc-jp
です。
MESSAGE_CHARSET
(メールのデフォルト文字セット)
iso-2022-jp
が慣例になっています。
LABELS
(メールにつけるラベルとその名前の対応一覧)
'A'
〜'Z'
、'a'
〜'z'
)、
各ラベルに (アルファベット 2文字以上の) 名前をつけることもできます。
この辞書は「ラベルの文字→ラベルの名前」の対応関係を指定するものです。
たとえば、以下の例では、ラベル 'i'
が定義され、
このラベルは 'i'
という文字を覚えるかわりに 'important' という名前でも
指定できるようになります。
LABELS = { 'i': 'important' }
MESSAGE_COLOR
(ラベルとその表示色の対応一覧)
LABELS
で定義した) ラベル名で指定します。
たとえば以下の例では、ラベル 'important'
のついているメールは黄色で、
ラベル 'ml'
のついているメールは緑色で表示されます。
前のほうで指定されている色ほど優先順位が高く、
複数のラベルがついたメールは、最初にマッチしたラベルの色で表示されます。
なお、ここで使える色は ANSI 端末に準拠しており、MESSAGE_COLOR = [ ('important', 'yellow'), ('ml', 'green), ]
black
, red
, green
, yellow
,
blue
, magenta
, cyan
, white
です。背景色を指定する場合は bg_red
のように色の先頭に bg_
をつけてください。
複数の色は +
記号で組み合わせることができます。たとえば 'white+bg_red'
という指定は
背景色が赤で白い文字を表示します。色以外にも、
bold
や italic
、underline
という指定も
(端末がサポートしていれば) 使うことができます。
COMMAND_ALIASES
(コマンドのエイリアス)
tcsh
のエイリアスのように変数や関数を使うことは今のところできません。
これらのエイリアスは、Shaling をアプリケーションとして独立に使うのであれば
Shaling 内部で解釈され、Shaling コマンドをシェルからじかに実行する場合は
シェルのエイリアスに組み込まれます。
COMMAND_ALIASES = { 'all': 'scan all', 'next': 'scan -N', 'prev': 'scan -P', }
ADDRESS_ALIASES
(アドレスのエイリアス)
ADDRESS_ALIASES = { 'yusuke': 'Yusuke Shinyama <yusuke@my.domain>', }
なお、Shaling には既存のメールからアドレスを検索する機能があるため (メールを書く を参照)、 それほど沢山のエイリアスを指定する必要はありません。
MIME_HELPER
(外部アプリケーションの指定)
DEFAULT_PAGER
(ページャの指定)
less
あるいは環境変数 PAGER
の値になっています。
PRINTABLE_HEADERS
(デフォルトで表示するヘッダの一覧)
show
コマンドでは、メールのヘッダはここに指定した順序で表示されます。
EDITABLE_HEADERS
(編集可能なヘッダの一覧)
comp
あるいは edit
コマンドで編集できるヘッダの一覧。
HEADER_COLOR
(ヘッダの表示色)
シェルの設定で行うことは、基本的に以下の 2つだけです:
shaling-dist/bin/
にパスを通す。
eval "`shaling_aliases`"
を実行する。
shaling_aliases
は、Shaling で使うコマンドを、
シェルから直接呼び出せるようにするためのエイリアスを定義します。
shaling_aliases を実行すると、以下のような
出力が得られます:
$ shaling_aliases alias apply="shaling apply"; alias cleanup="shaling cleanup"; alias comp="shaling comp"; alias edit="shaling edit"; alias get="shaling get"; alias inc="shaling inc"; alias label="shaling label"; alias mime="shaling mime"; alias resolve="shaling resolve"; alias scal="shaling scan"; alias send="shaling send"; alias show="shaling show"; alias next="shaling next"; alias all="shaling all"; alias n="shaling n"; alias p="shaling p"; alias repl="shaling repl"; alias prev="shaling prev"; alias forw="shaling forw"; alias rmm="shaling rmm";
あとはこれを eval
に通せばエイリアスが定義されます。
etc/rc.bash
、etc/rc.tcsh
も参考にしてください。
先ほど TOP_DIR
に設定したディレクトリ名 (たとえば ~/Mail/
) に対して、
以下のように実行します。
$ shaling_maildb create ~/Mail/
すると、~/Mail/
以下にはつぎのようなディレクトリができているはずです。
$ ls -l ~/Mail/ total 16 drwx------ 4 yusuke 4096 Jan 6 22:44 inbox drwx------ 2 yusuke 4096 Jan 6 22:44 sel drwx------ 2 yusuke 4096 Jan 6 22:44 tmp
ここまで来たら、Shaling を使う準備ができたことになります。
Shaling では、新着メール (あるいは既存のメール) をタイトルや差出人、件名などによって
自動的に分類 (ラベルづけ) することができます。
この分類のための規則は、.shalinrc
の RULES
変数で指定される、
規則ファイルと呼ばれるテキストファイル内に以下のような構文で記述します:
[ラベル名] 述語1: 値1 述語2: 値2 ...
各ラベル名のあとに、1つ以上の述語・値の指定が続きます。
各述語は論理積 (and) で組み合わされます。
たとえば、以下の例では、From
行が "someone@important.domain
" で、
かつ、Subject
に "very important" という文字列を含んでいるメールに、
"important
" というラベルがつけられます。(#
以降はコメントです)
# 重要なメールに "important" のラベルをつける。 [important] From: someone@important.domain Subject: very important
指定できる述語は以下のとおりです。
なお、述語の前に -
または !
文字をつけると否定の意味になります。
述語によっては値に *
を使ってワイルドカードを指定できますが、
この値の意味は述語によって違ってきます:
From
, To
From
あるいは To
ヘッダの内容を指定します。
(なお、To
を指定した場合、実際にはそのメールの Cc
の値も検査されます。)
"@
" マークが含まれている場合、この値は From
の中のアドレスと比較され、
"@
" マークが含まれていない場合、この値は From
の中の名前フィールドと比較されます。
アドレスの指定方法は以下のとおりです:
address@domain
(ドメインを含む特定のアドレスにマッチ)
address@
(ユーザ名部分にマッチ)
@domain
(特定のドメインのすべてのアドレスにマッチ)
@*domain
(特定のドメインで終わるすべてのアドレスにマッチ)
Subject
Subject
ヘッダの内容を指定します。
この値は Python 正規表現のパターンとして扱われ、ヘッダの内容にマッチするかどうかが検査されます。
Date
today
(24時間以内に届いたメール) あるいは
future
(未来の日付になっているメール) の 2つのみです。
Label
*
" を指定すると、
なんらかのラベルがつけられているメールすべてにマッチします。
振り分け規則はファイルの先頭から順に検査され、マッチしたものからラベルがつけられていきます。
ひとつのメールは複数の規則にマッチすることもあり、その場合は複数のラベルがつけられます。
ただし、以下の例における [important!]
のように、
ラベル名の後に !
がついている場合、
この規則にマッチしたメールはその時点でラベルが決定され、
以降の規則はすべて無視されます。
振り分け規則の例:
# junky@evil から来るメールにはすべて "junk" のラベルをつけ、これ以降の規則は無視する。 [junk!] From: junky@evil # ドメイン important.domain から来るメールには、すべて "important" のラベルをつける。 [important] From: @important.domain # ラベル "important" がついていないメールで Subject に "get $$$" を含むメールには "junk" のラベルをつける。 [junk] -Label: important Subject: get \$\$\$
Shaling が実行できる状態で、
以下のように実行すると "Not found.
" と表示されるはずです。
$ shaling scan all Selection: all Not found.
これは、メールがまだデータベース中に一通もないことを示しています。 既存のメーラからメールを取り込むには次のようにします。
$ inc スプール名
ここでスプール名
は mbox 形式または Maildir形式の
スプールのパス名を指定します
(MH などで使われていた、1ファイルに 1メッセージが入っているものは、基本的に Maildir形式と同じです)。
mbox 形式のスプールを指定する場合は、そのファイル名 ('/var/spool/mail/yusuke'
など) を指定し、
Maildir 形式のスプールを指定する場合は、そのディレクトリ名 ('/home/yusuke/.Maildir/new/'
など
末尾に /
を含むもの) を指定します。
pop3 形式のスプールを指定する場合は、'pop3:ホスト名,ユーザ名,パスワード'
のような形式で指定します。なお、このさい ,
の前後にはスペースを入れてはいけません
(この形式は、将来変更される可能性があります)。
取り込むメールにあらかじめ特定のラベルをつけておきたい場合は、 以下のように指定します:
$ inc +ラベル スプール名
Mutt などから移行する場合で、 元のメールが入っていたディレクトリごとに別のラベルをつけたいときは 以下のようなシェルスクリプトを書けばよいでしょう:
cd ~/Mail/ for i in inbox outbox draft nyu ref; do inc +$i ./$i/ done
Shaling では、メールの読み書きはすべてコマンドを使っておこないます。
Shaling には 2つの起動方法があります。 ひとつは Shaling をアプリケーションとして起動しコマンド入力をおこなう方法で、 もうひとつは UNIX シェルから個々の Shaling コマンドを直接実行する方法です。
Shaling アプリケーションとして起動する場合は、
コマンドラインで shaling とタイプします。
「Shaling>
」というプロンプトが表示されるので、
あとは通常の Shaling コマンド (以下参照) を入力します。
$ shaling Welcome to Shaling version-20070228. Shaling> scan (コマンドを入力) ...
UNIX シェルからじかに個々の Shaling コマンドを実行する場合は、
まず shaling_alias を実行してその出力を eval
します。
これは、scan → shaling scan のようなエイリアスを定義するようになっており、
このエイリアスは各コマンドごとに Python インタプリタを起動します。
Shaling では「フォルダ」という概念が存在しません。 受けとったメール、および送信したメール、書きかけのメールは すべて同一のデータベースに保存され、必要に応じてここからメールを検索し「選択」した状態にします。 この選択されたメールの集合に対して、表示・編集・ラベル付けをおこなうわけです。 これは SQL の SELECT 文でテーブルを作成し、それに対して操作を行うのに似ています。
たとえば、データベース全体から「ニューヨーク」という文字列が含まれているメールを選択するには scan というコマンドを使います:
> scan ニューヨーク Selection: "ニューヨーク" 1:+ 06/12/21 eny@mailmz.emb-jap.. [to] [在ニューヨーク総領事館]【お知らせ】邦.. >> ... Subject: [在ニューヨーク総領事.. 2: 06/12/19 eny@mailmz.emb-jap.. [to] [在ニューヨーク総領事館]【緊急メール】.. >> ... Subject: [在ニューヨーク総領事.. 3: 06/12/14 eny@mailmz.emb-jap.. [to] [在ニューヨーク総領事館]【緊急メール】.. >> ... Subject: [在ニューヨーク総領事.. ... 1-20 of 324 results.
選択されたメールは、デフォルトで最大 20件までが表示されます。
(次の 20件を表示するには next (あるいは scan -N) を実行します。)
日付の新しいものほど上になります。以後、別の scan
コマンドを実行するまで、
この検索結果のメールすべてが「選択」された状態になっています。
選択されている各メールは左側のインデックス番号 (1, 2, 3, ... ) で指定することができます。
たとえば、ここで選択されている最初 (1番目) のメールを詳細表示するには show コマンドを使います:
> show 1 *** 1: (83110) [to] Date: Fri, 22 Dec 2006 05:36:54 +0900 From: eny@mailmz.emb-japan.go.jp Subject: [在ニューヨーク総領事館]【お知らせ】邦人安否確認システムのテスト運用 <<<総領事館からのお知らせ>>> 在留邦人の皆様へ 年末・年始に「全米・カナダ邦人安否確認システム」をテスト運用! ...
次のメールを表示するには show 1 と入力するか、
あるいは n と入力します
(n
は show -N
へのエイリアスです):
> n *** 2: (82845) [to] Date: Wed, 20 Dec 2006 05:06:23 +0900 From: eny@mailmz.emb-japan.go.jp Subject: [在ニューヨーク総領事館]【緊急メール】病原性大腸菌O157感染の流行、終了 在留邦人の皆様へ 当地における病原性大腸菌O157感染流行の終了について 14日付、CDC(米国疾病管理予防センター)ホームページに原性大腸菌O 157感染の流行について続報がありましたので、概要をお知らせいたします。 ...
n を入力するたびにメールは次のものへと移っていきます。 この後、検索条件を指定せず単にもう一度 scan と入力すると、現在の選択範囲を表示します:
> scan Selection: "ニューヨーク" 1:+ 06/12/21 eny@mailmz.emb-jap.. [to] [在ニューヨーク総領事館]【お知らせ】邦.. >> ... Subject: [在ニューヨーク総領事.. 2: 06/12/19 eny@mailmz.emb-jap.. [to] [在ニューヨーク総領事館]【緊急メール】.. >> ... Subject: [在ニューヨーク総領事.. 3: 06/12/14 eny@mailmz.emb-jap.. [to] [在ニューヨーク総領事館]【緊急メール】.. >> ... Subject: [在ニューヨーク総領事.. ... 1-20 of 324 results.
Shaling では、「いま着目しているメール」という概念があります。
いま着目しているメールには下線が引かれています。
このメールは、インデックス番号のかわりに .
(ピリオド) でも表すことができます。
現在データベースに格納されているメールをすべて選択する場合は scan all を実行します。この場合、データベースにあるすべてのメールが日付順に表示されます:
> scan all
Shaling では、検索条件としてメール本文中 (と添付ファイル) に含まれている文字列のほか、
差出人アドレスやメールの subject:、日付、ラベルなどが指定できます。
たとえば、@nyu.edu
というアドレスから来たメールを検索するには、
次のようにします:
> scan from:@nyu.edu Selection: "from:@nyu.edu" 1:+15:29 Wed NYU Graduate Stude.. [nyu] [src-gradlife] NYU Student Resource Ce.. >> ... From: NYU Graduate Student Li.. 2: 14:10 Tue Carol Hutchins [nyu] [Dept] news on forthcoming PR campaign.. >> ... From: Carol Hutchins <carol.h.. 3: 11:28 Mon Department of Comp.. [nyu] Grader & Tutor Positions Available in .. >> ... of Computer Science <Michael.. ...
検索条件は複数個指定することもできます。
この場合、複数の条件は「かつ (and)」によって組み合わされます。
たとえば "linux
" "scsi
" "raid
" の語がすべて含まれていて、
さらに "nylug
" のラベルがつけられているメールを検索するには次のようにします。
ラベルのついたメールは、"+ラベル名
" のような条件式で検索できます:
> scan linux scsi raid +nylug Selection: "linux" "scsi" "raid" 1:+ 06/09/07 plener2@verizon.ne.. [ml, nylug] [nylug-talk] dell server to give away >> ... next letter--drive bays ar.. 2: 06/08/25 jh [ml, nylug] [nylug-talk] OT: SATA<->SCSI RAID encl.. >> ... Subject: [nylug-talk] O.. 3: 06/02/07 Steven Lembark [ml, nylug] Re: [nylug-talk] Throw hardware at it... >> ... with > 8-10 500GB S/ATA.. ...
新しく検索を行うと、それまでの選択は解除され、新しい選択範囲が作りなおされます。
なお、この場合でも Shaling はデフォルトで過去 10個までの選択範囲を保存しており、
以前の選択結果を呼び出すことができます。詳しくは sel
コマンドを参照してください。
また、thread コマンドを使うと、
指定したメールが含まれているスレッドのメールをすべて選択することができます。
これはメールにつけられている Message-ID
や References
ヘッダをもとに
スレッドを検索します。
> thread Selection: "references: <20070308174130.GA23722@calimero.vinschen.de> <200703072310.l27NAMxP006468@cvs.openbsd.org> <200703072310.l27NAMxP006468@cvs.openbsd.org>" 1:+10:00 .. Corinna Vinschen [ssh, ml] Re: Announce: OpenSSH 4.6 released >> From: Corinna Vinschen <vinschen@re.. 2: 17:11 Wed Darren Tucker [ssh, ml] Re: Announce: OpenSSH 4.6 released >> From: Darren Tucker <dtucker@zip.co.. 3: 16:57 Wed Darren Tucker [ssh, ml] Re: Announce: OpenSSH 4.6 released >> From: Darren Tucker <dtucker@zip.co.. 4: 15:25 Wed Darren Tucker [ssh, ml] Re: Announce: OpenSSH 4.6 released >> From: Darren Tucker <dtucker@zip.co.. 5: 12:41 Wed Corinna Vinschen [ssh, ml] Re: Announce: OpenSSH 4.6 released >> From: Corinna Vinschen <vinschen@re.. 6: 18:10 Tue Damien Miller [ssh, ml] Announce: OpenSSH 4.6 released >> From: Damien Miller <djm@cvs.openbsd.or.. 1-6 of 6 messages.
メールを書く場合には comp
コマンドを使います。
引数として相手のアドレスを渡すと、あらかじめ環境変数 (あるいは .shalingrc
) で
設定したエディタが起動し、メールを作成できます。
> comp shinyama@example.com (エディタが起動する) From: Yusuke Shinyama <yusuke@my.domain> To: shinyama@example.com Cc: Bcc: Label: draft Subject:
宛て先アドレスとして @
を含まない文字列を指定した場合、
過去のメールからその文字列を含むアドレスが検索され、もっとも妥当と思われるアドレスが自動的に入力されます:
> comp 新山 (エディタが起動する) From: Yusuke Shinyama <yusuke@my.domain> To: 新山 祐介 <shinyama@example.com> Cc: Bcc: Label: draft Subject:
メールの編集が終わると、そのメールはデータベースに格納されます。 Shaling では、書きかけのメールも送信済みのメールもすべて (受けとったメールと) 同一の データベースに格納されます。ただしこの場合は "draft" というラベルがつけられ、 他のメールとは区別されます。
comp
コマンドが終了すると、いま編集したメールだけがデータベース上で選択された状態になります:
> comp shinyama@example.com (…メールを書く…) Selection: all 1:+20:17 Thr Yusuke Shinyama [draft] Issues on Japanese text >> Hello, I'd like to ... 1-1 of 1 results.
ここで、send コマンドを使うと、"draft" ラベルのついているメールを 送信することができます。
> send From: 'yusuke@my.domain' Rcpt: ['shinyama@example.com']
ここで使われている .
(ピリオド) は、
たったいま編集したメールを指定するのに使われています。
新着メールをデータベース中に取り込むには、inc コマンドを使用します。
> inc Selection: all 1:+21:40 .. Darren Tucker [ssh, ml] Re: "Out of memory" error lo.. >> Simon Vallet wrote:... 2: 05:21 .. Simon Vallet [ssh, ml] "Out of memory" error lookin.. >> Hi, we're currently... ...
inc コマンドを実行するとそれまでの選択範囲が解除され、 新しく取り込まれたメールだけが選択された状態になります。
Shaling ではメールにラベルをつけることができます。 Shaling では、受けとったメールや書きかけのメール、送信済みのメールなどはすべてラベルによって区別されます。 削除されたメールも「削除」のラベルがつくだけで、実際に削除されることはありません。 ラベルはひとつのメールに複数個つけることができ、 現在ついているラベルによってメールを色分け表示することもできます。
ラベルをつけるには、label コマンドを使います:
> label +important 1 Selection: all 1:+21:40 .. Darren Tucker [ssh, ml] Re: "Out of memory" error lo.. >> Simon Vallet wrote:... 1: 05:21 .. Simon Vallet [ssh, ml, important] "Out of memory" error lookin.. >> Hi, we're currently... ...
ラベルの名前は +ラベル名 のように指定します
(すでについているラベルを削除するには -ラベル名 のように指定します)。
すべてのラベル名は基本的にアルファベット 1文字で表され、
上の例での "important
" のような名前を使うためには、
あらかじめ .shalingrc
の変数 LABELS
に
ラベル名と文字との対応を登録しておく必要があります。
(ラベル i
に 名前 important
が指定されている場合、
+important のかわりにただ +i と指定してもかまいません。)
# .shalingrc LABELS = { 'i': 'important, ... }
ラベルのついたメールを検索するには、検索条件に +ラベル名 を指定します。 たとえば以下の操作ではラベル "important" のついたメールすべてが選択されます:
> scan +important Selection: all 1: 05:21 .. Simon Vallet [ssh, ml, important] "Out of memory" error lookin.. >> Hi, we're currently... 2: 15:18 Thu Santiago Pizzini [nyu, important] [Phd-students] Phd Research Orientatio.. >> From: Santiag... ...
メールに添付ファイルがついている場合、以下のようなフッタが表示されます:
> show 12 Date: Wed, 10 Jan 2007 14:10:50 -0600 (CST) From: "U.S._Postal_Service_"<U.S._Postal_Service@usps.com> Subject: USPS Proof of Delivery Info --- :1 [text/plain] This is a post-only message. Please do not respond. Service Type: Express Mail Thank you for requesting a Proof of Delivery letter on your shipment. ...== multipart/mixed :1 [text/plain] :2 [application/pdf] "EI651713775JP.pdf"
上のメールは 2つの部分からなっています。本文 (:1
) と、
添付された PDF ファイル (:2
) です。
これらの部分を表示するには インデックス番号:MIMEパート番号
のような形式で指定します (例. 12:2
)。
現在着目しているメールであれば、インデックス番号
は省略できます。
> show :1 (本文のみを表示する) > show :2 (添付PDFを表示する - xpdf が起動)
添付ファイルを保存するには get
コマンドを使います。
ファイル名を尋ねてくるので、保存したいファイル名を入力します。
ここでただ Enter を押すとメール中で指定されているデフォルトの名前になります。
> get :2 Filename [EI651713775JP.pdf] (Enter を押す) (該当部分が EI651713775JP.pdf という名前で保存される)
ファイルを添付したメールを送る場合は、まず comp
コマンドでメールを作成してから、
mime
コマンドを使ってファイルを添付します。
> comp shinyama@example.com (…メールを書く…) > mime . mydocument.pdf (いま書いたメールに PDF ファイル mydocument.pdf を追加する) > send . (送信する)
Shaling では、内部で使用している検索用のデータベースを 定期的に整理 (最適化) する必要があります。 これは何もせずデータベースに新しいメールを追加していくと、しだいに検索速度が低下するためです。 データベースを整理するには、単に cleanup というコマンドを実行します:
> cleanup Merging...
データベースの整理は最低でも数日に 1回程度は実行してください。
整理には通常数秒〜数十秒かかるため、
これは普段ユーザが使用していない時間に cron
などで実行してもかまいません。
なお、データベースの整理中もユーザはメールを検索したり読んだりすることはできますが、
新しいメールの追加や編集はできません。
apply [-r 規則ファイル] [-n] [-v] [-R] インデックス番号 ...
.shalingrc
で指定されている規則ファイルを使用します。
規則ファイルの文法については振り分け規則ファイルを書くを参照してください。
-r 規則ファイル
(rule) : メールをラベルづけするときの規則ファイルを指定します。
デフォルトでは、.shalingrc
で指定されている規則ファイルが使われます。
-n
(null) : リハーサルモード。各メールにつけられるラベルを表示しますが、
実際のデータベースは変更しません。これは規則ファイルのデバッグに使えます。
-v
(verbose) : 冗長なモード。規則を適用したあとの各メールをラベルを表示します。
cleanup
comp [-g] [-r] [-F] [-s 件名] [+ラベル] [インデックス番号] [宛て先1 宛て先2 ...
]
-r
オプションを指定してください。
保存したメールには "draft" のラベルがつけられます
(これは後にこのメールを送信すると "deleted" のラベルに変更されます)。
-g
(group reply) : 返信のさい、元のメールの To: および Cc: ヘッダに含まれていた宛て先をすべて残します。
-r
(reply) : 返信のさい、元のメールの文章を '>
' を使って引用します。
なお、標準で定義されているエイリアスである 'repl
' コマンドでは、これがデフォルトになります。
-F
(forward) : 指定したメールを添付ファイルとして別の宛て先に送信します。
標準で定義されているエイリアスである 'forw
' コマンドでは、このフラグを使っています。
-s 件名
(subject) : メールの件名 (Subject: フィールド) を指定します。
+ラベル
: 作成するメールにつけるラベルを指定します。
デフォルトでは、"draft" が使われます。
edit [-f] インデックス番号
-f
(forcibly) : "draft" のラベルがついていないメールを強制的に編集します。
get [-f フィールド名] [-F フィールド名] [-o ファイル名] インデックス番号[:パート番号]
-o
オプションによりファイル名を指定する必要があります。
ヘッダの
-f フィールド名
(field) :
ヘッダから特定のフィールドを抜き出し、"フィールド名: 値" の形式で標準出力に表示します。
-F フィールド名
(field) :
ヘッダから特定のフィールドを抜き出し、その値だけを標準出力に表示します。
inc [-q] [-E] [-P] [-r 規則ファイル] [+ラベル] [スプール名1 スプール名2 ...]
スプール名
が省略された場合は .shalingrc
で指定されている
デフォルトのスプールからメールを取り込みます。このような場合、通常スプールのメールは消去されますが、
-P
(preserve) オプションをつけることによりメールをスプールに残すことができます。
いっぽう、デフォルトでないスプールからメールを取り込んだ場合は
-E
(erase) オプションをつけないかぎり、そのスプールの内容が削除されることはありません。
-q
(quiet) : 新しく届いたメールの一覧を表示しません。
-E
(erase) : スプール中のメールをすべて削除します (スプール名を省略した場合は、この動作がデフォルト)。
-P
(preserve) : スプール中のメールを削除しません (スプール名を指定した場合は、この動作がデフォルト)。
-r 規則ファイル
(rule) : 取り込んだメールをラベルづけするときの規則ファイルを指定します。
デフォルトでは、.shalingrc
で指定されている規則ファイルが使われます。
+ラベル
: 取り込んだメールすべてにこのラベルを追加します。
label [-R] {+ラベル|-ラベル} ... インデックス番号1 インデックス番号2 ...
+ラベル
) あるいは削除 (-ラベル
) され、
すでにメールについている他のラベルはそのまま残されます。
-R
(reset) : 現在メールにつけられているラベルをすべて削除し、
指定されたラベルのみがついた状態にします。
+ラベル
: メールにラベルを追加します。
-ラベル
: メールからラベルを削除します。
mime [-R] [-m MIME形式] [-c 文字コード] インデックス番号:[パート番号] [ファイル名 ...]
-R
(remove) オプションが指定された場合、そのパートの添付ファイルを除去します。
なお、添付ファイルの MIME 形式については、ファイル名から推測されるものであれば自動的に推測されますが、
そうでない場合は -m
(mimetype) オプションで指定する必要があります。
テキストファイルを添付する場合は、-c
(encoding) でオプションで
文字コードを指定する必要があります。
-R
(remove) : 指定されたパート番号の添付ファイルを除去します。
-m
(mimetype) : 添付するファイルの MIME 形式 (text/plain
など) を指定します。
-c
(encoding) : テキストファイルを添付する場合、添付ファイルの文字コードを指定します。
resolve 宛て先1 宛て先2 ...
From:
, To:
, Cc:
のいずれかに含まれている
アドレスから検索されます。複数の候補が見つかった場合は過去 10件の統計をとり、
それらのアドレスを頻度の高い順に表示します。
scan [-n 表示メール数] [-a] [-P|-N] [-O] [検索条件1 検索条件2 ...]
-a
オプションを与えることで表示できます。
なお、一度に表示されるメールはデフォルトでは 20件で、この数は -n
オプションによって変更できます
(-n 0
を指定すると選択されているすべてのメールを表示します)。
途中までしか表示されなかった一覧は、-P
あるいは -N
あるいはオプションを
追加することで「前の 20件」「次の 20件」をそれぞれ表示できます。
(デフォルトでは、
これは prev
と next
というコマンドエイリアスにそれぞれ割り当てられています。)
-a
(all) : すべてのメールを表示します。デフォルトでは、
"deleted" (消去されたメール)、"junk" (ジャンクメール)、あるいは "sent" (送信したメール) の
ラベルがついたメールは表示されません。
-n 表示メール数
: 一度に表示されるメールの数を指定します。
0 を指定すると選択されているすべてのメールを表示します。
-P
(previous) : 現在までに表示された選択の前の部分を表示します。
-N
(next) : 現在までに表示された選択の次の部分を表示します。
-R
(reset) : 選択範囲の一番先頭に戻って表示します。
-O
(Or) : 検索条件を and ではなく or でまとめたものと解釈します。
send [-q] [-f] インデックス番号1 インデックス番号2 ...
-q
(quiet) : 送信時に送り元と宛て先アドレスの一覧を表示しません。
-f
(forcibly) : 送信時にヘッダの厳密なチェックを行いません。
メールの Subject: (件名) がついていないメールでも強制的に送信します。
sel [-q] [-n 表示メール数] [選択範囲番号]
sel
コマンドを実行すると、
現在保存されている選択をすべて表示します。
このさい -n
オプションで表示メール数を指定すると、
実際にその選択範囲における最初のメールを何件か表示します。
引数に選択範囲番号をつけて sel
コマンドを実行すると、以前の選択範囲を復元します。
-q
(quiet) : 選択範囲を変更したあとに、scan
を実行しません。
-n 表示メール数
: デフォルト値は 0 です。
show [-l] [-a] [-h] [-c 文字集合] [-P|-N] [インデックス番号1[:パート番号1] インデックス番号2[:パート番号1] ...]
パート番号
が指定されている場合はその部分だけを表示し、
パート番号
が指定されていない場合はメール全体を表示した後に
添付ファイルとパート番号の対応一覧が表示されます。
なお、画像などの添付ファイルを表示するさいには
.shalingrc
設定ファイルの MIME_HELPER
で指定された
外部プログラムを使います。
インデックス番号が指定されない場合は現在着目されているメールを表示します。
いちど表示されたメールは「着目された」状態になり、
ここから -P
または -N
オプションで、
着目しているメールを前後に移動させることができます。
-l
(list) : メールを (scan
コマンドのような) ダイジェスト形式で表示します。
-a
(all) : メール全体を表示します。このとき、ページャには
.shalingrc
設定ファイルの DEFAULT_PAGER
で指定されているプログラムが使用されます。
-h
(header) : メール中のすべてのヘッダを表示します。
-c
(encoding) : テキスト形式の添付ファイルを表示する場合の文字コードを指定します。
-P
(previous) : 一覧中で、現在表示している (着目している) メールのひとつ前のメールを表示します。
-N
(next) : 一覧中で、現在表示している (着目している) メールの次のメールを表示します。
thread [インデックス番号1 インデックス番号2 ...]
scan "references: `get -F message-id,in-reply-to,references`"
を実行したのと同じです。
以下のコマンドはデフォルトでエイリアスによって実現されています。
これらのエイリアスは .shalingrc
の COMMAND_ALIASES
変数によって
変更することができます。
all
: データベース中のすべてのメール一覧を表示します。 (scan all
)
next
: 一覧表示における次の 20件を表示します。 (scan -N
)
prev
: 一覧表示における前の 20件を表示します。 (scan -P
)
first
: 一覧表示の最初から表示します。 (scan -R
)
draft
: 書きかけの ("draft" のラベルがついている) メールを選択します。 (scan +draft
)
sent
: これまでに送信した ("sent" のラベルがついている) メールを選択します。 (scan +sent
)
n
: 現在注目している次のメールの内容を表示します。 (show -N
)
p
: 現在注目している前のメールの内容を表示します。(show -P
)
repl
: メールに返信 (reply) します。 (comp -r
)
forw
: メールを転送 (forward) します。 (comp -F
)
rmm
: メールを削除 ("deleted" のラベルをつける) します。 (label -R +deleted
)
back
: 現在のひとつ前の選択範囲に戻します。 (sel 1
)
~/Mail/sel/
に保存。
(いわゆる MIT/X ライセンスです、改変・再配布および商品への組み込みはご自由に)
Copyright (c) 2006-2007 Yusuke Shinyama <yusuke at cs dot nyu dot edu>
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.