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] などをテストすれば良い でしょう。
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.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 のプロセス番号を調べて、それを 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 connectionmail 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 の設定がおかしい場合です(勿論、ネットワークが つながっている事を前提とします)。