カテゴリー:emacs・mew

検索



Please click now!!

sqlite3-ruby な ports 作りました。

僕はメールを読んだり書いたりするときに emacs 上の mew を利用しています。で、今回たまたま「マニュアル」というのを見ていたら "対話" というのがあったんですね。

この "対話" と言うのは mew のインストール時に合わせて /usr/local/bin/cmew と言うコマンドをインストールして、こいつが sqlite3 に Massage-ID を突っ込んで、一括して mew のバーチャルモードで表示してくれる。と言う機能です。

cmew 自体は ruby で書かれているので、実行。ばーんっ!! とかやるのですが、 require 'sqlite3' の行がエラーになります。どうやら ruby の sqlite3 モジュールが無いみたいなんですね。

それならば ports からインストールするべか。とか思って /usr/ports/ 辺りを捜すのですが、あれあれ? ports になって無いじゃん・・。orz。 となるのでありました。


ちゅーこって、ports 作って以下の URL に置いたので使ってみたい人はご利用くださいー。って感じなのであります;-)。

ダウンロードした後、/usr/ports/databases 辺りで展開して make;make install すればおしまいです。

http://icmpv6.org/Prog/FreeBSD_ports/ports-sqlite3-ruby-20110629.tgz


インストールが完了したら cmew を実行する(mew 上で "KI" と叩く)と ~/Mail/id.db とかいうのができて "V" で一覧表示してくれるようになります。この辺りについては mew のマニュアルを見てください。


それにしても FreeBSD の ports 的には databases/ruby-sqlite は sqlite2 対応、databases/rubygem-sqlite3 っちゅーのはなんかちょっと冗長気味ででかいぞ。でもって cmew が動かないぞ。的なので、ズバっと cmew が動作する sqlite3 モジュールは存在していないんですねぇ。


中々思い白い。それにしても ruby をおいかけるなんざ dtcpc 以来だぞぉ;-)。


