next up previous contents
Next: 6.8 その他のメール環境整備 Up: 6. mail の設定 Previous: 6.6 日本語の問題

6.7 テスト方法

メール環境のテストは段階を踏んで行うべきであり、いきなり sendmail, sendmail.cf をインストールしてはいけません。以下、順にテスト手順について解説していきます。
アドレス書き換えのテスト

まず最初に、sendmail.cf に設定されたアドレス書き換えが正当かどうかを確認 しましょう。
      sendmail.8.9.1.SunOS5.5.mx -bt  -C[name of sendmail.cf]
オプション -C は、コンフィギュレーションファイルの指定です。指定しないと、 デフォルトに設定されます( sendmail R8 では、普通にコンパイルすると cf は /etc/sendmail.cf にあると設定されます)。 また、C の後ろに空白を入れてはいけません(必要ならば、パスも含めて下さい)。 このテストモードでは、ルールセットとアドレスを指定することによって、結果を 確認することが出来ます。最終的な書き換え結果を知りたい場合は、0を指定します。
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> 0 hogehoge
rewrite: ruleset  0   input: hogehoge
rewrite: ruleset  0 returns: $# local $: hogehoge
> 0 hogehoge@kuis.kyoto-u.ac.jp
rewrite: ruleset  0   input: hogehoge @ kuis . kyoto-u . ac . jp
rewrite: ruleset 97   input: hogehoge @ kuis . kyoto-u . ac . jp
rewrite: ruleset  3   input: hogehoge @ kuis . kyoto-u . ac . jp
rewrite: ruleset 96   input: hogehoge < @ kuis . kyoto-u . ac . jp >
rewrite: ruleset 96 returns: hogehoge < @ kuis . kyoto-u . ac . jp >
rewrite: ruleset  3 returns: hogehoge < @ kuis . kyoto-u . ac . jp >
rewrite: ruleset  0   input: hogehoge < @ kuis . kyoto-u . ac . jp >
rewrite: ruleset 88   input: < smtp : kuis . kyoto-u . ac . jp > : 
hogehoge < @ kuis . kyoto-u . ac . jp >
rewrite: ruleset 88 returns: $# smtp $@ kuis . kyoto-u . ac . jp . 
$: hogehoge < @ kuis . kyoto-u . ac . jp >
rewrite: ruleset  0 returns: $# smtp $@ kuis . kyoto-u . ac . jp . 
$: hogehoge < @ kuis . kyoto-u . ac . jp >
rewrite: ruleset 97 returns: $# smtp $@ kuis . kyoto-u . ac . jp . 
$: hogehoge < @ kuis . kyoto-u . ac . jp >
rewrite: ruleset  0 returns: $# smtp $@ kuis . kyoto-u . ac . jp . 
$: hogehoge < @ kuis . kyoto-u . ac . jp >
但し、この際には、aliases などは展開されないので、一語アドレスなどはローカルに 落ちるだけです。一般には、一語アドレス、[user]@[mydomain]、 [user]@[host].[mydomain]、[user]@[other domain] などをテストすれば良い でしょう。

エイリアスのチェック

次に、aliases のチェックを行います。これには、ベリファイモードを使用します。 但し、この場合、/var/spool/mqueue を使用するので、root でテストすることを 忘れないようにして下さい。
      sendmail.8.8.5.SunOS5.5.mx -bv hogehoge
この場合、hogehoge のエイリアスがチェックされ、配達可能であれば次の 様に表示されます。
hogehoge@summer1... deliverable: mailer smtp, host [202.11.xx.xx], 
user hogehoge@summer1.wakhok.ac.jp
更に、詳しくチェックするには、冗長モードを使用します。
       sendmail.8.9.1.SunOS5.5.mx -C[sendmail.cf] -v -bv hogehoge
この場合、エイリアスと共に、~hogehoge/.forward も表示されます。

冗長モードでの配送

実際に、sendmail を使って配送をします。しかし、このためには必ずどれか メールを受け取れるマシンが必要です。まったく、利用可能なマシンがない場合は インストールが終わってからテストをすることにします。
       sendmail.8.9.1.SunOS5.5.mx -C[sendmail.cf] -v hogehoge
