「SMTP の弱点」 においてのべたように,SMTP はその応答コードによっては比較的かぎられた情報しかかえすことができない. しかし,応答コードとともにメッセージをかえすことができるため,ある程度は実時間でメイルの内容を検査した結果をかえすことができる. Perl によってプログラムを記述して,実時間応答の実装をこころみた.
SMTP サーバ (or プロキシ) をつくるためのかんたんな方法は Net::SMTP::Server というモジュールをつかう方法である. しかし,この方法ではきめこまかい応答をかえすことができず (クライアントには OK (250) 応答しかかえせない),上記の仕様をみたすことができない. そのため,Net::SMTP を使用して,クライアントが送信するコマンドごとに応答を制御する.
クライアントから送信されるメイルの本体が “.\n\n” によって終了したとき,その内容を検査して,不適切な内容がふくまれるときは “554 5.6.0” という応答をかえす.“X.6.0” という拡張コードは “Other or undefined media error” を意味する [RFC 3463].
このようにすると,この応答コードがかえされたときに,メイラーがエラー・メッセージをポップ・アップさせる. ただし,このウィンドウには応答コードに付属するエラー・メッセージのほかにおおくの情報が表示されるため,あまりみやすくはない. また,日本語のメッセージを表示させるのは困難である. (Windows 上の Thunderbird のばあい,S-JIS コードでメッセージを記述するとうまく表示された. しかし,これでは標準に反しているうえ,互換性がない.)
ウィルス対策ソフトがインストールされているときは,メイラーではなくてそのソフトがエラー・メッセージを表示する (確認したのは Symantec Antivirus だけなので,他のソフトがおなじように応答するかどうかは確認していない).
結論
Thunderbird, Outlook, Outlook Express, Windows メールにおいては,一応は実時間の応答が実現できた. あるいは,Symantec Antivirus がインストールされていれば,おそらくどのようなメイラーを使用してもおなじように実時間応答が実現できる. しかし,メッセージはよみやすくないし,あたえられる情報もかぎられている.