POP3サーバーを作る 作ればわかるアプリケーション の動作とメカニズム 秋月巌ソリューション事務所 11回 POP3サーバーを作る 第 今回、提供するPOP3サーバーは、 前号までのSMTPサーバーサンプ ルプログラムで送受信したメール メールクライアントプログラムは使 メッセージを、メールクライアント 用できない。SMTPサーバーと別 プログラムで読むためのものであ のプロトコルの組み合わせでも同 る。メールの送受信を行なうネッ じである。つまり、一般に普及し トワークは、SMTPサーバーによる てるメールクライアントプログラム P2Pネットワークに、クライアン を使用する以上、SMTP とPOP 3 ト/サーバー型のネットワークが (もしくはIMAP4)の組み合わせは、 ぶらさがっているものであるとい Level 2 AKIZUKI, Iwao http://www.akizuki.co.jp/ メールクライアント にデータを配信する POP3サーバー 1 秋月 巌 3 4 5 う話は以前にした。POP3サーバー とメールクライアントによって構成 されるネットワークは、このクライ Technology Tools アント/サーバー部分に相当する。 Visual Basic このあたりのことは、知識のある Visual C# Visual C++ SQL Server Oracle Access ASP.NET Other: Visual Studio .NET 2003 Samples この記事で取り上げたソースコードおよび サンプルプログラムは、 http://www.shoeisha.com/mag/windev/ からダウンロード可能です。 変えられないということになる。 人にとっては当たり前のことだが、 SMTPと POP3(IMAP4) 以外の組み合わせ とはいえ、たとえば Webメール 案外と知らない人も多い。SMTP はSMTPとHT TPの組み合わせで とPOP3 は独立したプロトコルだ ある。POP3サーバーとメールクラ が、事実上、共存関係にある。と イアントが担当するクライアント はいえ、この組み合わせしか許され サーバー部分を Web サーバーと ないわけではない。この連載で作っ Webブラウザが処理する。メール ているメールサーバーもSMTPサー クライアントプログラムの代わりに バーとPOP3サーバーの組み合わせ Webブラウザを使うからPOP3(I のわけだが、POP3サーバーと別の MAP4)以外のプロトコルが使用 プロトコルの組み合わせで、メー できるのである。そう考えると、普 ルサーバーを作ることもできる。と 及しているいろんな通信クライア はいえ、その場合、IMAP4との組 ントとSMT Pの組み合わせでメー み合わせを別にすれば、普通の ルのやり取りができるということ 2006 March 137 .NET Framework で作る Windows サーバー 作ればわかるアプリケーションの動作とメカニズム に考えが及ぶ。 る。もともとSMTPサーバーとPOP3サーバーは独立し たとえば、インスタントメッセンジャーで直接メール たプログラムなので、SMTPサーバーが受信して処理し を受信できるメールサーバーを作ることは簡単そうであ たメールデータをPOP3サーバーが扱うには、データの る。とはいえ、インスタントメッセンジャーからメール 移行処理が必要な場合がある。しかし、このサンプル を送信するのはいくつかの問題がある。通常、インスタ メールサーバーは、SMTPサーバーとPOP3サーバーが ントメッセンジャーのデータ送信はフリーフォーマット Jetデータベースエンジンを使って同じデータベースにア なので、メールアドレスや件名を記述する部分が用意さ クセスすることで、移行処理を不要としている。 れていない。だから、インスタントメッセージクライア ントプログラムに、これらを記入する部分を用意する必 要がある。メールが直接受信できるインスタントメッセ ンジャーというのはなかなか便利そうである。現在でも サンプルプログラムの 実行方法 msn(Windows)メッセンジャーは、Hotmailと統合さ まずSMTP Serverフォームの[Start]ボタンをクリッ れているが、これはあくまでメッセージの着信がメッセ クしてSMTPサーバーを実行し、別のコンピュータで起 ンジャーによって通知されるだけで、メールを読むには 動したサンプルメールサーバーからメールを受信する。 Webブラウザを起動しなければならない。 続いてPOP Serverフォームにユーザー名とパスワードを Webメールにしても、POP3メールにしても、メール 登録する。最後にPOPフォームの[Start]ボタンをク を取りに行かないとメールが届いていることを知ること リックしてPOP3サーバーを実行し、メールクライアン ができない。どちらもサーバーとクライアントが常時接 トソフトでメールをダウンロードする。 続されていないからである。インスタントメッセンジャー なお、フォームにある設定項目である「スレッド数」 でメールも受信できれば、リアルタイムで応答すること を「1」以外にすると、.NET Framework 1.1/2.0環境で ができる。とくに今日のように携帯電話メールとのやり はエラーが 発生するのを確認した。.NET Framwork 取りがあることを考えれば、このメリットは大きい。 1.1/2.0環境で試す場合は「1」を指定してほしい。 前号までのSMTPサーバーに POP3機能を追加 さて、今回のサンプルメールサーバーでは、前号まで POP3サーバーの機能だけ試す方法 上記の方法では、2台のコンピュータでサンプルメー ルサーバーを実行し、2つ以上のメールクライアントプ ログラムを設定する必要が ある。そこで 1 台のコン のSMTPプログラムのプロジェクトに新しくPOP3サー ピュータで POP3サーバーの動作を確認できるように、 バー用のフォームを追加した(図1) 。プログラムを実行 サンプルデータがデータベースに登録されている。その すると、SMTPサーバーのウィンドウとPOP3サーバー メールデータをメールクライアントで受信するためには、 のウィンドウが起動する。SMTPサーバー部に変更はな い。だから、前号同様メールを送信するときにはメール アドレスのドメイン部にIPアドレスを指定しなければな らない。よって、インターネット経由で、このメール サーバー同士でメールのやり取りをすることはできる が、通常のインターネットメールに参加することはでき ない。あくまで実験的に動かせるだけだと考えてほしい。 SMTPサーバーがDNSクライアント機能を備えていない からである。 このサンプルメールサーバーでは、受信したメール データをSMTPサーバーとPOP3サーバーで共有してい 138 Windows Developer Magazine 図1:POP3サーバー機能を備えたフォーム
© Copyright 2024 Paperzz