この節では、メールサービスの問題解決に使用できる手順とヒントをいくつか示します。
構成ファイルに対して行なった変更をテストするには、次の手順に従います。
変更した構成ファイルがあるシステムで sendmail を再起動します。
# pkill -HUP sendmail |
各システムからテストメッセージを送信します。
# /usr/lib/sendmail -v names </dev/null |
names |
受信者の電子メールアドレスを指定 |
このコマンドは、指定された受信者に NULL メッセージを送信し、画面にメッセージの動作を表示します。
メッセージを通常のユーザー名に送ることによって、メールを自分自身またはローカルシステム上の他の人に送信します。
(省略可能) ネットワークに接続している場合は、別のシステムの個人宛に次の 3 方向でメールを送信します。
メインシステムからクライアントシステムへ
クライアントシステムからメインシステムへ
クライアントシステムから別のクライアントシステムへ
(省略可能) メールゲートウェイがある場合、メールホストから別のドメインにメールを送信してメールリレープログラムおよびホストが適切に設定されていることを確認します。
(省略可能) 電話回線上に別のホストへの UUCP 接続を設定している場合は、そのホストの誰かにメールを送信し、その個人にメールを返信してもらうか、あるいはその個人がメッセージを受信した時に電話してもらいます。
UUCP 接続を介してメールを送信するように他の人に頼みます。
sendmail プログラムは、メッセージが配信されたかどうかは検出しません。これは、メッセージが配信のために UUCP に渡されるためです。
異なるシステムからメッセージを postmaster 宛てに送信し、ポストマスターのメールボックスに配信されることを確認します。
別名を確認し、メールが指定された受信者に配信されるかどうかを確認するには、次の手順に従います。
別名を表示し、最終アドレスが配信可能かどうかを特定します。
% /usr/lib/sendmail -v -bv recipient |
recipient |
受信者の別名を指定 |
以下に出力例を示します。
% /usr/lib/sendmail -v -bv sandy sandy... aliased to ssmith ssmith... aliased to sandy@phoenix sandy@phoenix... deliverable: mailer esmtp, host phoenix, user sandy@phoenix.example.com % |
ローカルおよびドメインの両方で別名を使用する場合は、ループやデータベースの不整合が生じないようにしてください。ユーザーをあるシステムから別のシステムに移動する時は、別名のループを作成しないように特に注意してください。
sendmail ルールセットの入力と戻りを確認するには、次の手順に従います。
アドレステストモードに変更します。
# /usr/lib/sendmail -bt |
メールアドレスをテストします。
最後のプロンプト (>) で次の数値とアドレスを入力します。
> 3,0 mail_address |
mail_address |
テストするメールアドレスを指定 |
セッションを終了します。
Control-D キーを押します。
以下に出力例を示します。
% /usr/lib/sendmail -bt ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> > 3,0 sandy@phoenix canonify input: sandy @ phoenix Canonify2 input: sandy < @ phoenix> Canonify2 returns: sandy < @ phoenix . example . com .> canonify returns: sandy < @ phoenix . example . com .> parse input: sandy < @ phoenix . example . com .> Parse0 input: sandy < @ phoenix . example . com .> Parse0 returns: sandy < @ phoenix . example . com .> ParseLocal input: sandy < @ phoenix . example . com .> ParseLocal returns: sandy < @ phoenix . example . com .> Parse1 input: sandy < @ phoenix . example . com .> MailerToTriple input: < mailhost . phoenix . example . com> sandy < @ phoenix . example . com .> MailerToTriple returns: $# relay $@ mailhost . phoenix . example . com $: sandy < @ phoenix . example . com .> Parse1 returns: $# relay $@ mailhost . phoenix . example . com $: sandy < @ phoenix . example . com .> parse returns: $# relay $@ mailhost . phoenix . example . com $: sandy < @ phoenix . example . com .> |
mconnect プログラムは、指定したホスト上のメールサーバーへの接続を開き、接続をテストできるようにします。プログラムは対話式で実行されるので、さまざまな診断コマンドを実行できます。詳細は、mconnect(1) のマニュアルページを参照してください。次の例では、ユーザー名 sandy へのメールが配信可能かどうかを調べます。
% mconnect phoenix onnecting to host phoenix (172.31.255.255), port 25 connection open 220 phoenix.example.com ESMTP Sendmail 8.12.0+Sun/8.12.0;Sun, 4 Sep 2001 3:52:56 -0700(PDT) expn sandy 250 2.1.5 <sandy@phoenix.example.com> quit |
mconnect を使用して SMTP ポートに接続できない場合は、次の条件を確認してください。
システム負荷が高すぎないか
sendmail デーモンが動作しているか
システムに適切な /etc/mail/sendmail.cf ファイルがあるか
ポート 25 (sendmail が使用するポート) がアクティブであるか
メールサービスは、syslogd プログラムを使って大部分のエラーメッセージを記録します。デフォルトでは、syslogd プログラムはこれらのメッセージを /etc/hosts ファイルで指定されている loghost というシステムに送信します。loghost が NIS ドメイン全体のすべてのログを保持するように定義できます。loghost を指定しなければ、syslogd からのエラーメッセージはレポートされません。
/etc/syslog.conf ファイルは、syslogd プログラムがメッセージをどこに転送するかを制御します。 /etc/syslog.conf ファイルを編集することにより、デフォルトの構成を変更できます。変更内容を有効にするには、syslog デーモンを再起動する必要があります。メールに関する情報を収集するために、ファイルに次の選択を追加できます。
mail.alert – ここで訂正する必要のある状態メッセージ
mail.crit – クリティカルメッセージ
mail.warning – 警告メッセージ
mail.notice – エラーではないが注意すべきメッセージ
mail.info – 情報メッセージ
mail.debug – デバッグメッセージ
/etc/syslog.conf ファイルの次のエントリは、すべての重大な情報を含むデバッグメッセージを /var/log/syslog に送信します。
mail.crit;mail.info;mail.debug /var/log/syslog |
システムログの各行には、タイムスタンプ、そのログ行を生成したシステム名、およびメッセージが入っています。syslog ファイルは、大量の情報を記録できます。
ログは、連続したレベルとして並べられます。最下位レベルでは、異常なイベントだけが記録されます。最上位レベルでは、もっとも必須なイベントと注目する必要のないイベントが記録されます。通常、10 以下のログレベルが「有用」とみなされます。10 を超えるログレベルは通常、デバッグに使用されます。loghost および syslogd プログラムの詳細については、『Solaris のシステム管理 (上級編)』の「システムのメッセージ記録のカスタマイズ」を参照してください。
その他の診断情報については、次の情報源を確認してください。
メッセージのヘッダーの Received 行を調べます。これらの行は、メッセージがリレーされる時にとった経路を追跡できます。時間帯の違いを考慮するのを忘れないでください。
ワークステーショングループの配信上の問題を記録するシステムログを確認します。sendmail プログラムは常に、その処理内容をシステムログに記録します。crontab ファイルを修正してシェルスクリプトを夜間に実行できます。これは、ログから SYSERR メッセージのログを検索し、見つかったメッセージをすべてポストマスターに送信します。
mailstats プログラムを使ってメールタイプをテストし、着信メッセージと発信メッセージの数を判定します。