ほかの人の参考になるとは思えないのだが、折角なので(いったい何が折角なのだろう、と書いてる本人が言っちゃいけないのでしょう。だから言わない)。
スパムメールがあまりにも多くなり、大事なメールを読み逃すことが何度がでてしまった。そこで、スパムフィルタを入れることにしました。既に、meadow + mew + stunnelで、SMTP over SSL、POP over SSLを実現しているのですが、多少いじることになりました。スパムフィルタは、bsfilterを使いました。
bsfilterがpop proxyとして働き、mew(メーラ)は、localhostにアクセスするということになります。
POP3サーバ[ポート番号○○○] −SSL→ bsfilter[ポート番号10110]→ mew
で、bsfilterがスパムかどうか判定し、X-Spam-Flag: と X-Spam-Probability: を追加する。メーラはFlagを見て動作する。具体的には、.mew.elでは削除マークを付けるようになっています。
方法
基本的には、
bsfilter / bayesian spam filter / ベイジアン スパム フィルタ
http://bsfilter.org/ (本家のホームページ)
と
「bsfilterをmew version 4から使う」 http://bsfilter.org/mew.html
に従いましたが、SMTP over SSLがあったり、そのほかいろいろあったので、違うところ複数(2つデハナイ)あり、です。
http://sourceforge.jp/projects/bsfilter/files/ より
bsfilter-1.0.15.tgz をダウンロード
展開
$ tar xvzpf bsfilter-1.0.15.tgz
http://bsfilter.org/ (本家のホームページ)に従う。
香り屋
http://www.kaoriya.net/#LIBICONV
より
iconv-1.9.1-dll.tar.bz2
をダウンロードl
展開
$ tar xvjpf iconv-1.9.1-dll.tar.bz2
README_j.txtに従い、 iconv.dllをC:\WINDOWS\SYSTEMディレクトリにコピー
いろいろ設定はしてみたもののWindows用のバイナリbsfilter.exeとbsfilterw.exeがどうも上手く働いてくれないので、rubyで動かすことにする。読み仮名のルビじゃなくって、スクリプト言語のrubyよ。
C: chdir C:\cygwin\usr\local\bin C:\cygwin\bin\ruby bsfilter --config-file "c:\cygwin\home\tomaru\.bsfilter\pop.conf"
homedir c:\cygwin\home\tomaru\.bsfilter ssl pop auto-update insert-flag insert-probability pop-server [pop3サーバ名] pop-port [POP over SSLとしてのポート番号] pop-proxy-port 10110 pop-user [ユーザ名]
http://bsfilter.org/ (本家のホームページ)によると
(setq mew-config-alist '(("default" ; ("smtp-server" . "[SMTPサーバ名]") ; 上をコメントアウト16 May 2007 ; ("pop-server" . "[POP3サーバ名]") ; 上をコメントアウト16 May 2007 ("pop-proxy-server" . "localhost") ; 15 May 2007 ("pop-proxy-port" . "10110") ; 15 May 2007 ("pop-user" . "[ユーザ名]")) ; 15 May 2007 )) ; bsfilter用 15 May 2007 ; bsfilter-1.0.15/mua/mew4/emacs.el(bsfilter-1.0.15.tgzを展開した中にある)よりコピー (setq mew-spam: "X-Spam-Flag:")
localhostのポート番号10110 = bsfilter からメールを受け取るように設定するのがミソ
関係しそうなものは以前のものも書いておきます
;; SMTP サーバの設定 ; 参考 http://www.math.waseda.ac.jp/~norikazu/memo/mew-waseda-net.html (setq mew-smtp-ssl t) ; 02 March 2006 (setq mew-smtp-ssl-port "465") ; 02 March 2006 (setq mew-smtp-server "[SMTPサーバ名]") ; 16 May 2007 (setq mew-smtp-user "[ユーザ名]") ; 16 May 2007 (setq mew-smtp-auth-list '("PLAIN" "LOGIN" "CRAM-MD5" )) ; 16 May 2007 ; POP over SSL, SMTP over SSLに対応させる ; 参考 http://www.math.waseda.ac.jp/~norikazu/memo/mew-waseda-net.html ;(setq mew-pop-ssl t) ; 02 March 2006 ;(setq mew-pop-ssl-port "995") ; 02 March 2006 ; 上の2つをコメントアウト16 May 2007 (setq mew-ssl-verify-level 0) ; 02 March 2006 ; bsfilter用 15 May 2007 ; bsfilter-1.0.15/mua/mew4/mew.el(bsfilter-1.0.15.tgzを展開した中にある)よりコピー ;; $Id: mew.el,v 1.3 2006/01/14 07:38:50 nabeken Exp $ 以下すべて(長いので省略)
これまでは、POP over SSLとSMTP over SSLが同じエージェント(?)と通信していたので問題なかったのですが、これからは、POPはbsfilterが、SMTPはmewがアクセスするので別ものとなってしまいます。そこで、メールの送信ができるように、SMTPサーバにもユーザ名とパスワードを教えてやるわけです。これは、メールサーバの設定によりいろいろと違うところがあるでしょう。本学では、POP before SMTPが使えるので、今迄はなにもせずによかったのですが、これからはSMTP authを使う、ということです。たぶん、これでいいのだと思う。
(setq mew-smtp-auth-list '("PLAIN" "LOGIN" "CRAM-MD5" )) ~
は、デフォルトでは、mew-vars.elに
(defcustom mew-smtp-auth-list '("CRAM-MD5" "PLAIN" "LOGIN") "*A list of SMTP AUTH methods in the preferred order. Currently, \"CRAM-MD5\", \"PLAIN\", and \"LOGIN\" can be used." :group 'mew-smtp :type '(repeat (choice (const "CRAM-MD5") (const "PLAIN") (const "LOGIN"))))
とあるように、"CRAM-MD5" "PLAIN" "LOGIN"の順なのですが、パスワードを入れるとMD5の暗号化がされていないと言われたので、PLAINを前に持ってきて対応した。
いくらか.emacsと.mew.elでの設定の重複やら混乱があるので、今回の修正も意味がないものが入ってしまったような気がする。
mewでメールを読むと
スパムメール(X-Spam-Flag: Yesのもの)は削除マークが付く
スパムメールに対しては、
ls ← learn spam
非スパムメール(「ハム」)に対しては
lh ← learn ham
とやって教えてやると覚えてくれる。
間違えて、試しのときに数百通(600以上だったような気が)受け取ってしまい、仕方なくすべてをスパムとハムを教えたら、その後は大変順調でした。 メールサーバにメールを残す設定にしておいたら、bsfilterはmewとは違うものと判断され(当然ですが)、pop3から全部取ってきてしまったわけです。
SSL_CTX_new:: libarary has no ciphers
とのエラー。SSLが悪いというより、bsfilterのコードが古いか何かが原因のもよう。
というのは、
ネットワークプログラミングの基礎知識 >> SSL/TLS でアクセスしてみよう (1)
http://x68000.q-e-d.net/~68user/net/ssl-1.html
によると
例えば SSL_library_init() を呼ばずに SSL_CTX_new() を呼ぶとエラーとな りますが、その際以下のようなメッセージが標準エラー出力に吐かれます。
とあるので。
本学では学外からのメールの送受信は「POPS,SMTPSのみ」になった。 ノートマシンなので学外であろうとなかろうと、SSLで通信するように設定
stunnelをダウンロードする。
なぜかstunnel ver. 4だと上手くいかないので、ver. 3を使う。
これで、openSSLとともにインストールができた
.mew.elに下を追加
; stunnelがないと言われないために ; 参考 http://blog.so-net.ne.jp/SometimeBlue/2005-04-05 (setq mew-prog-ssl "C:\\Program Files\\stunnel\\stunnel.exe") ; 02 March 2006 ;; SMTP サーバの設定 ; 参考 http://www.math.waseda.ac.jp/~norikazu/memo/mew-waseda-net.html (setq mew-smtp-ssl t) ; 02 March 2006 (setq mew-smtp-ssl-port "465") ; 02 March 2006
とにかくインストールしたもの。ダウンロードした順 ≒ インストールした順設定など細かなことは後日記入予定
Dec 27 15:44 Firefox Setup 1.0.exe ← インストールはあとでした
Dec 27 15:44 Thunderbird Setup 1.0.exe ← インストールはあとでした
Dec 27 17:00 setup-ja.exe ← meadowのネットインストーラ
Dec 27 17:21 setup.exe ← cygwinのネットインストーラ
Dec 27 18:25 R
Dec 27 18:27 ffftp
Dec 27 18:33 Lhaca
Dec 28 16:18 jpeg2ps
Dec 28 18:35 ActivePerl
Dec 28 20:50 skkime
Dec 28 21:29 Microsoft Office ← これはCDからのインストール
Dec 28 22:38 OOo
Dec 28 22:42 weyes101.lzh
Dec 29 02:50 rmail-mime-1.13.0
Dec 29 05:08 cygwin-X
Dec 29 13:26 lineno.sty
Dec 29 13:07 yatex
Dec 30 04:10 pLaTeX
Jan 4 13:32 ispell
Jan 5 09:49 mew
Jan 7 22:33 ps-print.tar.gz
Jan 10 18:49 AltIME
Jan 10 13:01 w3m
Jan 15 15:33 QuickTimeFullInstaller.exe
http://meadow.sourceforge.jp/cgi-bin/hiki.cgi?%C6%FC%CB%DC%B8%EC%A4%CB%B4%D8%A4%B9%A4%EB%BE%F0%CA%F3
BDFフォントを使った日本語の表示 Netinstall の intlfonts パッケージ
Netinstall の intlfonts パッケージを使うのが簡単でしょう。 Netinstall で intlfonts と misc パッケージを入れます。 .emacs には次の2行だけです。 default-frame-alist (initial-frame-alist) には好みによって他のパラメータもセットします。
(setq bdf-use-intlfonts16 t) (setq default-frame-alist '((font . "intlfonts16")))
これだけで日本語だけではなく intlfonts の様々なフォントを表示できます。 C-h h (HELLO ファイル) の全てを表示できます。
READMEに従う
展開
make EMACS=meadow
すべての*.el*ファイルを c:/Mewdow/site-lispにコピー
; 09 January 2005
; ps-print の READMEより
;
;If you have a Japanese PostScript printer, you can print ASCII,
;Latin-1, and Japanese (JISX0208, and JISX0201-Kana) characters by:
; (setq ps-multibyte-buffer 'non-latin-printer)
;
;If you have a Korean PostScript printer, you can print ASCII, Latin-1,
;and Korean characters also by: ; (setq ps-multibyte-buffer 'non-latin-printer)
;But I didn't tested it. If you have a Korean PostScript printer,
;please verify it.
;
;If you have intlfonts (version 1.1 or the later), you can print all
;multibyte characters by using BDF fonts contained in intlfonts. To
;do that, you need the following settings:
(setq ps-multibyte-buffer 'bdf-font)
;
;If you have intlfonts version 1.2 or the later and want to print only
;Latin-1, Vietnamese, and Thai, your can print by Type1 fonts by this:
;
; (setq ps-multibyte-buffer 'type1)
;ps-print.el より
;On MS-DOS and MS-Windows systems, a string value is taken as the name
;of the printer device or port to which PostScript? files are written,
;provided `ps-lpr-command' is \"\". By default it is the same as
;`printer-name'
; typical non-default settings would be \"LPT1\" to
;\"LPT3\" for parallel printers, or \"COM1\" to \"COM4\" or \"AUX\" for
;serial printers, or \"//hostname/printer\" for a shared network printer.
;You can also set it to a name of a file, in which case the output gets
;appended to that file. \(Note that `ps-print' package already has
;facilities for printing to a file, so you might as well use them instead
;of changing the setting of this variable.\) If you want to silently
;discard the printed output, set this to \"NUL\"."
;(setq ps-lpr-command "c:/cygwin/home/tomaru/meadowprint.ps")
;ファイルを作ってからこのコマンドを書いても
;gsがエラーと言う……
(setq printer-name "c:/cygwin/home/tomaru/meadowprint.ps")
;ファイルなしで、M-x ps-print-bufferでOK
;もしかして上手く行くかも
;(setq print-buffer ps-print-buffer)
なぜか、ここまでインストールしたら、infoがふたつのディレクトリに分かれてしまった。meadowを再インストールし直してもだめ。しかたがないので、今読んでいるinfoのあるディレクトリにいろいろコピーして、「dir」を編集して読めるようにした。ふぅ
M-x ps-print-buffer
または、
mewでは#
で、meadowprint.psが作成されるので、ghostview32で開いて印刷。
このプリントのコマンドを続けて実行すると、meadowprint.psに追加して書いてしまうので、NG。一回ずつmeadowprint.psを消さなきゃならない。
mule-ucsをネットインストール
サンプルのdot.emacs.jaからとってきた下のコードを .emacs に入れた。
;; ;;; Mule-UCS の設定
;; ;; ftp://ftp.m17n.org/pub/mule/Mule-UCS/
;; ;; (set-language-environment) の前に設定します
(require 'un-define)
(setq bitmap-alterable-charset 'tibetan-1-column)
(require 'jisx0213)
インスールは簡単
http://stat.ethz.ch/ESS/downloads/ess/
から
ダウンロードして、解凍。site-lispの下に置く
tar xvzpf ess-5.3.3.tgz -C /cygdrive/c/meadow/site-lisp/
今回は ess というディレクトリ名に替えた(lispでは何だかわからないので)
こちら http://noplans.org/~1gac/diary/200407.html#23_t7 も参考にした
Windowsの環境設定。 RのバイナリへのPathを追加
コントロールパネル−システム−詳細設定−環境変数から
http://www.okada.jp.org/RWiki/index.php?ESSUsage ESS --- Emacs Speaks Statistics 使用方法
ESS には (i) R を Emacs から使う iESS モード,(ii) R スクリプト作成支援環境を提供する ESS[R] モード,(iii) R ヘルプから Example を実行したりできる help[R] モードがあります.
↑ iESS
R 起動 (M-x R)
複数の R を起動することが可能.
R 終了 (C-c C-q)
関連するバッファも全て消してくれる
最初からESSモードでemacsを起動する方法
$ emacs -f R &
コマンド履歴 (M-p, M-n) コマンド履歴の検索 (M-r, M-s) ヘルプ参照 (C-c C-v) オブジェクト一覧 (C-c C-x)
↑ ESS モード (R モード)
バッファから R へ直接コマンドを送る
↑ ESS-help
help(foo) で開いたヘルプのバッファにおいて,Example の各行に対して l で,コンソールバッファにコピーかつ評価される.
Today:1 | Yesterday:0 | Total:10245 since 02 April 2006 |