(このページは書いてる途中)
最小の!?メール環境に挑戦
0. 前置と方針
まずは, 聖典&
たつろーさんの
ページ(thx> たつろー様)
に行って, ポケビにふさわしいメール環境について勉強させていただきました.
わしは母艦では sendmail + mule + mew + IM という標準的(?)な
メール環境で過ごしておりますが, ポケビでだって当然出来ないことは
ありません. が, 確かにこの環境では, むちゃくちゃ重いしデカいことが
予想されます. で, 皆様どうやって過ごしておられるのかというと,
・聖典お勧めの環境
mule (or nemacs) + MH(mini) + mh-e + gnspool + poopclient
・たつろーさん
nemacs + MH(mini) + mh-e + smpost + popclient
・岩下さん?
mutt (よくわからん, 別に slang が必要?) + gnspool + ...
てな感じで, なかなかグー(死語?)なんだけれども, 何が嫌って
「MH はディスク容量を食う(3.3MB?)」ということです.
わしも, 最初に mail から MH に移行したときは, たまった
メールを簡単に任意のディレクトリに仕訳できたりして感動した
もので, MH のありがたみは重々承知ですが,
mule の mini パッケージ(1.7M?)よりでかいなんて
ことは, わしの 48 MB のポケビの世界では許されないこと
だったのであります.
そんなこんなで思い悩んでいたとき,
cmail
は, MH 要らずの elisp だけの MUA だということを知り,
トライしたのですが, どうも現在では nemacs はサポートされて
いないようでした. make すら通りませぬ (これはわしの技術不足?) .
このことをポケビのメーリングリストで質問してみたところ,
「古い VM
なら動くよ」ということを教えていただき(thx> 関根様),
早速わしもチャレンジしてみました.
VM というと, 最近は XEmacs 上の
こんなど派手な 絵を見たりするものですから,
こりゃあかんわと思っていたのですが, 確かに古い VM は
軽いし容量もコンパクトです.
こんな感じです.
・vm.elc 177 KB (vm-5.35)
・tapestry.elc 45 KB (vm-5.35 に付属)
・mail-utils.elc 30 KB (*1)
・sendmail.elc 95 KB (*1)
・movemail 13 KB (*2)
・smpost 22 KB (*3)
・偽sendmail 16行 (*3)
・popclient 36 KB (*4)
---------------------
計 420 KB ほど
*1
やはばさんのページにある ja-nemacs-el.tar.gz から
*2 nemacs-3.2.2 のソースから
*3
たつろーさんのページ から
*4 FreeBSD 2.2.5 の popclient のパッケージから
もちろん, 他に以下のものは必要ですが, これはメール以外でも
使うので, ここではカウントしますまい.
・nemacs(mini) 1.4 MB
・canna(mini) 1.5 MB
この小さなツールを組み合わせて, どのようにメールを読み書きするか
ということを, 次に簡単にまとめます.
1. popclient でメールを POP サーバから取り込む
ネットワークに接続されている状態において,
POP サーバから, /var/mail/$USER などのローカルなメールスプールに
popclient でメールを取り込みます.
2. VM でメールを読む, フォルダ(
*5)に分類する
nemacs で M-x vm として VM を起動すると, メールスプールから
movemail がメールを取り込んで, nemacs のバッファに表示します.
フォルダに分類したり, といった操作は VM 上でできます.
3. VM でメールを書く
VM 上で書いたメールを送信 (C-c C-c など) すると, 偽sendmail
が $HOME/.mqueue/ に送信するメールをためておきます.
4. smpost が SMTP サーバに実際にメールを送る
再びネットワークに接続して, smpost -d で SMTPサーバ
(というかサーバ上の本物の sendmail)に, たまったメールを送信します.
*5 フォルダ: VM の用語で, 実際上は 1 フォルダは
vm-folder-directory で指定したディレクトリ下の 1 ファイル
ということで, 実際にネットワークに接続するのは, 1. と 4. の
ときだけだというのは, 他の方の方法と同じです.
あとは, VM で, どれくらい便利に到着したメールを操作 (スレッド表示したり
MIME 対応にも出来るみたいだし
母体が nemacs なのでいろんな elisp を組み合わせられるし)
出来るかということが次の問題となるわけですが, わしはまだ VM を
使い込んでいないので, よくわかりません(笑).
1. ほな, VM などをインストール
ここでは, nemacs と canna の mini package は既にインストール
されているものとして話を進めます.
● popclient
popclient は, FreeBSD のパッケージから popclient 本体を
/usr/local/bin に置きます.
後で smpost をインストールすると, $HOME/.cshrc に
次のような alias が付加されるので使い方はわかりますが,
alias pop popclient -3 -k -u $USER -p PASSWORD -o /var/mail/$USER POPサーバ
|
実際に, メールが /var/mail/$USER に取り込まれるかどうか確認します.
● smpost
smpost は たつろうさんのページに説明されている方法でインストールします.
適当なディレクトリで展開して, ルートで install.sh , ユーザーで
user.sh を実行するだけです. ここで必要なのは, /usr/local/bin/smpost
が実行可能であることと, 以下の環境変数を設定することです.
setenv SMPOST_EMAIL_ADDR 'Hoge Hogeo < hoge@hoge.com >'
setenv SMPOST_SMTP_SERVER smtp.hoge.com
setenv SMPOST_DRAFTS ~/.mqueue/
setenv SMPOST_SENT ~/Mail/sent/
|
smpost の配布ファイルには, /usr/local/share/nemacs/lisp/mh-e.elc
などが含まれていますが, MH の mini package も既に導入されている
場合は, この環境で実際に smpost -d が使えるかどうかを試すと
良いかもしれません. そのときは, デフォルトの SMPOST_DRAFTS は
~/Mail/drafts です.
● 偽sendmail (これもたつろーさんのページから)
smpost を使うときに, 自ホストの sendmail に直接メールを投げるような
MUA の場合は, 偽sendmail で一度 ~/.mqueue にメールをためてから
smpost で実際にサーバの sendmail に投げられる, という記述が
たつろうさんのページにあります. VM も, まさにそのようなプログラムで,
vm.elc に呼ばれた sendmail.el が実際に sendmail にメールを投げます.
そこで, この偽sendmail を /usr/sbin/sendmail として置いて,
chmod 755 /usr/sbin/sendmail
すれば, $mailqueue (デフォルトでは ~/.mqueue) に投げられた
メールをためこんでおきます. 偽sendmail は簡単なシェルスクリプトなので,
目を通されると良いかと思います.
● VM 本体および関連ツール
・VM 本体に含まれるもの:
vm-*.el (VM 本体. nemacs でバイトコンパイルして最終的に vm.elc にする)
tapestry.el (buffer や window の状態についての関数)
・nemacs の elisp ライブラリから持って来るもの :
sendmail.el (メールを送信するときに必要)
mail-utils.el (メールを操作するときの諸々の関数)
以上の lisp のソースは, vm-2.53.tar.gz を展開して出来た
ディレクトリに全て放り込んで,
% make VM
とすると全ての *.el がバイトコンパイルされます.
でも, vm-*.el をバイトコンパイルする段階で sendmail.el と
mail-utils.el が見えない, と怒られるので, sendmail.el と
mail-utils.el は先に /usr/local/share/nemacs/lisp に置いておくか,
出来た sendmail.elc と mail-utils.elc をコピーしておきます.
と, 気を取り直してもう一度 make VM すると,
mule だとやはり warning が出まくりますが,
nemacs だときれいに make できるはずです. 出来た *.elc ファイル
(vm.elc と tapestry.elc)を, /usr/local/share/nemacs/lisp にコピーします.
・nemacs の ソースから持って来るもの :
もう一つ, /usr/local/share/nemacs/etc/movemail というツールが
必要です. movemail は VM がメールスプールからバッファにメールを取り込むときに
内部で呼ばれます. これは, nemacs の mini パッケージには入っていません.
ということで, nemacs のソースから
movemail.tar.gz にまとめましたので,
持って行ってください.
% tar zxf movemail.tar.gz
% cd movemail
% ln -s . ../hoge (ヘッダーをごまかすため)
% gcc -o movemail movemail.c
|
出来た movemail を /usr/local/share/nemacs/etc にコピーします.
・VM のための設定:
$HOME/.vm (VMが起動するときに読まれる, lisp で書く) を
わしは以下のようにしています.
; VM がメールをためこんでおくディレクトリ
(setq vm-folder-directory "~/Mail/")
; 起動時に一覧表示
(setq vm-startup-with-summary t)
; MH の inbox みたいなもの
(setq vm-primary-inbox "~/Mail/INBOX")
; 以下の二つは明示したらうまくいった
(setq mail-header-separator "--------")
(setq sendmail-program "/usr/sbin/sendmail")
|
$HOME/.emacs
(setq kanji-display-code 0)
(setq default-process-kanji-code 2)
(autoload 'vm "vm" "Start VM on your primary inbox." t)
|
これで, 自分の POP サーバにテストメールを送っておいて,
とすると, /var/mail/$USER にメールが取り込まれます.
とすると, 一覧表示モードで VM が起動するはずです.
そこで, スペースキーでメールの内容を表示できます.
でもって, r で, そのテストメールに reply するなり,
m で新たにメールを書くなりできますでしょうか.
メールを書いたら, C-c C-c で送信(実際は $HOME/.mqueue/1 という
ファイルが出来る)されます. 次に
で, SMTPサーバにメールが送られ, さらに $HOME/Mail/send に保存されます.
VM の説明は
VM の紹介
を参考にしましたが, パッケージに付属の info を日本語訳して html化した
ものが
(vm-jp)TOP
にあります. これは cgi で info2html していますので, ローカルで
読めません. それをまとめたのが下.
vm-jp.tar.gz (19 KB)
vm-jp.info を html化してローカルディスクのブラウザで見られるように
したもの.
vm-jp.gz (21 KB)
nemacs で texinfo-format-buffer したもの. nemacs の info で読めます.
東工大の ftp サイトには古い VM があります
一応, ここにも置いておきます.
vm-5.35.tar.gz (92 KB)
VM の本体.
movemail.tar.gz (13 KB)
vm から呼ばれる movemail と fakemail (必要ないかも)
のソースと必要なヘッダを nemacs-3.3.2 のソースから拾って来たもの.
vm-5.35-mini.tar.gz (70 KB)
以上の movemail, *.elc をコンパイルしたものです.
PocketBSD 上で make するのがうざいという方や, gcc がない
方のために作っておきました.
●VM 5.35 では出来ないこと:
・日本語ヘッダの MIME のエンコード, デコード.
(日本語ヘッダのメールなんて読まない(笑)).
・ときどき nemacs のバッファの表示が乱れるが, とりあえず使えます.
・smpost に渡すメールの日本語コードは自分で jis にしておかなければ
ならないのは, mh-e の場合と同じです.
・マルチパートには当然対応していません.
・宛先の alias が使えない. これはなんとかしてみたいです.
・VM を起動すると, 最初エラーが出ることがありますが,
「M-x vm」で再度 VM を起動して, 「g」とすると, 新規に到着したメールを
取り込めます. この問題は調査中です.
2. さらに
● ML 上で掛水さんから以下のような情報をいただきました.
(thx> 掛水様)
・ 日本語ヘッダの問題
上の東工大の ftp サイト, あるいは本サイトから
vm-5.35W.tar.gzの
パッチをあてて, mm を導入すると日本語ヘッダの MIME を
扱うことができるそうです. ちょっとだけ容量は大きくなりますが,
MH に較べればどうってことないでしょう.
インストール方法は, ソースのドキュメントに詳しくあります.
・ movemail って要らないんじゃあ
popclient で直接 INBOX にメールを取り込めば, こんな感じに
popclient -3 -k -u XXXXXXX -o ~/Mail/INBOX XXXX.XXXX.co.jp
|
movemail は要らないようです. わしもやってみましたが,
ちゃんと「未読」として新しいメールが VM で扱われます.
●さらに追加情報!
ML で関根さんからさらなる情報です. (thx> 関根様)
・nemacs では, 5.72 まで使える(スレッドにも対応しているそうです).
5.72 はこちらで
・MIME 対応については
ここから辿れます.
● Wanderlust も使えるそうだ.
再び掛水さんから (thx> 掛水様)
Wanderlustも使えるという
情報をいただきました. IMAP 対応. 最強のメーラーといった感じです.
ポケビユーザーもいらっしゃるらしいです.