あ。当然ながら "ノラ ports" です。コミットしてくださる方、絶賛募集中;-)。けど、利用者、少ないんだろうなぁ。だとするとコミットしてもあまり価値無いような気がしますねぇ・・f(^^;;。

mozc-emacs(mozc.el) な ports 作りました。

emacs-23.3 になったら ibus.el 経由の mozc がインラインで日本語入力できなくなってしまいました。

以前のエントリで「ibus-mozc を使う。」というのを書いているので詳細についてはそっちを参考にしてください。

それにしても emacs 上でインラインで日本語入力ができないのはちょっと悲しいなぁ。と思い、ibus.el とか眺めたり、ウェブで調べてみたりしたのですが、 Vine のほうでは無事に吸収できたようですね。 FreeBSD ではそーは行かないみたい・・。

ちなみにインラインで日本語が入力できると何か嬉しいかと言うと、Ctrl や Esc キーなどがかな漢字変換システムに食われることなく emacs のキーバインドが利用できる点ですね。これは実際にやってみると結構重要です。


なので、他に何か別の emacs で利用できる日本語入力無いかなぁ?とか思い調べてみたら、mozc 自体が emacs lisp として mozc.el というのを提供しているのねぇ。

早速試してみました。が・・。
mozc 関連の FreeBSD の ports としては japanese/mozc-server 、 japanese/mozc-tool があるのですが、このどちらでも mozc.el をインストールしてくれない。きっと ports の作者さんは emacs との関連性をつけるのを嫌ったのでしょうなぁ;-P。

mozc のソースの中に unix/emacs/mozc.el があります。が、こいつは mozc_emacs_helper という、同じディレクトリにあるソースをコンパイルしたものをインストールしてあげないと動作しないんですな・・。orz。

ちゅーこって mozc-emacs とか言う ports を作りましたよー。そもそも、mozc のコンパイルは python を利用しているので非常にややこしい。試行錯誤した結果 mozc のソースツリーで以下のコマンドをたたけば mozc_emacs_helper の make ができます。

# setenv BUILD_COMMAND gmake
# ./build_mozc.py gyp
# ./build_mozc.py build -c Release --qtdir= /usr/local/lib/qt4 \
unix/emacs/emacs.gyp:mozc_emacs_helper
# cp out_linux/Release/mozc_emacs_helper /usr/local/bin/
# cp unix/emacs/mozc.el /usr/local/share/emacs/23.3/site-lisp/

これで mozc.el が動き出します。あ。当然 GTK_IM_MODULE 環境変数などの設定は必要ですよ。
僕の場合、emacs 以外は ibus-mozc を利用するようにして、 emacs からは ibus 経由ではなく、直接 mozc と通信できるように、あとで下のほうに出てきますが ~/.emacs に設定しました。


で、これらをやってくれる ports は以下に置きました。

http://icmpv6.org/Prog/FreeBSD_ports/ports-mozc-el-20110614.tgz

基本的には emacs に関連した部分のみを切り出したので mozc-el と言う ports にしました。ports/textproc 辺りに展開してください。 mozc_emacs_helper を make してインストールしてくれます。あと、 mozc.el と mozc.elc をインストールします。関連性で editor/emacs が必要がです。
また、当然ですが、 make deinstall にも対応しています。


で、~/.emacas への設定ですが、以下のような感じでしょうかね。

(require 'mozc)
(set-language-environment "Japanese")
(setq default-input-method "japanese-mozc")
(global-set-key (kbd "C-o") 'toggle-input-method)

早速入力してみると。おぉっ!! ちゃんとインライン入力ができますね。すげー。試しに emacs -nw な状態でも試してみましたがこちらでも日本語入力ができます。ibus-mozc よりもちょっと良い感じです。


さてとー。僕の場合、もう何回もここに書いていますが、かな入力の人なんですよ。で、その設定はあるのかなー?とか思って色々調べてみましたが、今の段階では mozc.el にはカナ入力の設定は無いみたいで、mozc.el には 「;; TODO(yuizumi): Supports Kana input.」などと書かれていました。orz。

通常、mozc の設定は mozc_tool_config で、行うのですが、ここではちゃんとかな入力になっているのですが、やはり ibus.el もそうですが emacs lisp の側でも何かしら対応しなければならないんでしょうなぁ。


と、言うことで、かな入力の僕にはいまいちご利益が無いのですが、ふつーにローマ字入力をする人にはベタに mozc が利用できるのと、あと tty 上の emacs でネーテェブというかインラインで日本語入力ができるというのは非常に嬉しいことではないでしょうか。

是非とも ports になってもしくは ports からインストールできるようになって頂きたいものだと、僕は思いました;-)。

scim-bridge.el な ports 作りました。

ちょっと前のエントリーで「ibus-mozc を使う。」ってのを書きました。 「もづく」を使うよ。でもって emacs23 からでも使えるよ。ってやつですね。

で、ibus.el の作者さんの 「irie @ ウィキ」を眺めていたら「scim-bridge.elのぺえじ 」 ってのもあるのに気づきました。

この scim-bridge.el をインストールして emacs23 から利用すれば scim と通信して日本語入力ができるようになるんかな?とか思った次第であります。

でもって、scim と言えば scim-bridge はあるし、scim-canna もあるし scim-bridge-qt4 もあるしで、いろいろあるので scim-bridge.el を利用すれば canna.el なしで Canna の入力が可能になるのかな?とか思い早速試してみました。

まずは scim-bridge.el の ports を作ってみました。参考にしたのは同じ作者さんの ibus.el の ports です。textproc/ibus-el があるのでこれを参考にして作ってみました。以下の URL に置いてあります。

http://www.icmpv6.org/Prog/FreeBSD_ports/ports-scim-bridge-el-20100823.tgz

これをダウンロードしたあとに /usr/ports/textproc/ 辺りに展開してインストールしてください。一応関連性としては textproc/scim と textproc/scim-bridge は付けています。あとは自分の好みで japanese/scim-canna や textproc/scim-bridge-qt4 などをインストールしてください。

~/.emacs に記述するサンプルはこの辺りに置いておきます。

(setq jaime "???") の文字列で mozc を利用するか scim-bridge を利用するか決定してください。

scim の 設定方法については以前書いた「kde4-4.4.5+qt-4.6.3 環境の scim-1.4.7。」を利用してください。これで多分 scim-bridge.el が動くようになったかと思います。

scim-bridge.el を利用してみてまず驚くのが、ターミナルへの文字入力と一緒でディスプレー上に SCIM のメニューバーが表示されることですね。本当に「ネーティブに動作しているの?」って思うんですが、Ctrl が入力される場面とか、日本語入力ができない時にはちゃんと SCIM がオフになるんですね。この辺りすごい。まぁ、ibus-mozc.el でもその動作は一緒なんですけどね。さすが同じ作者さんだけあって、動作が統一されていてなかなか嬉しいです;-)。また、感激します;-)。ありがとうございます。

あと、emacs 起動時には以下のように IME を none にして起動しているのでこれは多分文句無しにネーティブで動いているんだろう。という感じです;-)。

