インターネットが普及した現在、電子メールは我々の生活に欠かせないものになっている。 電子メール自体の歴史は古く、UNIXなどとは独立に発達し、その後UNIXの発展や米国のUNIX電話網 ネットワーク(USENET)の発展等とともに歩んできた。それだけに設計は古く、また複雑になっている。
電子メールの送受信の核となっているのは、電子メール同士のやりとりであるSMTP(Simple Mail Transfer Protocol) である。SMTPは、テキストベースのプロトコルであり、また、古い設計ゆえに7bitでの情報交換が仮定されている。 SMTPには基本的に認証の仕組みがないので、任意のメールサーバに対し、任意の宛先の電子メールを 差出人さえ適当に設定し、送ることができた。(現在は、追加された機能により、アクセス制限をかけるようになった。)
出されたメールの転送先アドレスは、各メールサーバで計算される。この時、使用されるのがDNS (Domain Name System)である。電子メールの宛先は、特定のコンピュータの名前ではなく、ひとまとまりの 組織の代表アドレス(ドメイン)に送るのが普通である。しかし、一方で電子メールサーバ自体は、そのドメイン内に 存在する一台のコンピュータである。そのため、ドメインと実際に存在するコンピュータのIPアドレスを 結びつける必要がある。これを実現するためDNSは、この電子メールドメインと受信サーバの対をデータベースとして持ち、 メールサーバからの問い合わせに対して、送信先のIPアドレスを答える。データベースの中のこの内容を 通称MX(Mail eXchange)レコードと呼んでいる。
ところで、電子メールサーバがダウンすることに対する対策は、 実際考えられている。1つは、一旦転送に失敗しても、再び送るという動作を行うことである。これは 例えば、1時間毎に再試行され、4日間続けられるといったものである。これにより、1日程度のメールサーバのダウンではメールを 失うことはなく、システム復旧後に受信できる。もう一つは、MXレコードに複数のメールサーバを登録でき、 優先順位を指定できることである。メールサーバは、送り先のホストを優先順位の高い順に調べ、受信可能なサーバに メールを転送する。これによって、同一ドメインに対して、複数のメールサーバを設置でき、一台が故障してもシステムダウンに ならずに済む。
しかし、冗長システムとしては、これだけで十分だろうか。問題となるのは受信者側である。 複数のメールサーバが存在する時、受信者は、複数台のメールサーバにアクセスしなければならない。 又、受信したメールが入っているメールサーバが故障すれば、受信したメールを失ってしまう。 これを本質的に解決するには、メールボックスを多重化する必要があるが、知られているメールシステムで それを実現しているものはほぼないと言える。そこで本研究では、メールボックスの多重化を含めた耐故障性のある メールシステムを設計し、実装した。実装にあたり次のことに留意した。
さらに受信側には留意しなければいけないこと点がある。Macintosh用Eudra、OS/2、Warp3、Windows95の 発表以来、電子メール利用者は、自分のコンピュータにメールボックスを持たず、Post Office Protocol(POP)という プロトコルを使用して、メールサーバからメールをダウンロードするMUAを使用するようになった。したがって、 冗長メールサーバは、このPOPを使用しているMUAから通常のメールサーバと同様に扱える必要がある。 本研究では、これらの要求を満たす冗長メールサーバを、DNSを除き4台のコンピュータを使用して 構築した。使用ソフトウェアは、POPサーバの多重化をする際に自作のプログラムをPerl言語で実装しただけで、 他はSendmailとipopdという既存の有名なサーバを使用した。したがって、非常に移植性が高くなっている。
2章では電子メールの仕組み、3章では冗長メールサーバの設計、4章ではSendmail、5章では実験と実装、 6章ではまとめについてそれぞれ述べる。