自前のspamフィルタを作っているのですが、最近、洋モノなのに、Subjectに
MIME(ISO-8859-1)を利用したものが増えてきました。そのおかげで、Subject
でのフィルタリングがうまく行かないようになりました。それで、NKF 2.0 を
つかってみようと思ったのですが、うまく動作しません。
オプションの与え方の問題だとは思いますが、どうすればうまく行くかがわか
る方は、ぜひとも御教示頂きたいと思います。
●使っているNKF
Network Kanji Filter Version 2.0 (2/0301/Shinji Kono)
●formail -x "Subject:" の結果
=?iso-8859-1?b?U2F2ZSA1MCUgb24gVmlhZ3JhIG9ubGluZSAtIG5vIHByZXNjcmlwdGlvbiByZXF1aXJlZA==?=
●Mew でみたときの結果
>> Subject: Save 50% on Viagra online - no prescription required
●~/.procmailrc に書いたもの
:0
* ?formail -x "Subject:" | nkf -ml | egrep -i "(viagr?|viag?a|via?ra|vi?gra|v?agra|?iagra)"
spam/.
●これ↑で落ちてくれない……なぜだろう。
In article <m27k3tu...@qed.decode.waseda.ac.jp>, TATSUMI Takeo <tat...@qef.h.kobe-u.ac.jp> writes
> 自前のspamフィルタを作っているのですが、最近、洋モノなのに、Subjectに
> MIME(ISO-8859-1)を利用したものが増えてきました。そのおかげで、Subject
> でのフィルタリングがうまく行かないようになりました。それで、NKF 2.0 を
> つかってみようと思ったのですが、うまく動作しません。
8859 は、あんまりうまく動かないと思います。が、対処するか...
>
> =?iso-8859-1?b?U2F2ZSA1MCUgb24gVmlhZ3JhIG9ubGluZSAtIG5vIHByZXNjcmlwdGlvbiByZXF1aXJlZA==?=
b encoding の iso-8859-1 かぁ... そいつは動かないな。ってこ
とは、これくらいで動くみたいですね。
*** nkf.c Sun Sep 28 10:06:27 2003
--- nkf.c.bak Sun Sep 28 10:06:27 2003
***************
*** 2872,2878 ****
(unsigned char *)"\075?EUC-JP?B?",
(unsigned char *)"\075?SHIFT_JIS?B?",
(unsigned char *)"\075?ISO-8859-1?Q?",
- (unsigned char *)"\075?ISO-8859-1?B?",
(unsigned char *)"\075?ISO-2022-JP?B?",
(unsigned char *)"\075?ISO-2022-JP?Q?",
#if defined(UTF8_INPUT_ENABLE) || defined(UTF8_OUTPUT_ENABLE)
--- 2872,2877 ----
***************
*** 2882,2888 ****
};
int mime_encode[] = {
! JAPANESE_EUC, SHIFT_JIS,ISO8859_1, ISO8859_1, X0208, X0201,
#if defined(UTF8_INPUT_ENABLE) || defined(UTF8_OUTPUT_ENABLE)
UTF8,
#endif
--- 2881,2887 ----
};
int mime_encode[] = {
! JAPANESE_EUC, SHIFT_JIS,ISO8859_1, X0208, X0201,
#if defined(UTF8_INPUT_ENABLE) || defined(UTF8_OUTPUT_ENABLE)
UTF8,
#endif
***************
*** 2890,2896 ****
};
int mime_encode_method[] = {
! 'B', 'B','Q', 'B', 'B', 'Q',
#if defined(UTF8_INPUT_ENABLE) || defined(UTF8_OUTPUT_ENABLE)
'B',
#endif
--- 2889,2895 ----
};
int mime_encode_method[] = {
! 'B', 'B','Q', 'B', 'Q',
#if defined(UTF8_INPUT_ENABLE) || defined(UTF8_OUTPUT_ENABLE)
'B',
#endif
---
Shinji KONO @ Information Engineering, University of the Ryukyus,
PRESTO, Japan Science and Technology Corporation
河野真治 @ 琉球大学工学部情報工学科,
科学技術振興事業団さきがけ研究21(機能と構成)
そういえば、最近、sourceforge にしたんだった。と思ったら、なんか
バグトラックが溜っているな...
https://sourceforge.jp/projects/nkf/
なので、そちらもよろしく。でも、見てないから fj に出してくれた方が
いいかも :-p
ko...@ie.u-ryukyu.ac.jp (Shinji KONO) writes:
> 河野真治 @ 琉球大学情報工学です。
パッチありがとうございました。やってみます。
(たぶんうまくいくと思います。)
しかし、敵(spammer)も、いろいろ考えますねぇ。
TATSUMI Takeo <tat...@qef.h.kobe-u.ac.jp> writes:
> > 河野真治 @ 琉球大学情報工学です。
>
> パッチありがとうございました。やってみます。
> (たぶんうまくいくと思います。)
FreeBSD の /usr/ports/japanese/nkf の下のに当てようとすると、
行番号が違うようでしたので、それに対応したパッチを投稿しておきます。
ns:/usr/ports/japanese/nkf/work/nkf202(312) diff -C2 /tmp/nkf.c nkf.c
の結果。でも、どのオプションを使えばいいのでしょうか?
% nkf -l -m
しても、なにも変わらないのですが…
=?iso-8859-1?b?U2F2ZSA1MCUgb24gVmlhZ3JhIG9ubGluZSAtIG5vIHByZXNjcmlwdGlvbiByZXF1aXJlZA==?=
*** /tmp/nkf.c Thu Oct 2 17:53:10 2003
--- nkf.c Sat Jan 25 09:09:12 2003
***************
*** 2663,2667 ****
(unsigned char *)"\075?SHIFT_JIS?B?",
(unsigned char *)"\075?ISO-8859-1?Q?",
- (unsigned char *)"\075?ISO-8859-1?B?",
(unsigned char *)"\075?ISO-2022-JP?B?",
(unsigned char *)"\075?ISO-2022-JP?Q?",
--- 2663,2666 ----
***************
*** 2673,2677 ****
int mime_encode[] = {
! JAPANESE_EUC, SHIFT_JIS,ISO8859_1, ISO8859_1, X0208, X0201,
#if defined(UTF8_INPUT_ENABLE) || defined(UTF8_OUTPUT_ENABLE)
UTF8,
--- 2672,2676 ----
int mime_encode[] = {
! JAPANESE_EUC, SHIFT_JIS,ISO8859_1, X0208, X0201,
#if defined(UTF8_INPUT_ENABLE) || defined(UTF8_OUTPUT_ENABLE)
UTF8,
***************
*** 2681,2685 ****
int mime_encode_method[] = {
! 'B', 'B','Q', 'B', 'B', 'Q',
#if defined(UTF8_INPUT_ENABLE) || defined(UTF8_OUTPUT_ENABLE)
'B',
--- 2680,2684 ----
In article <m2k77oa...@qed.decode.waseda.ac.jp>, TATSUMI Takeo <tt...@cc.tuat.ac.jp> writes
> FreeBSD の /usr/ports/japanese/nkf の下のに当てようとすると、
> 行番号が違うようでしたので、それに対応したパッチを投稿しておきます。
FreeBSD の nkf の revision が古いんでしょう。sourceforge のCVS
のパッチなので。
> % nkf -l -m
> しても、なにも変わらないのですが…
-l はいらないです。-l は事実上動作しないと思う。
Network Kanji Filter Version 2.0 (3/0301/Shinji Kono)
で、-m はdefaultなので、-m もいらないです。
% nkf
=?iso-8859-1?b?U2F2ZSA1MCUgb24gVmlhZ3JhIG9ubGluZSAtIG5vIHByZXNjcmlwdGlvbiByZXF1aXJlZA==?=
Save 50% on Viagra online - no prescription required
ってなかんじ。
http://www.ie.u-ryukyu.ac.jp/%7Ekono/nkf/
あたりに nkf203.tar を置いておくので、それを使ってみてください。
---
Shinji KONO @ Information Engineering, University of the Ryukyus,
河野真治 @ 琉球大学工学部情報工学科,
ko...@ie.u-ryukyu.ac.jp (Shinji KONO) writes:
> http://www.ie.u-ryukyu.ac.jp/%7Ekono/nkf/
>
> あたりに nkf203.tar を置いておくので、それを使ってみてください。
うまくいきました。ありがとうございました。
=?us-ascii?B?MyBNZWRzIHlvdSBuZWVkIGZvciBncmVhdCBkZWFsIHR4Zml=?=
今日、こんな↑メールが来てました。くやしー。これも nkf で decode でき
ないものでしょうか?
> =?us-ascii?B?MyBNZWRzIHlvdSBuZWVkIGZvciBncmVhdCBkZWFsIHR4Zml=?=
> 今日、こんな↑メールが来てました。くやしー。これも nkf で decode でき
> ないものでしょうか?
charset を iso-2022-jp に sed かなんかで置き換えてから nkf に喰わせれば?
--
池田研二 稲城駅前在住
fj.kanji を追加します。
In article <m27k3i8q...@qed.decode.waseda.ac.jp>,
TATSUMI Takeo <tt...@cc.tuat.ac.jp> wrote:
>東京農工大学・神戸大学の辰己です。
> =?us-ascii?B?MyBNZWRzIHlvdSBuZWVkIGZvciBncmVhdCBkZWFsIHR4Zml=?=
>
>今日、こんな↑メールが来てました。くやしー。これも nkf で decode でき
>ないものでしょうか?
そもそも「Network Kanji Filter」に漢字以外のものの decode
を期待する方がおかしいんじゃないでしょうか?MIME は MIME で
decode した上で、その後 nkf に渡すのが正解なんじゃないかと。
単一機能の filter を組み合わせて用いるというのが UNIX 流で
もありますからね。MIME だけの decode なんて簡単なので誰か作
ってるんじゃないかしらん。
一方、nkf302 の source も見ましたが、nkf は nkf で MIME の
評価がおかしくて、charset を見ない実装なのに「=?...?」の値を
見ているようです。
例えば「=?EUC-JP?」であっても、MIME decode の結果を EUC-JP
として見なしてはいないんじゃないでしょうか。nkf 独自の自動判
別の結果を charset 指定より優先しているような気がします。
charset を見ないんだったら、どんな charset 文字列にも対応
すればいい訳だし、見るなら見るで自動判別より charset を優先
させるべきだし。
少なくとも、「ISO-8859-1」や「US-ASCII」を漢字用の filter
に廻してはいけませんよね。US-ASCII はまだしも ISO-8859-1 は
「¨」や「´」等を用いた合字を含むので、その辺りの code が含
まれていると nkf 独自の自動判別では漢字と見なされてしまう可
能性があります。
あと、「=?Shift_JIS?Q?」や「=?EUC-JP?Q?」が decode 出来な
い仕様も良く判りません。これってどこかの RFC で禁止されてい
るんでしたっけ?
nkf は知名度ばかり先行したばかりに過度に期待されてしまって
大変でしょうけど、ニーズにのみ応じて後付けで機能を実装するの
ではなく、規格に沿って実装すべきなんじゃないでしょうか。
# source 全部追えてる訳じゃないけど、UTF-8 対応も対象とな
#る Unicode の version が不明なので、新しめの Unicode rule
#に対応出来ているのかどうか疑問です。
# Windows は実質 Unicode 2.x のようですが Mac OS X 辺りだ
#と Unicode 3.x なので色々とややこしい rule が追加されてい
#ますよね。
# Samba-ja で Mac OS X の濁点付仮名文字が扱えずに苦労した
#のも記憶に新しいところ。
--
しらい たかし
In article <bls0pf$8bn$1...@nsvn01.zaq.ne.jp>, shi...@unixusers.net (Takashi SHIRAI) writes
> そもそも「Network Kanji Filter」に漢字以外のものの decode
> を期待する方がおかしいんじゃないでしょうか?MIME は MIME で
> decode した上で、その後 nkf に渡すのが正解なんじゃないかと。
ま、便利さ優先なので。
> 一方、nkf302 の source も見ましたが、nkf は nkf で MIME の
> 評価がおかしくて、charset を見ない実装なのに「=?...?」の値を
> 見ているようです。
見ないのは「間違っていることが多い」からです。
> charset を見ないんだったら、どんな charset 文字列にも対応
> すればいい訳だし、見るなら見るで自動判別より charset を優先
> させるべきだし。
そうかもね。そういうモードがあってもいいかな。
> あと、「=?Shift_JIS?Q?」や「=?EUC-JP?Q?」が decode 出来な
> い仕様も良く判りません。これってどこかの RFC で禁止されてい
> るんでしたっけ?
確かbase64が推奨されているはずです。なんか当時は、変なMIMEは
はじくというような方針だったみたい。その名残でしょう。
> nkf は知名度ばかり先行したばかりに過度に期待されてしまって
> 大変でしょうけど、ニーズにのみ応じて後付けで機能を実装するの
> ではなく、規格に沿って実装すべきなんじゃないでしょうか。
僕はあんまりそう考えてはいなかったみたいですね。規格にそった
ものが欲しいなら iconv とかがあるし。
> # source 全部追えてる訳じゃないけど、UTF-8 対応も対象とな
> #る Unicode の version が不明なので、新しめの Unicode rule
> #に対応出来ているのかどうか疑問です。
> # Windows は実質 Unicode 2.x のようですが Mac OS X 辺りだ
> #と Unicode 3.x なので色々とややこしい rule が追加されてい
> #ますよね。
> # Samba-ja で Mac OS X の濁点付仮名文字が扱えずに苦労した
> #のも記憶に新しいところ。
けっこう問題ありありですね。(おぉ、他人事だ ...)
> charset を iso-2022-jp に sed かなんかで置き換えてから nkf に喰わせれば?
とりあえずそうしてますが、なんか設定ファイルがキチャナイです。
:0 f
* ^Subject: =\?us\-ascii\?.*
| sed -f sed.change-enclang
ああ、なんてアドホックな対応…。
nkf あたりで対応して下さると嬉しかったりします。
神戸から東京農工大に移ってわかったことの一つ。それは
SPAM の種類が全然違う!
ということです。神戸に来てた spam と、母校早稲田に来てたspam は、
従来の自作フィルターで結構落せてますが、農工大に移って、あらら…。
どういうことなのだろう……。