env XMODIFIERS=@im=none /usr/local/bin/emacs --no-splash

さてさて。僕がどうしてこの ports を作ったかと言うと・・。ちょっと前のエントリーで「emacs-23.2+Canna な emacs の ports。」と言うのを書いているのですが、この時に書いたパッチは今の emacs のメンテナの Ashish SHUKLA さん にメールを送っていて、しばらくやり取りしたあと、彼は 06/10 に改定した emacs の ports を Giorgos Keramidas さん 宛に奥っているんだけど、それは今でもちっとも反映されていないんですね。

なので、emacs23 の make config 時のオプションに WITH_CANNA=yes ってのがなかなか現れない・・。orz。 半分諦めの境地ですかね。


あと、実はもう一点あって、Ashish SHUKLA さん から emacs24 (ports 的には editors/emacs-devel なんですが) の WITH_CANNA の パッチも書いてねー。とか言われて、ちょっと書き直し始めたのですが、これがまたあーたっ!! emacs24 の configure の形式とか Makefile.in とかがずいぶんと様変わりしてしまって、ソースコード治すよりもそっちのほうが大変。みたいな感じになっているのであります・・。orz 僕、 C は解っても autoconf/automake はいまいちよくわからないのよねぇぇ・・f(^^;;。

ちゅーこって、ことえり キーバインドに対応した ibus-mozc に走るか scim-bridge に走ったほうがよっぽど早いのであります。 scim-bridge は Canna に対応しているしねぇ;-)。

と、言うことで、僕は多分今後 Emacs 用の WITH_CANNA なパッチは書く事はないと思います。是非とも scim-bridge.el のほうを利用していただけれると嬉しいのであります。


それにしても scim-bridge.el かぁ。これを利用すると Canna キーバインドでの文字入力もサクっとできるし嬉しいのであります。あ、筆者の場合、Canna のキーバインドをかな入力で利用しています。ローマ字入力は試していません。けど、~/.emacs の (scim-define-common-key ?\C-* t) の "*" の部分の文字を任意のものに変更するといろいろなキーバインドが利用できるようになると思います。

emacs-23.2+Canna な emacs の ports。

以前「emacs-canna の ports。」と言うエントリーで、emacs-23.1+Canna な ports を作りました。と書きましたが、FreeBSD のports-CURRENT の editor/emacs が 23.2 になったみたいなので、 emacs+Canna の ports も23.2 に追随してみました。

以下の URL からダウンロードできます。

http://icmpv6.org/Prog/FreeBSD_ports/ports-emacs232-canna-20100521.tgz

/usr/ports/japanese 辺りで展開して make してください。

ちょっと説明すると、editoe/emacs は make config に対応したみたいなので、config の画面で CANNA を選択できるようにしました。

後、Canna for GNU Emacs23 では emacs-23.1 にしか対応していないので、このパッチを参考にさせて頂いて emacs-23.2 に適用できるように改修しました。emacs-23.2 対応の パッチは以下の URL にあります。Linux 方面の人はこっちのほうが嬉しいですかね;-)。

http://icmpv6.org/Prog/emacs232canna-20100521.patch.gz

と、言うことで自分で書いたモノを、短い時間ですが使ってみても特に問題無くネーテブに Canna で日本語入力ができています。もし良かったら使ってみてください;-)。


さてと。この ports を今後どうするか。と言うのが大きな課題です。一応 make config で CANNA が選択できるようになったので editor/emacs に吸収してもらっても良いかなぁ。とか思っているのですが、そーすると send-pr したり、 ports のメンテナに連絡とったりするかなぁ。

emacs-23.1 の ediotr/emacs は config の画面が出なかったのであれだったんだけど 23.2 の ports は良くできているような気がしないでも無いのでねぇ。今回は連絡取ってみようかなぁ。

と、言うことで Canna での入力を必要としている皆さん。利用した結果のコメントなどいただければ嬉しいです。

mew-w3m の設定。

emacs-23.1+mew-7.0.50 を利用しているのですが、最近 HTML なメールが多いなぁ。と、随分前から思っていて emacs-w3m を利用しているのであります。

emacs-23.1 の場合には emacs-w3m-1.4.4.tar.gz をダウンロードしてインストールしても動作しないので CVS から取ってきてインストールしようね。ってのは有名な話なのでそれについてはここでは書かないです。

で、mew で emacs-w3m を利用して HTML メールを読む時に "," と "." を交互に押すと HTML か、もしくはテキストとして表示するか選択ができるんだけど、 HTML メールを default でテキストとして読む設定がちーとも解らなかった。僕の .mew は以下のように設定されているんだけどねぇ。

