Top過去ログ目次掲示板

作成日:2008年07月16日 作成:おやじ
掲示板で過去に質問された内容です。

No.7619 amavisdでエラー


No.7619 投稿時間:2008年07月16日(Wed) 00:23 投稿者名:KenZ URL:
タイトル:amavisdでエラー

おやじ様のHPは、かなり参考にさせて頂いています。
CentOS4にてサーバを構築したのですが、大部分についてはHPの情報を元に組むことができました。ありがとうございます。

構築も終わり運用し始めたとことなのですが、1通のメールが到達しない現象が発生しました。
SMTP関連の環境はPostfix、PostfixAdmin、MaiaMailGuard1.0.2a、ClamAV、SpamAssasinを組み込んでいます。
エラーはamavisdがmaia_mailテーブルにINSERTの際に発生し、その条件は、UTF-8で記述されたメールの本文中にシングルクォートで囲われた奇数文字の漢字が存在する時にエラーになるように見えます。
SJISで記述した場合は正常に動作しますし、UTF-8でも「'ああ'」は正常ですが「'あああ'」はエラーが発生します。
amavisdのコードを見ると、"?"に代入する形式で変数値を設定しているので、DBI等のバージョンをあげたら解消されるかと思い、DBIを1.605、DBD::mysqlを4.007にしてみましたが、変化は見られませんでした。

amavisdを書き換え、INSERT前に本文のシングルクォートを削除する事により暫定的に通るようにできましたが、どんな影響がでるか不明です。

なにかよい方法がありましたら、ご教授お願いします。


No.7620 投稿時間:2008年07月19日(Sat) 09:42 投稿者名:おやじ URL:
タイトル:おやじは他の問題が見つかりました。

> 構築も終わり運用し始めたとことなのですが、1通のメールが到達しない現象が発生しました。
> SMTP関連の環境はPostfix、PostfixAdmin、MaiaMailGuard1.0.2a、ClamAV、SpamAssasinを組み込んでいます。
> エラーはamavisdがmaia_mailテーブルにINSERTの際に発生し、その条件は、UTF-8で記述されたメールの本文中にシングルクォートで囲われた奇数文字の漢字が存在する時にエラーになるように見えます。
> SJISで記述した場合は正常に動作しますし、UTF-8でも「'ああ'」は正常ですが「'あああ'」はエラーが発生します。
> amavisdのコードを見ると、"?"に代入する形式で変数値を設定しているので、DBI等のバージョンをあげたら解消されるかと思い、DBIを1.605、DBD::mysqlを4.007にしてみましたが、変化は見られませんでした。
>
> amavisdを書き換え、INSERT前に本文のシングルクォートを削除する事により暫定的に通るようにできましたが、どんな影響がでるか不明です。

おやじの環境(SuSE10.3)ではエラーらしきものはありません。というより、これはこれで調査が必要ですがUTF-8のメールは本文が記録されないことがわかりました。KenZは大丈夫ですか?
修正されたのは、"maia_store_mail" のところと思いますが、具体的にどんなエラーがでるのでしょうか? 
ときどき見かけるエスケープ問題のような気もします。
残念ながら今は時間がとれませんので、検証することができません。


No.7625 投稿時間:2008年07月22日(Tue) 12:01 投稿者名:KenZ URL:
タイトル:Re: おやじは他の問題が見つかりました。

回答ありがとうございます。

> おやじの環境(SuSE10.3)ではエラーらしきものはありません。というより、これはこれで調査が必要ですがUTF-8のメールは本文が記録されないことがわかりました。KenZは大丈夫ですか?

本文が記録されないというのは、maia_mailテーブルにですよね?
私の環境では、テーブル中にも記録されているようですし、Webで判定待ちのメール内容を見ても表示されるので、大丈夫だと思います。

> 修正されたのは、"maia_store_mail" のところと思いますが、具体的にどんなエラーがでるのでしょうか? 

maillogに下記のメッセージが出力されます。
Jul 15 09:37:58 lis-dragon postfix/smtp[9837]: AE97E6444F7: to=<メールアドレス>, orig_to=<メールアドレス>, relay=127.0.0.1[127.0.0.1], delay=0, status=deferred (host 127.0.0.1[127.0.0.1] said: 451 4.5.0 Error in processing, id=14239-05, mime_decode-1 FAILED: DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\\" シングルクォートが閉じた後の本文' at line 1 at /usr/sbin/amavisd line 3792, <GEN5> line 71595. (in reply to end of DATA command))

> ときどき見かけるエスケープ問題のような気もします。

恐らくそうであるような気がします。
何らかのコードの組み合わせで、シングルクォートのエスケープが打ち消されて、VALUES句中に不明な文字が現れてしまっているのだと思われます。

時間のある時に、execute関数の内部動作を追ってみようかと思います。



掲示板▲頁先頭