Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

MIME ISO-8859-1を解読するnkf のオプションの与え方について

1 view
Skip to first unread message

TATSUMI Takeo

unread,
Sep 27, 2003, 7:12:26 PM9/27/03
to
神戸大学の辰己です。

自前の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/.

●これ↑で落ちてくれない……なぜだろう。

Shinji KONO

unread,
Sep 27, 2003, 9:08:05 PM9/27/03
to
河野真治 @ 琉球大学情報工学です。

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(機能と構成)

Shinji KONO

unread,
Sep 27, 2003, 9:28:15 PM9/27/03
to
河野真治 @ 琉球大学情報工学です。

そういえば、最近、sourceforge にしたんだった。と思ったら、なんか
バグトラックが溜っているな...

https://sourceforge.jp/projects/nkf/

なので、そちらもよろしく。でも、見てないから fj に出してくれた方が
いいかも :-p

TATSUMI Takeo

unread,
Sep 28, 2003, 8:43:57 PM9/28/03
to
神戸大学の辰己です。

ko...@ie.u-ryukyu.ac.jp (Shinji KONO) writes:
> 河野真治 @ 琉球大学情報工学です。

パッチありがとうございました。やってみます。
(たぶんうまくいくと思います。)

しかし、敵(spammer)も、いろいろ考えますねぇ。

TATSUMI Takeo

unread,
Oct 2, 2003, 5:09:30 AM10/2/03
to
東京農工大学・神戸大学の辰己です。

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 ----

Shinji KONO

unread,
Oct 2, 2003, 5:24:22 AM10/2/03
to
河野真治 @ 琉球大学情報工学です。

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,

河野真治 @ 琉球大学工学部情報工学科,

TATSUMI Takeo

unread,
Oct 3, 2003, 2:49:56 AM10/3/03
to
辰己です。

ko...@ie.u-ryukyu.ac.jp (Shinji KONO) writes:
> http://www.ie.u-ryukyu.ac.jp/%7Ekono/nkf/
>
> あたりに nkf203.tar を置いておくので、それを使ってみてください。

うまくいきました。ありがとうございました。

TATSUMI Takeo

unread,
Oct 6, 2003, 9:01:53 AM10/6/03
to
東京農工大学・神戸大学の辰己です。

=?us-ascii?B?MyBNZWRzIHlvdSBuZWVkIGZvciBncmVhdCBkZWFsIHR4Zml=?=

今日、こんな↑メールが来てました。くやしー。これも nkf で decode でき
ないものでしょうか?

IKEDA Kenji

unread,
Oct 6, 2003, 9:45:37 AM10/6/03
to
On 06 Oct 2003 22:01:53 +0900,
In article <m27k3i8q...@qed.decode.waseda.ac.jp>,
TATSUMI Takeo <tt...@cc.tuat.ac.jp> wrote:

> =?us-ascii?B?MyBNZWRzIHlvdSBuZWVkIGZvciBncmVhdCBkZWFsIHR4Zml=?=

> 今日、こんな↑メールが来てました。くやしー。これも nkf で decode でき
> ないものでしょうか?

charset を iso-2022-jp に sed かなんかで置き換えてから nkf に喰わせれば?

--
池田研二 稲城駅前在住

Takashi SHIRAI

unread,
Oct 6, 2003, 11:13:53 AM10/6/03
to
 しらいです。

 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 の濁点付仮名文字が扱えずに苦労した
#のも記憶に新しいところ。

--
しらい たかし

Shinji KONO

unread,
Oct 6, 2003, 9:16:09 PM10/6/03
to
河野真治 @ 琉球大学情報工学です。

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 の濁点付仮名文字が扱えずに苦労した
> #のも記憶に新しいところ。

けっこう問題ありありですね。(おぉ、他人事だ ...)

TATSUMI Takeo

unread,
Oct 7, 2003, 11:48:29 PM10/7/03
to
東京農工大学・神戸大学の辰己です。

> charset を iso-2022-jp に sed かなんかで置き換えてから nkf に喰わせれば?

とりあえずそうしてますが、なんか設定ファイルがキチャナイです。

:0 f
* ^Subject: =\?us\-ascii\?.*
| sed -f sed.change-enclang

ああ、なんてアドホックな対応…。
nkf あたりで対応して下さると嬉しかったりします。

神戸から東京農工大に移ってわかったことの一つ。それは

SPAM の種類が全然違う!

ということです。神戸に来てた spam と、母校早稲田に来てたspam は、
従来の自作フィルターで結構落せてますが、農工大に移って、あらら…。

どういうことなのだろう……。

0 new messages