title_parttitle_parttitle_part
静岡県浜松市であれこれソフトを開発している A.K.I Software のブログです。日々の開発日記やサーバー・セキュリティ関連の話題なども掲載。
<< 2024/05 >>12345678910111213141516171819202122232425262728293031
《《《 ネットワーク機器の購入は Amazon で! 》》》
Powered by BLOM Version 2.02a Memo
小さくも大きくも閉じたりもしません
11/11/12 03:55 / PMailServer2

PMail Server は Boune mail (所謂エラーメール)をローカルユーザーへのみ返して、外部ユーザーには送らない。という仕様を取ってきました。

これは、送信者を偽装してわざとエラーメールにすることにより、特定のアドレスへエラーメールを大量に送りつけることができる。という構造的な問題があって、意図的にずっとサポートをしていなかったのです。(それ以外に某MTAの仕様が嫌いってのもあったのですが・・・これは後述)

が、しかし、これはこれで1つ問題があり、中継サーバーとして利用した場合、エラーメールが返らないという問題もあります。

サーバーAが、中継サーバーにメールを送って、中継サーバーがサーバーBに中継するとします。

サーバーAが配信した時点で中継サーバーが受け取らない(エラー)になった場合、サーバーAが元の送信者にエラーメールを返しますので、これは問題ありません。

しかし、中継サーバーがサーバーBへ中継した際にサーバーBでエラーになると、中継サーバーが PMail Server の場合、エラーメールを返しませんので(中継サーバーに該当するアカウントがあれば、そこに返します。そこからフォワードで転送することも可能ですが、不特定多数から送られてくる場合は当然アウトです。)

サーバーBでキャッチオールで受信して、エラーを送るようなアドオン作れば可能ですが、アドオンが必要になったりしますので、あまり現実的な対処方法ではありませんでした。

前置きが長いのですが・・・

最近、お問い合わせの中で中継サーバー的な利用をするユーザー様も増えてきていることもあり、少し今更感があるのですが、外部アドレスへエラーメールを送る機能を実装することにしました。

有効にすることにより中継サーバーであっても、エラーメールを送ることが出来るようになります。

そして、また前置きが長いのですが・・・

冒頭に書いた某MTAの嫌いな仕様があって、それを引きずって外部への配信を毛嫌いしていた理由なんですが・・・

送ったメールを全文引用して Bounce mail を送ってくるのですよ。「添付ファイルがあった場合、エンコードされた MIME 部分も全て含めて」

また元のメールを MIME でパックして送ってくるのであればマシなんですが、本文にそのままテキストで張り付けて送ってくるケースもあります。
4.0M くらいの添付ファイルで本文が5万行とかになります。
(Base64 でエンコードされている為)

テキストばかりの時代であれば、別に大した行数にはならないのでよかったと思いますが、最近ではメールに数メガのファイルを添付するのは普通なので、この仕様はどうかと思います。(そもそも送信者が送ったメールなので、それを全文送りなおすというのは無駄な気がするんですが・・・)

ということで、そういうエラーメールは返さない(元々の PMail Server のエラーメールと同じ仕様)でエラーメールを送るような仕様となります。

あと、某G社のメールを Webmail で引用(返信)した際におかしくなる点も修正しました・・・というか対応しました。

某G社のメールは基本 UTF-8 になっているのですが、7bit しか通らない(通さない)MTA も存在するので、UTF-8 を HTML エンコード(UTF-8 のバイナリを %#xxxx; のように ASCII で表記)して、それを更に Base64 でエンコードしています。

「UTF-8 を直接 Base64 にすればいいのに。Transfer-Encoding も Base64 としか書かれていないのに。というか判定失敗する可能性あるやん?テキストベースのメーラーどうすんねん。」

基本的に Web ベースだからそういう仕様なんですかね。

影響力あるんだから、Content-Transfer-Encoding: Base64/HTML とかそういう風に規定してごり押ししてくれた方がはるかにマシ。

うちの Webmail も Webベースですので、表示上は文字化けなどしないので、引用時まで気が回っていませんでした。

ただ、実際にはワードラップ機能を使っていなければ問題ありません。
ワードラップ処理は ASCII での byte 単位で指定をする必要があって(デフォルトで 78byte、一応歴史的理由というものがあり、改行を含めて「80byte で納めるべき」最大でも改行を含めて「1000byte 以内にしなさい」というものがあって、78byte になっています)デコード前の ASCII での文字数で換算しています。それを %#xxxx; なんて出力をしてくれているので、ワードラップ処理が誤作動をしてしまう→引用時におかしくなるという訳です。

どうにも回避できないので、その場合はワードラップ処理を行わないという対処になっています。
そもそもデコードすると 1byteから3byteに可変してくれますので。文字数で処理するとRFCを合わなくなりますし、Webmail は原則として Shift-JIS 出力しているので、その点でも困ったことになるという話もあります。

ユーザーレベルでは関係の無い話だったりしますが(^-^;

[更新日付:2011/11/12 03:55:53]
トラックバックを見る(0)
Log Link [https://akisoftware.com/cgi-bin/blom.exe?akisoft+sl+dbbaddfdd45fb849a7d26b67c61e165b3dc03703]
TB Link [https://akisoftware.com/cgi-bin/blom.exe?akisoft+tb+dbbaddfdd45fb849a7d26b67c61e165b3dc03703]

記事へのコメント

コメントはありません

名前
コメントキー
 
コメントする時はキーを正確に入力して下さい
コメント
アドレスを含んだコメントはできません
© 2008-10 A.K.I Software all rights reserved.