この場合、hogehoge 宛に、メールを送ります。aliases が hogehoge に対して設定 されていなければ、ローカルに落ちる筈です。また、アドレスを指定して 別のマシンに届くかどうかも確かめてみることが必要です。 この場合、相手の sendmailとの会話の様子が表示されます。
#sendmail.8.9.1.SunOS5.5.mx -Cmy.cf -v hogehoge@summer2
test
.
root@summer2... Connecting to [202.11.xxx.xxx] (smtp)...
220-lxf1.summer2.wakhok.ac.jp Sendmail R8/3.7Wpre6 ready at Sat, 29 
Jul 1997 15:08:24 +0900
220 ESMTP spoken here
>>> EHLO lxa1.summer1.wakhok.ac.jp
250-lxf1.summer2.wakhok.ac.jp Hello lxa1.summer1.wakhok.ac.jp [202.11.xxx.xxx],
pleased to meet you
250-EXPN
250-SIZE
250 HELP
>>> MAIL From:<root@summer1.wakhok.ac.jp> SIZE=5
250 <root@summer1.wakhok.ac.jp>... Sender ok
>>> RCPT To:<hogehoge@summer2.wakhok.ac.jp>
250 <hogehoge@summer2.wakhok.ac.jp>... Recipient ok
>>> DATA
354 Enter mail, end with "." on a line by itself
>>> .
250 PAA07638 Message accepted for delivery
hogehoge@summer2... Sent (PAA07638 Message accepted for delivery)
Closing connection to [202.11.xxx.xxx]
>>> QUIT
221 summer2.wakhok.ac.jp closing connection
ここで、最初の test と次の行のピリオッド(.) までが入力です。sendmail からの応答は、最初にステータスを示す番号が返って来ることになっています。

デーモンのテスト

さていよいよ sendmail をデーモンで立ちあげて、本格的なテストに入りましょう。 まず、もし現在、sendmail がデーモンで走っていたならば、それを kill しなければ なりません。

sendmail のプロセス番号を調べて、それを kill します。

        # ps -e | grep sendmail
        237 ?        0:01 sendmail
        # kill 237

次に、新しい sendmail を立ちあげます。

        # /usr/lib/sendmail -bd -q15m
ここで、オプション -bd でデーモンとして sendmail を実行し、SMTP (Simple Mail Transfer Protocol) での着信 に待機するように指示しています。-q オプションの 後ろの 15m は、15分( 15 min. ) ごとにキューに溜まったメールを処理する時間 間隔を指定しています。 通常は、-q1h (1時間)ごとに処理するようにスタートアップ・ファイルに記述 されています。

これで、sendmail がポート番号 25 で、デーモンとして動いている筈ですから、 まず、その動作を確認します。 その際に、MUA を用いるのではなく、telnet を用いて直接 SMTP で sendmail と会話するようにします。(このようにするのには理由があります。mail のテスト では、MUA と MTA が関係して来るので、単に配送されないというだけでは問題が 分からないからです。)

    # telnet localhost 25
    Trying 127.0.0.1 ...
    Connected to localhost.
    Escape character is '^]'.
    220-summer1.wakhok.ac.jp. Sendmail R8/3.7Wpre6 ready at Sat,
    06 Aug 1997 15:46:35 +0900
    220 ESMTP spoken here
このように sendmail からの返事が返ってくれば、少なくとも sendmail は動いて いる訳です。 次に、使用可能な SMTP のコマンドを調べます。
     help
     214-Commands:
     214-    HELO    EHLO    MAIL    RCPT    DATA
     214-    RSET    NOOP    QUIT    HELP    VRFY
     214-    EXPN    VERB
     214-For more info use "HELP <topic>".
     214-To report bugs in the implementation send email to
     214-    sendmail@CS.Berkeley.EDU.
     214-This sendmail includes "WIDE-Internet patch package" which provides
     214-some useful improvements.
     214-To report bugs/questions about this patch send email to
     214-    motonori@wide.ad.jp
     214-For local information send email to Postmaster at your site.
     214 End of HELP info