; w3m の呼び出し
(require 'mew-w3m)
(setq mew-mime-multipart-alternative-list 
    '("Text/Html" "Text/Plain" ".*"))
(define-key mew-summary-mode-map "T" 'mew-w3m-view-inline-image) ;(w3m-toggle-inline-images)

mew のソースコードの中にある dot.mew にも以下のように書いてある。

;(setq mew-mime-multipart-alternative-list
    '("Text/Html" "Text/Plain" "*."))
;(condition-case nil ; (require 'mew-w3m) ; (file-error nil))

しかし、この設定では default で HTML をテキストとして表示してくれないのよねぇ。ただ単に HTML が表示されるだけ・・。 "," と "." を必ず押さなければならない。変じゃーん。と言うことで色々試した結果、以下のように記述すれば default でテキストとして表示することを発見しました。

(setq mew-mime-multipart-alternative-list 
    '("Text/Plain" "Text/Html" ".*"))

この設定の内 Text/Plain と Text/Html を逆にすることによって default の表示の動作が変わるのですね。そんな風に書いているサイト、どこにも見当たらなかったのだけど、これって常識?もしくは emacs-23.1 で変わったとか。

後、気づいた点としては、最近の Content-Type: multipart/alternative; なメールは Text/Plain が先に付いていて、Text/Html がその後のパートになっているとかで表示が変わるとか変わらないとか・・。

僕自身 elisp はいまいち苦手なのでソースを見てもチンプンカンプンなので(それを人は解らないと言うのだろうか)困ったことなのであります。

まぁ、どっちにしても HTML メールの default 表示がテキストになってくれて良かったです;-)。

emacs-canna の ports。

ports CURRENT の editors/emacs が emacs-22.3 から emacs-23.1 になったようだけど、japanese/ の下の emacs は相変わらず emacs-22.3 ぽいので、以前このブログに掲載した emacs-canna の ports を作ってみました。

基本的には editors/emacs を japanese/ にコピーして Canna for GNU Emacs23 からパッチを取って来て make している感じです。なので、ベースは emacs-23.1 で、インストールされるものも editors/emacs とまるっきり一緒のはずです。

以下の URL に転がしておいたのでもしよろしければ使ってみてください。

http://www.icmpv6.org/Prog/FreeBSD_ports/ports-emacs-canna-20091221.tgz

この ports について、その筋の人に色々お聞きしてみたのですが、一番多い意見が send-pr すればぁ。ってヤツでしたが、正しくその通りだとは思います。が、まぁ、自分で使っている分にはどーでもよいかぁ。みたいな感じで(^^;;。

後、ports の editors/emacs に吸収してもらえばぁ。って意見も頂いて、これは確かに「なるほどー。」とか思いましたね。 options に WITH_CANNA=yes とか指定できれば、 Canna for GNU Emacs23 からパッチをダウンロードして来て適用する。ってので済むのでこれは確かにラクチンだし、emacs の ports があちこちにできなくて済むのでそれはそれで嬉しいのだけどねぇ・・。

とまぁ、そんなそんなことは思っても結局はどっかそのへんに転がしておいて終ってしまいそうな予感なんですけどね(^^;;。

Emacs-23.1 + Canna = emcws ではない;-)。

ちょっと前に Emacs-23.1。 と、言うタイトルで一個書いたんだけど、その時はフォントの設定がメインで「日本語入力どうすんべな。」って感じで終わっていた。

その後、emacs-23 で Canna が使えると言う japanese/uim-canna を ports から試してみたのだけど、uim-canna と言うか、 uim-el と言うかは emacs-23 が起動した時だけ利用できるので scim-bridge-qt4 と同居できるのが良かったのだけど・・。

uim-canna って、ただ単に「cannaserver と通信ができる。」ってだけで、canna.el のキーバインドを踏襲してくれないということに愕然として、emacs-23 はすっかり利用するのを諦めていた・・。

後、アンチエイリアスが有効になった emacs-23 を利用するとむちゃくちゃ遅い。と言うのも「使わない」と言う一因ではあったのだけどね。

そんな感じでちょっと放置していたんだけど、ヤボ用で compface.tar.gz をダウンロードできるサイトを探していた(compface は x-face を表示するために利用します)ときにバッタリと遭遇。

Canna for GNU Emacs23

僕は emacs-22.3 までは emcws パッチを利用していたのだけど emacs-23 からはいよいよ利用できなくなっていたので途方にくれていたのでありました。

しかしっ!! ありがとうございました。これで emacs-23.1 で Canna のカナ入力が引き続きできそうです。嬉しいことです。

早速パッチを適用して make して試してみましたが、emcws と動作が一緒です。Canna のカナ入力に重要な C-n キーもちゃんと使えます。嬉しいことです\(^^)/。

本当にありがとうございました。感動して、ツイツイこうやってプログに書いてしまいました;-)。

Emacs-23.1。

Emacs-23.1 が出ました。実は結構前にインストールしていて ~/.emacs を書いている最中だったのだけど、フォントの設定でつまづいていてホーリ投げていた部分もあるのですが、その問題が解消されたのでこうして書いてみることにしました;-)。

僕は MacOSX 使いでもあるのですが、普段は FreeBSD で KDE を使っています。KDE3,4 を利用しているとアンチエイリアスの効いていないアプリケーションと言うのは emacs-22.3 のみだったので、 emacs-23.1 が出ると利用している全てのアプリケーションがアンチエイリアス対応になる。それはそれは楽しみにしていたのでした。

が・・。インストールしていきなりフォントの設定でつまづいて・・。全角日本語文字と半角英数字が同じ比率で表示してくれない。等幅フォントを利用しても全角と半角ではズレが生じてしまうのでどうしようも無い状態なのでありました。

ただ、12 ポイントのフォントサイズにするとズレは無くなるんだけど 12 ポイントと言うのはむちゃくちゃでかく感じるので 10 ポイントで利用したいのだけど、 10 ポイントにするとズレが生じる・・。トホホ。

で、今回ようやっと設定ができたのでありました。こんな感じ。goolge とかで探すとフツーにある設定です。

(eval-and-compile
  (cond
   ((< emacs-major-version 23)  ; emacs-22
    (cond (window-system
            --- emacs-22 のフォント設定 (略) ---
    )
   ((= emacs-major-version 23)  ; emacs-23
    (cond (window-system
;; 標準フォント
;       (set-default-font "MS ゴシック-10")
;       (set-default-font "美杉ゴシックL-10")
        (set-default-font "さざなみゴシック-10")
(set-fontset-font (frame-parameter nil 'font) 'japanese-jisx0208 '("MS ゴシック" . "unicode-bmp") ) (set-fontset-font (frame-parameter nil 'font) 'katakana-jisx0201 '("MS ゴシック" . "unicode-bmp") )
(setq face-font-rescale-alist '((".*メイリオ.*" . 0.9) (".*MS ゴシック.*" . 1.1) (".*さざなみゴシック.*" . 1.0) (".*美杉ゴシックL.*" . 1.0) ("-cdac$" . 1.3))) )) ) ))

僕はアンチエイリアスなフォントを使いたいので MS ゴシックを全角のフォントとして、半角のフォントとしてさざなみゴシックを利用します。どっちも 10 ポイントで。10 ポイントで利用した場合、全角と半角フォントにズレが発生するので face-font-rescale-alist で横幅を調節します。

・全角フォントのMS ゴシックは横幅比率を 1.1 にする。
・半角フォントのさざなみゴシックは横幅比率を 1.0 にする。

こうすることによりフォントがきっちりと揃うのでありました。

が、この設定と言うのはずっと前から入れているのにどうしてちゃんと動かないのだ?おかしく思って ~/.emacs を一行づつチェックしましたよー。そしたら問題を発見しました・・。orz。

emacs-23.1 と言うのは以下の lisp は正しく評価してくれないんですね。

(eval-and-compile
  (cond
   ((< emacs-major-version 23)  ; emacs-22
       (if (eq window-system 'x)
       )
   )
   ((= emacs-major-version 23)  ; emacs-23
       (if (eq window-system 'x)
       )
   )
)

(if (eq window-system 'x) がダメみたいです。emacs-23.1 を利用する場合、window-system をチェックする時は以下のように書かないとダメみたいです。

(eval-and-compile
  (cond
    ((< emacs-major-version 23)  ; emacs-22
        (if (eq window-system 'x)
        )
    )
    ((= emacs-major-version 23)  ; emacs-23
        (cond (window-system
        ))
    )
)

(cond (window-system を利用するみたいです。

今回の僕のフォントの設定自体は正しかったみたいなのですが、その前に window-system をチェックする lisp が書かれていて、それが問題となってフォントの設定部分が正しく評価されなかったみたいです。"(" や ")" の数はちゃんと合っていたんですけどねぇ・・。


と、言うことでこれにてフォントの設定は完了です。が、この後、日本語入力が控えています。emacs-22 の頃は emcws のバッチがあったのですが、いよいよ 23 では無くなってしまいました。

僕は Canna のカナ入力の人なのですが、 scim-bridge とかで日本語入力ができたとしても emacs の制御キーが SCIM に食われてしまうのでお話になりません。やはりネーテブなインプットメソッドが欲しい所です。これからこれについて調査を行う感じになりそうです。

scim-canna を捨てて uim-canna にして、uim.el にすれば良いのかなぁ?とも思っていますが・・。

あ。yc.el を試して作者さんとちょっとメールでやり取りしたのですが、CannaServer との通信が EUC で emacs-23 が UTF-8 を利用しているため、変換後に表示される漢字が文字化けしてしまい実際に利用することができませんでした。どこかでコード変換して上げる必要があるのですが、僕は lisp がイマイチ解らないので・・。

と、言うことでフォントの設定はここまで。次回書くとしたら日本語入力についてになるかと思います;-)。


以下余談ですが、最近 WINE 経由で ATOK2009 を利用できるかな?とか思って格闘している最中なんですよ;-)。

これは KDE4 のメニューエディタのキャプチャ。メニューに ATOK9 が現れます。ただ、インストールが成功してないので動かないんですけどね;-)。

kdeandatok.png

後、ports/textproc/wime(http://www.venus.sannet.ne.jp/thomas/wime/) なんて ports を作っている最中ですが、これがまた手ごわい・・。

と、言うことでこの件についてはまだまだ続くことでしょう;-)。

mew と SSL と stunnel と /etc/hosts.allow。

さてと。話せば長いのであります。mew では IMAP4 や POP3 に対して SSL で接続できます。 ~/.mew の設定や ~/.certs/ に必要なファイルをほーりこむ設定については他のウェブページに譲りたいと思います;-)。

ここでは、他のウェブページを見て設定しても接続できない人がきっと参照してくれることでしょう。と、言う感じでまとめます。特に FreeBSD の ports から stunnel をインストールした人向けです。

最初に答えを言いましょうっ!!。 /etc/hosts.allow で localhost の stunnel のポートを許可しないと接続できませんっ!! /etc/hosts.allow に以下の設定をしている人は mew での SSL 接続がきっとできないことでしょうっ!!

#ALL : ALL : allow

さてと。それでは順番に見ていくことにしましょう。 FreeBSD を利用している人は大体 ports から必要なものをインストールするかと思います。emacs+mew で SSL な POP3 もしくは IMAP4 なサーバに接続しようとした時は /usr/ports/security/stunnel が必要なので、サクッと make install しておしまい。で、早速テスト。って感じかと思います。

mew が SSL するときは stunnel 用の設定ファイルを /tmp/takachan88831JOY/mew88831rod みたいな感じで作成します。このファイルが stunnel のオプションになるわけですが、中身は以下のようになっています。


client=yes
pid=
verify=0
foreground=yes
debug=debug
syslog=no
CApath=/home/takachan/.certs
[10841]
accept=127.0.0.1:10841
connect=mail.running-dog.net:993

mail.running-dog.net のポート 993 番に接続するための SSL トンネルは localhost の ポート 10841 に telnet して確認できます。まぁ、mew が IMAP4 を叩くポートが 10841 と言うことですね。これは解りやすい。

で、実際に telnet 127.0.0.1 10841 しても SSL トンネルをまるで抜けていきません。おかしいなぁ。と思って色々調べてみると、原因は stunnel が libwrap をリンクしていると言うことなんですね。これが解るまでに四時間位かかりました。orz。

mew 側の設定で localhost のポート番号を設定できるのか?もし設定できるのであれば、そのポートだけを /etc/hosts.allow で設定すれば良いと思いソースを見て調べてみましたが、どうやらできないみたいです。mew-6.2.50 の mew-ssl.el では 130 行目辺りで localport を mew-random を利用して生成しているみたいです。と、言うことで、mew 側ではどうやら設定不能みたいです。

続いて、/etc/hosts.allow に stunnel: ALL : allow とか stunnel4: ALL : allow など色々試しに設定してみたのですが、inetd 経由や デーモンモードで動作する stunnel では有効になるのですが、コマンドベースで利用した場合の /etc/hosts.allow の記述方法が解りませんでした・・。トホホ。

それならば、と言うことで stunnel の Changelog やらソースを眺めますが、おぉっっ!! configure オプションに --disable-libwrap と言うのがあるではないですかっ!! すんばらしい。とは言いつつ、FreeBSD の ports では --disable-libwrap を選択できるオプションが無いのでありました。無条件で libwrap はリンクされてしまう。トホホ。

と、言うことで --disable-libwrap を選択できる ports を作成しました。使いたい方は利用してください。

ports-stunnel-disable-libwrap-20090123.tgz

まぁ、Makefile をチロッと直しただけなんですけどね。

これで安心して mew で SSL が利用できることでしょう。まずは良かった。良かった。

けど、解決策はそんなんで良いのかなぁ? mew 側で吸収すべきか stunnel 側で吸収すべきか。どっちが良いのかなぁ・・。kazu さん 的にはきっと、libwrap を off にしましょう。って言うような気が、しないでもないこともないと、僕は思うのですけどねぇ・・。

Thunderbird と mew でメールを読む。

僕は FreeBSD をデスクトップ環境にしているのでメールの読み書きは emacs+mew と言う環境です。でもって、メールサーバには imap4 も持っているのだけど POP3 もあるので、メールは一台のマシン上に保存するために POP して mew で保存している。

mew で POP してクライアント側で保存することのどこが良いか?と言われれば、一つのメールが一つのファイルになる点かな。まぁ、imap4 に courier-imap を利用すれば 一つのメールが一つのファイルとして imap4 上に保存できるのだけどね。

今日はクライアントのお話。imap4 及び POP3 サーバのことは出てきません。

さて、mew を使い初めてもう 10 年以上経つのだけど、最近は spam が多すぎて困っていた。 今までは自分でシコシコ mew-refile-guess-alist を書いて M-o で振り分けていたのだけど、もう限界に来た。メールサーバ上で spam フィルタを入れるのは大変だし、自分の管理していないメールサーバだともっと無理だし。

と、言うことでクライアント側でなんとかしなければならないのだけど・・。

で、考えたのが Thunderbird の「迷惑メールフィルタ」。サーバに対して imap4 を利用し Thunderbird で接続し、「迷惑メールフィルタ」を実行します。迷惑メールは Spam フォルダに振り分けられるので、その後 mew で POP すれば必要なメールだけが POP できると考えたのだけど・・。

Thunderbird って imap4 を利用すると、自分で管理している場合は順調なのだけど、その状態をサーバには送らないので、Thunderbird 上では綺麗にフォルダを振り分けられているのだけど、他の MUA から imap4 で覗くともうぼろぼろなのね。でもって mew で POP しても、せっかく迷惑メールフォルダに振り分けたメールもぜーーーんぶっ!! POP してきてしまう。というとんでもない仕様なのでうんざり・・。

僕は MocOSX ユーザでもあるので AppleMail も使うのだけど、こいつには「同期」と言うメニューがあるのでそれを選択すると、そのタイミングでサーバとクライアントソフトが同期してくれるのでまだましかな。

Thunderbird の動作、こんなんじゃ全然ダメじゃん。とか思うのだけど、修了時にはサーバ同期してくれるみたい。つまり、「迷惑メールフィルタ」を実行した後、一旦 Thunderbird を終了させるわけですね。うがーーっ!! やっぱりタメダメじゃん。about:config できっと設定できるのだろうな。とは思うのだけど、あんな、説明がなぁんも無い MIB をいちいち見ることなんて絶対やんないし・・。

と、言うことで早速調査開始。そしたら、有りましたよ。僕みたいに Thunderbird に不便を感じていた人が。

http://blog.asura.co.jp/takehara/9bddb51daaea4de89db475fabfb576b0/entry.aspx

ここを見ると、mail.imap.expunge_after_delete と言う MIB の値を変更すると良いみたいです。

早速変更して試してみましたがっ!!

おぉーっ!! 僕が思ったとおりに動くっ!!感動っ!! と、言うことで動作的には、届いたメールに対して Thunderbird でアクセスします。 imap4 を使って。でもって「迷惑メールフィルタ」が実行され、迷惑メールは「迷惑メール」フォルダにどんどん溜まっていきます。「受信トレイ」が随分とすっきりします。

その後、mew から POP3 でメールサーバにアクセスします。でもってメールを取り込んでみると、おーー。「受信トレイ」の中のメールしか POP してこないじゃないですかー。これがやりたかったのよ。

迷惑メールの振り分けは Thunderbird で。必要なメールの管理と送信は mew で。って感じで利用することにしましょー。

ただ、Thunderbird は本来の使い方がされないのでちと悲しいのだろうなぁ;-)。


2008/09/26 追記
やはり、Thunderbird は mozilla 系のアプリケーションだけあって、KDE3 上ではメニューフォントとか、フォルダのフレーム、メールの一覧はどでかいフォントで表示されてしまいますなぁ。

でもって[設定]からフォントのサイズが指定できるのはメールの本文に対してだけだしぃ・・。これじゃダサダサだぁ・・。about:config でもフォントの設定が沢山あるみたいだけど、どれがどれやら解らない・・。

と、言うことで Firefox と同じフォントの設定を書いてみた。と、言うかもっとラクチンに symlink 張ってみたら、あぁら。無事に小さくなったわ;-)。

以前、firefox でフォントの設定をした のだけど、その設定がそのまま Thunderbird でも使えます。

$ cd ~/.thunderbird/乱数ディレクトリ/
$ ln -s ~/.mozilla/firefox/乱数ディレクトリ/chrome

これで OK です。後は Thunderbird を再起動すればフォントが小さくなることでしょう。めでたしめでたし。

それにしても、未読メールがボールドフォントってのが気にくわないなぁ。Apple Mail みたいに色で指定できないのかしら・・。

mew が Punycode に対応した。

emacs22+mew と言うのがぼくのメールを読む環境なんだけど、 Mew version 5.2.50 で Punycode に対応したみたいです。試してみるとこれがまた・・。

メール本文(mew では message バッファと呼んでいます)にある http://xn--w8j2bze0962a.jp/ が、ちゃんと http://もつ焼き.jp/ と表示されるようになった。すごいなぁ。その URL をクリックするとちゃんとブラウザも起動する所が偉い;-)。

ただ、From:・To:・Cc: などの takachan@xn--w8j2bze0962a.jp は変換してくれないみたい・・。ちょっと ML で かずさん に聞いてみよう。

で、話は自然と「国際化ドメイン名」に行くんだけど、firefox ってすごいなぁ。と再確認。

「もつ焼き。JP」とか、「もつ焼き.JP」って言うのをちゃんと変換して表示してくれるのね。これには驚き。技術的には NAMEPREP による正規化をしてから、Punycode による変換を行い ASCII コードで DNS に問い合わせられる。でもってちゃんと表示してくれる。すごいなぁ。

もつ焼き。JP (firefox でクリックしてみてください)

↓ NAMEPREP による正規化

もつ焼き.jp

↓ Punycode による変換

xn--w8j2bze0962a.jp

Punycode ってのは知っていたけど、 NAMEPREP ってのは今回初めて知りました。すごいぞ。これ。

ちなみに konqueror は Punycode に対応しているけど、NAMEPREP には対応していないみたいで、「もつ焼き。JP」は不正な URL として扱われるみたい。しくしく。

「さくらのレンタルサーバ」に emacs をインストール。

なんか、「さくらのレンタルサーバ」には emacs が入ってないので自力で make してインストールしてしまおう。みたいな感じです。そもそも、ssh でログインして、ちろっと html を直したい場合、vi じゃ日本語表示してくれないしきついでしょう。

一応、SAKURA のサポートにはメール投げたけど、いつ pkg_add してくれるのか解らないし・・。と、言うことで emacs-current をインストール;-)。作業内容は以下のような感じで非常に簡単です。「さくらのレンタルサーバ」を利用している方、是非試してみてください;-P。

あ、emacs-current をソースからインストールすると大体 300MByte 位必要になります。自分のディレクトリでは du -sk して空き容量を確認してくださいね。

と、言うことでインストール開始;-)。

> cd ~/
> mkdir -p src/Emacs
> mkdir usr
> cd src/Emacs
> cvs -d:pserver:anonymous@cvs.sv.gnu.org:/sources/emacs login
> CVS password: (単に RETURN)
> cvs -d:pserver:anonymous@cvs.sv.gnu.org:/sources/emacs co emacs
> setenv LANG C
> setenv L_ALL C
> cd emacs
> ./configure --without-carbon --without-x --prefix=/home/USERNAME/usr
> make bootstrap
> make install
>

こんな感じでインストール完了。/home/USERNAME/usr/bin/ に emacs がインストールされます。まぁ、一応 strip * とかしてサイズ小さくしておきましょう。後、~/src/Emacs はもう必要ないのでサクっと消してしまってもいいでしょう;-)。

これで ssh でログインした後にファイルを編集するすることができるようになった。めでたしめでたし。

 
Copyright (c) 1997-2011 takachan@running-dog.net All Rights Reserved.