Java Mailer T42 Project

製作日誌

第5回: 送受信クラス

1999年6月2日


ネットワークプロトコル

ネットワークのプロトコルに関して共通なものの処理を集めたクラスとして NetworkProtocol を作る。これを親として、SmtpClinet, PopClient, ImapClient などの子クラスを作り、そのプロトコルに特化したコマンドの送信・応答の単純な処理を受け持つようにする。更に、送信・受信の面倒をそれぞれみるクラスを作り、先のクラスのメソッドを操作して一連の送受信の操作を行い、メッセージの queue からの取り出し、inbox への格納なども行うようにする。


送信

送信に関しては次の3つの処理が考えられる。

  1. 外部のリレーサーバーの SMTP ポートをたたく。(SmtpClient)
  2. 自前(localhost) の SMTP ポートをたたく。(SmtpClient)
  3. ローカルメイラーを呼び出し、自前の MTA の queue に送り込む。(LocalmailClient)

2,3 は自前で MTA を持つ場合である。1,2 は指定するサーバーを変えれば済むことなので同じことである。3 は外部のプログラムを呼び出すことになるので簡単にできるかどうかまだ検討が付いていないが、できそうであれば実装する。

受信

受信に関して次の4つの処理が考えられる。

  1. 外部のサーバーの POP3 ポートをたたく。(PopClient)
  2. 外部のサーバーの IMAP4 ポートをたたく。(ImapClient)
  3. qmail の Maildir 形式のメイルボックスからメールを読み込む。(MaildirHandler)
  4. mbox 形式のメイルボックスからメールを読み込む。(MboxHandler)

1,2 に関してはそのままの意味通りなので特に説明しない。3,4 は UNIX 上でのメイルの保管形式である。Maildir 形式は簡単に実装できそうである。mbox 形式は MDA もこのファイルにアクセスするため、ロックをかける必要があるが、安全に行えるか不安がある。一応実装する予定ではあるが、安全性は保証しない。JavaVM はどのようなロック機構を持つのだろうか?


目次