まず HELO と EHLO は、最初に話しかける時に使われますが、EHLO を使うと 拡張SMTP を自分が話すことが出来ることを示すことにります。ここは、HELO を使うことにします。sendmail8.7.x からは、HELO を使わないとエラーメッセージ がメイルのヘッダーに入るようになっています。また、相手ドメインのオプションも 忘れずに付けて下さい。

helo summer1.wakhok.ac.jp
250 lxa1.summer1.wakhok.ac.jp. Hello localhost [127.0.0.1],
pleased to meet you
きちんと自分のホスト名、ドメイン名になっているか確認します。 次に、アドレス書き換えのチェックを行います。
	expn whoami
	550 whoami... User unknown
	expn root
	250 0000-Admin(0000) <root@lxa1.summer1.wakhok.ac.jp.>
	expn hogehoge
	250 <hogehoge@lxa1.summer1.wakhok.ac.jp>
	expn hoge2
	250 <hoge2@lxa2.summer1.wakhok.ac.jp>
	expn hoge2@lxa2
	250 <hoge2@lxa2.summer1.wakhok.ac.jp>
	expn kana@kyoto-u.ac.jp
	250 <kana@kyoto-u.ac.jp>
それぞれローカルユーザーの1語アドレス、別のホストにスプールを持つ ユーザーの1語アドレス、ユーザー名@ホスト名、外部のフルのアドレス などをテストしてみます。 これらが全て期待通り展開されるようならば、いよいよメールを出してみましょう。
	mail from:<root@summer1.wakhok.ac.jp>
	250 <root@summer1.wakhok.ac.jp>... Sender ok
	rcpt to:<hogehoge>
	250 <hogehoge>... Recipient ok
	data
	354 Enter mail, end with "." on a line by itself
	Subject: test

	this is a test.
	.
	250 SAA03184 Message accepted for delivery
	quit
	221 lxa1.summer1.wakhok.ac.jp. closing connection
mail from: が差出人のアドレス指定で、< > でくくらなければなりません。 次に、rcpt to: が受取人のアドレス、data が本文のメッセージです。 メッセージの終わりは、ピリオッド(.)、リターンで示します。

sendmail との会話を終わらせるには、quit と入力します。

さて、これでうまくローカルの hogehoge にメールが到着したでしょうか? うまく行かない場合は、まず /bin/mail.local, /var/spool/mail, /var/mail のパーミッションを調べて下さい。これらのパーミッションが 正しく、sendmail に問題がないならば、NIS map に問題がないかを調べて みましょう。多くの場合は、これらの設定ミスです。

ローカルでのテストに成功すれば、NIS 配下の他のホストへの配送を 試してみましょう。着信がなければ、まずキューを調べてみましょう。

      # /usr/lib/sendmail -bp
この時、もしエラーならば2行目以降に理由が表示されるます。また、もし、 キューに溜まっていなければ、相手先ホストでのトラブルと考えられるので、 相手先ホストのキューを調べます。また、root 宛にエラーメッセージが来ている こともあるので、root 宛のメイルについてもチェックします。

うまく着信したならば、メールのヘッダーをチェックします。期待した通りの アドレスになっているか、配送経路に問題はないかを見ます。

自ドメイン内での配送に成功したならば、同じように他のドメインの管理者と 連絡を取り、他のドメインとの配送を調べます。この時、まず、ハブホストからの 配送を試し、次に他のマシンからの配送という具合に順に調べていきます。 当然、配送するたびに、ドメイン内でのテストと同じようにメールのヘッダー をチェックし、経路、アドレス書き換えに問題がないかをチェックします。 うまく行かないときには、まず相手先の DNS がうまく引けているかをチェック します。DNS 自体は動作していても、MX フィールドの設定がおかしいのかも 知れません。また、自分のサイトの DNS がおかしい場合もあります。双方向で 調べて下さい。DNS でメイルを配送出来ない理由の多くは、sendmail の作成 に失敗しているか、DNS の設定がおかしい場合です(勿論、ネットワークが つながっている事を前提とします)。



Noriyo Kanayama