Forums: users (Thread #12607)

ヘッダの挿入位置が本文末になるときが有る (2006-10-17 14:48 by Anonymous #25488)

はじめまして、小林と申します。

qmail + vpopmail + maildrop(1.8.1) + bsfilter(1.0.14) + ruby(1.8.5)

上記サーバ環境にて利用を行っており、maildropのフィルタファイルからbsfilterの呼び出しは下記のように行っております。

exception {
xfilter "bsfilter --pipe --insert-flag --insert-probability --refer-header Subject --spam-cutoff 0.5"
}

希にですがbsfilterのヘッダ挿入位置がヘッダ部の最終行ではなく、本文の最終行に付加されてしまうことが有るようです。
試しにrubyを1.8.4から1.8.5へバージョンアップしましたが症状に変化は有りませんでした。
bsfilterのバージョンアップも検討しましたが1.0.14から1.0.15のCHANGELOGを見たところ該当するような修正は無い模様なので他の原因が有るのでは無いかと思っております。
何が原因等心当たりが有りましたら教えていただけると幸いです。
最後に、症状発生時のメールを一応添付いたします(IPアドレスやホスト名等は伏せ字にしております)

よろしくお願いします。


Return-Path: <yteruiwo@mail2world.com>
Delivered-To: example.com-xxx@example.com
Received: (qmail 15876 invoked from network); 17 Oct 2006 13:20:16 +0900
Received: from unknown (HELO example.com) (10.223.42.48)
by example.com with SMTP; 17 Oct 2006 13:20:16 +0900
Received: (qmail 22284 invoked by uid 1011); 17 Oct 2006 13:20:16 +0900
Date: 17 Oct 2006 13:20:16 +0900
Received: (qmail 22277 invoked from network); 17 Oct 2006 13:20:16 +0900
Received: from unknown (HELO example.com) (10.223.40.47)
by example.com with SMTP; 17 Oct 2006 13:20:16 +0900
Received: from example.com ([10.223.40.45]) by xxx with InterScan Messaging Security Suite; Tue, 17 Oct 2006 13:20:15 +0900
Received: (qmail 15865 invoked from network); 17 Oct 2006 13:20:15 +0900
Received: from unknown (HELO example.com) (xxx.xxx.xxx.xxx)
by example.com with SMTP; 17 Oct 2006 13:20:15 +0900
Received-SPF: neutral (example.com: xxx.xxx.xxx.xxx is neither permitted nor denied by SPF record at mail.example.com)
Message-ID: 20061017114510.24384mail@mail.example.com
From: yteruiwo@example.com
To: xxx@example.com
Subject: =?iso-2022-jp?B?GyRCRUVPQyRHJC0kXiQ7JHMkKyEpGyhC?=
MIME-Version: 1.0
Content-Type: text/plain;
charset="iso-2022-jp"
Content-Transfer-Encoding: 7bit

ずっとメールの返事待ってたんですけど送れませんか?
私のアドレスみれますよね??…だめなのかな
もし貴方からのメールを確認できたら私の電話番号教えて話したいなって思ってたんです。。
ストレートに話したいから、やっぱり電話の方がいいのかなって思ってます
H関係だと会えないのかな??
http://5596.jp/?xxxxここで私のアドレスみれるはずだから
今から話したいです、メール待ってるね!
X-Spam-Flag: Yes
X-Spam-Probability: 0.961225

Reply to #25488×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: ヘッダの挿入位置が本文末になるときが有る (2006-10-18 09:57 by Anonymous #25496)

こんにちは、小林です。

昨日から検証を続けており、原因と思われる部分が分かってきましたので追加で報告いたします。

報告しました症状が発生するのは迷惑メールのみです。
また、当初は勘違いかと思っていましたが、ヘッダ自体が挿入されないメールも存在します。

昨日時点では色々試しましたが症状が再現しなかったのですが、再現する条件を見つけることが出来ました。

どうやら症状が発生する迷惑メールはMTAに到着した段階ではヘッダ部分と本文部分に空行が無い模様です。
TeraTermにて直接MTAとコマンドラインにてメール送信を行い、ヘッダ部分と本文部分に空行入れないことにより症状が再現しました。
ただ、qmail→vpopmail→maildrop→bsfilter→qmailとMTA内部でメールが処理される過程にてヘッダ部分と本文部分に空行が自動的に入り、最終的にPOP3にて受信を行う際には正常な形式となってしまうようです。
現時点では最終的にどの部分かを追い切れていないのですがqmailとvpopmailでは無いという部分まで検証を致しました。

想像するに、bsfilterではメールを上部から検索し、最初に改行が2個出てきた部分にヘッダを挿入しているのでは無いでしょうか。
bsfilterにメールが渡る段階ではヘッダ部分と本文部分に空行が存在せず、本文最下部に改行が2個存在する場合は最下部にヘッダが挿入され、改行2個が存在しない場合はヘッダが挿入されないのでは無いでしょうか。
なお、ヘッダ部分と本文部分に空行を入れず本文中に空行を2個存在するメールを送ると本文中の改行2個の部分にヘッダが挿入されました。

bsfilterではヘッダ部分と本文部分に空行が存在しなかった場合に、自動的に区切り部分を判断し空行を挿入する処理を行っていますでしょうか?
また、ヘッダの挿入方法は私が想像した改行2個部分を検索する処理にて行っていますでしょうか?

情報が小出しになってしまい申し訳御座いません。
よろしくお願いします。
Reply to #25488

Reply to #25496×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: ヘッダの挿入位置が本文末になるときが有る (2006-10-18 23:34 by nabeken #25500)

メールの規約として、ヘッダ部分と本文部分との区切りは空行と決まっています。bsfilterは、それを期待しています。

> bsfilterではヘッダ部分と本文部分に空行が存在しなかった場合に、自動的に区切り部分を判断し空行を挿入する処理を行っていますでしょうか?

空行を挿入する処理は行っていません。

> また、ヘッダの挿入方法は私が想像した改行2個部分を検索する処理にて行っていますでしょうか?

プログラムの書き方としては、空行を検索しています。空行での改行と、その前の行の改行を合わせて考えれば、改行2個連続を探している、とみなすことも出来ます。空行より上がヘッダですので、そこにヘッダを挿入します。

field-name ":"
という形式以外の行(折り返したヘッダでもなく)が出て来たら、空行が無くても本文、という論理に変えた方がいいのでしょうか。
Reply to #25496

Reply to #25500×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: ヘッダの挿入位置が本文末になるときが有る (2006-10-19 09:58 by Anonymous #25504)

こんにちは、小林です。
ご回答頂きありがとうございます。

そもそも、症状が発生するメールが本当に空行無しで届いているのか追い切れていません。
その他の不正な改行方法・不正な空行挿入方法等が原因とも考えられます。

その後の検証により、一端sendmailのMTAで受信して転送を行った場合は発生しない事を確認しました(sendmailが何か整形等を行っている)

RFC非準拠の形式まで対応をするのかどうか、その対応方法はどうするのか等、難しい問題だと思います。

私の方でさらに検証を続け、明確な原因等を追求し終わった後でbsfilter側で対応して頂くのが適切と思われる場合は再度ご質問・ご相談させて頂きます。

追加で何か情報が分かりましたらこちらのスレッドにて報告を行いたいと思います。

有り難う御座いました。
Reply to #25500

Reply to #25504×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: ヘッダの挿入位置が本文末になるときが有る (2006-10-25 21:16 by nabeken #25608)

revision 1.82.2.1をcommitしました。

RFC違反だからといって、そのようなspamを無視しているわけにも行きませんので、空行がなくても、ヘッダの終わりでありそうな個所に、ヘッダを挿入するようにしてみました。そのような場合でも、空行を補うことはしません。
Reply to #25504

Reply to #25608×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: ヘッダの挿入位置が本文末になるときが有る (2006-10-27 17:43 by Anonymous #25647)

こんにちは、小林です。
反応が遅くなってしまいすみません。

ご対応頂きありがとうございます。
来週辺り検証してみたいと思います。
Reply to #25608

Reply to #25647×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: ヘッダの挿入位置が本文末になるときが有る (2006-10-30 09:41 by Anonymous #25688)

こんにちは、小林です。

差し支えなければ区切り位置の判定方法を教えていただけますでしょうか。
Reply to #25647

Reply to #25688×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: ヘッダの挿入位置が本文末になるときが有る (2006-10-31 00:17 by nabeken #25702)

コロンがある -> ヘッダ
行頭が空白 -> ヘッダの継続行
メールの1行目でfromから始まる -> unix from(ヘッダ)
空行 -> ボディ先頭
その他 -> ボディ先頭 (1.82.2.1から)

というようになっています。
"その他"は、"コロンがなく、行頭が空白以外"と等しいと思います。

Reply to #25688

Reply to #25702×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

RE: ヘッダの挿入位置が本文末になるときが有る (2006-11-10 11:05 by Anonymous #25926)

こんにちは、小林です。

用意頂いた1.82.2.1にて症状再現検証にて再現しない(正常位置にヘッダが挿入される)事確認しました。

しかし、さらに検証を進めたところ。症状が発生する迷惑メールは空行が無いわけではなく
空行部分前後等の改行コードがおかしい・不正なコードが混入しているのが原因と思われます。
試しにqmailの起動オプションにfixcrioを噛ませてみたことろ以前のbsfilterバージョンでも症状が発生しないことを確認しました。
sendmailからの転送では症状が発生しないのは
sendmailにてfixceioと同様の処理を内部的に行っているのではないかと予想をしています

結果的にはbsfilter側で対応するべき物ではなく
MTA側で対応(整形)をするのが正しい姿なのかなと思っています
今回修正いただいたヘッダ挿入位置の判定方法変更を今後のバージョンでも搭載するか否かはnabekenさんの判断にお任せします。

今回は長々とご対応頂き有り難うござます。
また、PG修正までしていただき重ねてお礼申し上げます。
Reply to #25702

Reply to #25926×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login