ほかの人の参考になるとは思えないのだが、折角なので(いったい何が折角なのだろう、と書いてる本人が言っちゃいけないのでしょう。だから言わない)。

スパムフィルタ bsfilterを利用する 16 May 2007

スパムメールがあまりにも多くなり、大事なメールを読み逃すことが何度がでてしまった。そこで、スパムフィルタを入れることにしました。既に、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つデハナイ)あり、です。

bsfilterの取得

http://sourceforge.jp/projects/bsfilter/files/ より bsfilter-1.0.15.tgz をダウンロード
展開

$ tar xvzpf bsfilter-1.0.15.tgz

iconv.dllの取得とインストール

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ディレクトリにコピー

bsfilterの設定

いろいろ設定はしてみたもののWindows用のバイナリbsfilter.exeとbsfilterw.exeがどうも上手く働いてくれないので、rubyで動かすことにする。読み仮名のルビじゃなくって、スクリプト言語のrubyよ。

  1. bsfilterというファイルを実行用のディレクトリ(C:\cygwin\usr\local\bin)にコピー
  2. バッチファイルを作る(MS-DOSと同じ:なつかしいというか情けないというか) これをスタート メニュー/プログラム/スタートアップに入れ、起動時に働くようにする。いつも「DOS窓」があるのであまり気持ちよくないのですが、仕方ありません。
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/ (本家のホームページ)によると

.emacs の修正

(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 からメールを受け取るように設定するのがミソ

.mew.el に追加

関係しそうなものは以前のものも書いておきます

;; 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から全部取ってきてしまったわけです。

Windows用のバイナリの不具合について

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() を呼ぶとエラーとな
りますが、その際以下のようなメッセージが標準エラー出力に吐かれます。

とあるので。

meadow + mewをstunnelで、SSL化する 13 Nov 2006

本学では学外からのメールの送受信は「POPS,SMTPSのみ」になった。 ノートマシンなので学外であろうとなかろうと、SSLで通信するように設定

stunnelのインストール

stunnelをダウンロードする。
なぜかstunnel ver. 4だと上手くいかないので、ver. 3を使う。

これで、openSSLとともにインストールができた

mewの設定

.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

2005年1月17日 (月) メビウスのインストールのメモ

とにかくインストールしたもの。ダウンロードした順 ≒ インストールした順設定など細かなことは後日記入予定

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

BDFフォントを使った日本語の表示 31 Dec 2004

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 ファイル) の全てを表示できます。

ps-print.tar.gz のインストール 09 Jan 2005

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を消さなきゃならない。

14 Jan 2005 ユニコードの設定

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)

ESS Emacs Speaks Statistics (Modified 13 Nov 2006)

インスールは簡単
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を起動する方法

コマンド履歴 (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:1Yesterday:0Total:8328 since 02 April 2006

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 21 May 2007 (月) 00:51:41 (4631d)