5章 実験と実装

5-1 実験の概要

実験は、プライベートネットワーク内の3台のコンピュータ(Debian GNU/Linux3.0)を使用して行った。

中央メールハブ:ローカルユーザあてに来たメールを複製し、メールサーバA,Bにメールを転送する。

メールサーバA、B:中央メールサーバから転送されてきたメールをメールボックスに格納する。


5-2 メールボックスのsendmailの設定、POPサーバの設定

5-2-1 メールサーバA,Bの設定内容(sendmail.mc)

include(/usr/lib/sendmail.cf/m4/cf.m4)dnl
VERSIONID(`sendmail.mc')dnl
OSTYPE(`debian')dnl
FEATURE(`allmasqurade')dnl
FEATURE(`masqurade_envelope')dnl
FEATURE(`always_add_domain')dnl
FEATURE(`virtusertable')dnl
FEATURE(`local_procmail')dnl
FEATURE(`access_db')dnl
FEATURE(`blacklist_recipients')dnl
MAILER(`smtp')dnl
MAILER(`procmail')dnl

5-2-2 POPサーバの設定内容

/etc/inetd.confに

pop3 stream tcp nowait root ipop3d ipop3d

と設定して、inetdを起動する。
/etc/init.d/inetd restart


5-3 メールハブの構成

5-3-1 サーバの機能

sendmailの機能を利用して、メールハブを実現する。メールサーバは次の動作を行う。

1、net.c.dendai.ac.jpドメイン宛てのメールは全て受け取る。

2、受け取ったメールをメールボックスのあるメールサーバs2、s7に振り分ける


5-3-2 メールハブの設定内容(sendmail.mc)

include(`/usr/lib/sendmail.cf/m4/cf.m4')dnl
OSTYPE(`debian')dnl
define(`ALIAS',/etc/mail/aliases)dnl …(1)
MAILER(`smtp')dnl …(2)
(1)sendmailのエイリアスファイルで、ユーザ名のエイリアスを作成する。

(2)SMTPを使用する。

・sendmailのエイリアスファイルについて

sendmailのエイリアスファイルを利用することで、ローカルユーザあてに来たメールを メールサーバA,Bに転送する。/etc/mail/aliasesは、エイリアスを記述するファイルですが、 sendmailが実際に使用するファイルは、ハッシュ形式のデータベースファイル/etc/mail/aliases.db である。コマンドnewaliasesを実行すると/etc/mail/aliasesファイルを読み、/etc/mail/aliases.dbを 作成する。また、/etc/mail/aliasesを変更した場合もnewaliasesコマンドを実行する。

・/etc/mail/aliasesの設定

aliasesの設定例

#Create a simple multi-user mail list
ichitaro: ichitaro@s7.net.c.dendai.ac.jp,ichitaro@s9.net.c.dendai.ac.jp

2つのメールサーバA,Bにメールを転送する。


5-3-3 メールハブの動作確認

上記のように設定したホストに対しメールを送ったところ、正しく二台のメールボックスのあるサーバに振り分けが 行われた。


図9 メールハブへのメール転送


上記の図9は、ホストs2からホストs8(メールハブ)へメールを送っている。


図10 メールハブからホストs7へのメール転送


図11 メールハブからホストs9へのメール転送


上記の図10,11は、ホストs8(メールハブ)から複製されたメールがそれぞれホストs7、s9へ転送されたことを 表している。


5-4 DNSの設定

設計の章で述べたように、DNSを設定する。DNSに関しては技術的に解決しており、又、時間的な制約もあり、 今回の実験は割愛した。


5-4-1 POP振り分けシステムの作成

POP振り分けシステムは、perlで作成し、IO::Socket、IO::Selectモジュールを使用する。 ローカルユーザからPOPサーバへ接続要求があった時、POP振り分けシステムは、 限定のポートへの接続を受け付けるよう設定されている待機用のソケットを使う。 この待機用ソケットは、IO::Selectによって登録されている。 IO::Selectにより、短い周期で発生する要求を 処理でき、また、並行した複数の通信や次に行われる通信のために余裕を持つことが可能である。そのため、 メールボックスを持つ複数のPOPサーバにユーザからの POPコマンドを送れる。そうすることによって、複数のPOPサーバのメールボックスの同期を取ることができる。


5-5 完成したシステムとシステムの冗長性

メールの冗長システム最小構成は、二台のDNSサーバ、二台のメールハブ、二台のメールボックス+POP振り分けシステムの合成 、全部で六台から構成される。耐故障性に関しては、次のような動作により保障されている。

1、DNSサーバが一台故障した時、
DNSサーバは、一台がプライマリ、一台がセカンダリに設定し、セカンダリは、プライマリの情報のコピーを持っている 上位DNSサーバに二台を登録しておくことにより、一方が故障してももう一台が同じ内容を答えることができるので、システムとしては 正常に動作する。

2、メールハブが一台故障した時
メールハブは、それぞれDNSのMXレコードにアドレスが登録されている。もし一台が故障した場合、バックアップメールハブが故障した メールハブのIPアドレスを受け取り、処理をつづける。

3、メールボックスが故障した時
同一内容のメールボックスを持つマシンがあるため、サービスを続けられる。