Solaris のシステム管理 (ネットワークサービス)

第 13 章 メールサービス (手順)

この章ではメールサービスを設定し、管理する方法について説明します。メールサービスの管理に詳しくない場合は、メールサービスのコンポーネントを紹介している第 12 章メールサービス (概要)を参照してください。この章では、一般的なメールサービス構成についても説明しています (図 12–1 を参照)。この章では、次の関連作業について説明します。

メールサービスのコンポーネントについての詳細は、第 14 章メールサービス (リファレンス)を参照してください。また、この章では、メールサービスのプログラムとファイル、メールルーティング処理、ネームサービスを使った sendmail の対話型操作、sendmail(1M) のマニュアルページで十分に説明されていない sendmail の version 8.13 での機能についても説明します。

メールサービス (作業マップ)

次の表から、具体的な一連の手順を扱っているほかの作業マップがわかります。

作業 

説明 

参照先 

メールサービスの設定 

メールサービスの各コンポーネントを設定する手順。メールサーバー、メールクライアント、メールホスト、およびメールゲートウェイの設定方法について説明します。sendmail で DNS を利用する方法について説明します。

「メールサービスの設定 (作業マップ)」

sendmail 構成ファイルの変更 

構成ファイルまたはサービスプロパティーを変更する手順。  

「sendmail 構成の変更 (作業マップ)」

メール別名ファイルの管理 

ネットワークで別名を提供するための手順。NIS+ テーブルのエントリの管理方法を説明します。また、NIS マップ、ローカルメール別名、キー付きマップファイル、およびポストマスター別名の設定方法も説明します。 

「メール別名ファイルの管理 (作業マップ)」

メールキューの管理 

スムーズなキュー処理を提供するための手順。メールキューを表示したり移動したりする方法、強制的なメールキュー処理方法、およびメールキューのサブセットの実行方法について説明します。古いメールキューの実行方法についても説明します。 

「キューディレクトリの管理 (作業マップ)」

.forward ファイルの管理

.forward ファイルを無効にしたり、.forward ファイルの検索パスを変更したりする手順。/etc/shells を作成し生成することにより、.forward ファイルの使用をユーザーに許可する方法も説明します。

.forward ファイルの管理 (作業マップ)」

メールサービスのトラブルシューティング手順とヒント 

メールサービスで発生した問題を解決するための手順とヒント。メール構成のテスト、メール別名の確認、sendmail ルールセットのテスト、ほかのシステムへの接続の確認、メッセージの記録などの方法について学びます。ほかのメール診断情報の情報源も紹介します。

「メールサービスの障害対処とヒント (作業マップ)」

エラーメッセージの解釈処理 

メール関連のエラーメッセージを解釈処理するための情報。 

「エラーメッセージの解釈」

メールシステムの計画

次に、メールシステムを計画するときに考慮すべき点を挙げます。

メールシステムの計画を立てたら、サイトにシステムを設定し、「メールサービスの設定 (作業マップ)」で説明する機能を実行します。ほかの作業については、「メールサービス (作業マップ)」を参照してください。

ローカルメール専用

図 13–1 に示すように、もっとも単純なメール構成は、1 台のメールホストに 2 台以上のワークステーションが接続されている場合です。メールは完全にローカルです。すべてのクライアントがローカルのディスクにメールを格納し、すべてのクライアントがメールサーバーとして機能します。メールアドレスは /etc/mail/aliases ファイルを使って構文解析されます。

図 13–1 ローカルメール構成

この図は、メールホストとメールクライアントとの関係を示しています。

この種類のメール構成を設定するには、次が必要です。

メールサービスの設定の詳細については、「メールサービスを設定する」を参照してください。メールサービスの設定に関する特定の手順については、「メールサービスの設定 (作業マップ)」を参照してください。

ローカルメールとリモート接続

小規模のネットワークにおけるもっとも一般的なメール構成を図 13–2 に示します。1 つのシステムが、メールサーバー、メールホスト、およびリモート接続を行うメールゲートウェイを兼ねています。メールは、メールゲートウェイ上の /etc/mail/aliases ファイルを使って配布されます。ネームサービスは必要ありません。

図 13–2 UUCP 接続を使ったローカルメール構成

この図は、メールクライアントとメールゲートウェイとの関係を示しています。

この構成では、メールクライアントがメールホスト上の /var/mail からメールファイルをマウントすると想定できます。この種類のメール構成を設定するには、次が必要です。

メールサービスの設定の詳細については、「メールサービスを設定する」を参照してください。メールサービスの設定に関する特定の手順については、「メールサービスの設定 (作業マップ)」を参照してください。

メールサービスの設定 (作業マップ)

次の表では、メールサービスの設定の手順を説明します。

作業 

説明 

参照先 

メールサーバーを設定する 

サーバーがメールを経路指定できるようにする手順 

「メールサーバーを設定する方法」

メールクライアントを設定する 

ユーザーがメールを受信できるようにする手順 

「メールクライアントを設定する方法」

メールホストを設定する 

電子メールアドレスを解釈処理できるメールホストを確立する手順 

「メールホストを設定する方法」

メールゲートウェイを設定する 

ドメイン外のネットワークとの通信を管理する手順 

「メールゲートウェイを設定する方法」

sendmail で DNS を使用する

DNS ホストルックアップ機能を有効にする手順 

sendmail で DNS を使用する方法」

メールサービスを設定する

サイトが企業外の電子メールサービスに接続していないか、あるいは企業が 1 つのドメイン内にある場合は、メールサービスを比較的容易に設定できます。

ローカルメール用に 2 つのタイプの構成が必要です。これらの構成については、図 13–1「ローカルメール専用」 を参照してください。ドメイン外のネットワークと通信するためには、さらに 2 つのタイプの構成が必要です。これらの構成については、図 12–1「ハードウェアコンポーネントの概要」 または 図 13–2「ローカルメールとリモート接続」 を参照してください。これらの構成は、同じシステムで組み合わせるか、または別のシステムで提供できます。たとえば、同じシステムにメールホストとメールサーバーの機能を持たせる場合は、この節の説明に従って、まずそのシステムをメールホストとして設定します。次に、この節の説明に従って、同じシステムをメールサーバーとして設定します。


注 –

次のメールサーバーとメールクライアントの設定の手順は、メールボックスが NFS でマウントされているときに適用されます。ただし、メールボックスは通常、ローカルにマウントされた /var/mail ディレクトリで維持されるので、次の手順は必要ありません。


Procedureメールサーバーを設定する方法

メールサーバーはローカルユーザーにメールサービスを提供するだけなので、設定には特別な手順は必要ありません。ユーザーはパスワードファイルまたは名前空間にエントリが必要です。さらに、メールが配信されるためには、ユーザーはローカルのホームディレクトリを用意して、~/.forward ファイルを確認する必要があります。このため、ホームディレクトリサーバーがしばしばメールサーバーとして設定されます。メールサーバーについては、「ハードウェアコンポーネント」第 14 章メールサービス (リファレンス)でさらに詳しく説明します。

メールサーバーは、メールクライアント宛てにメールを経路指定します。このタイプのメールサーバーは、クライアントのメールボックス用に十分なスプール空間が必要です。


注 –

mail.local プログラムは、メッセージがはじめて配信された時に /var/mail ディレクトリでメールボックスを自動的に作成します。メールクライアントの個々のメールボックスを作成する必要はありません。

クライアントが自分のメールボックスにアクセスするには、/var/mail ディレクトリをリモートマウントに利用できなければなりません。または、POP (Post Office Protocol)、IMAP (Internet Message Access Protocol) などのサービスをサーバーから利用できなければなりません。次では、/var/mail ディレクトリを使ってメールサーバーを設定する方法を示します。このマニュアルでは、POP または IMAP の構成方法については説明しません。


次の作業のために、/var/mail ディレクトリがエクスポートされていることを /etc/dfs/dfstab ファイルで確認します。

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. sendmail を停止します。


    # svcadm disable -t network/smtp:sendmail
    
  3. /var/mail ディレクトリをリモートアクセスに使用できるかどうかを確認します。


    # share
    

    /var/mail ディレクトリが表示された場合は、手順 5 に進みます。

    /var/mail ディレクトリが表示されない場合、あるいはリストが表示されない場合は、該当する手順に進みます。

    1. (省略可能) リストが表示されない場合は、NFS サービスを起動します。

      「ファイルシステム自動共有を設定する方法」の手順に従って、/var/mail ディレクトリを使用して NFS サービスを起動します。

    2. (省略可能) /var/mail ディレクトリがリストに含まれていない場合は、/var/mail ディレクトリを /etc/dfs/dfstab に追加します。

      /etc/dfs/dfstab ファイルに次のコマンド行を追加します。


      share -F nfs -o rw /var/mail
      
  4. ファイルシステムをマウントできるようにします。


    # shareall
    
  5. ネームサービスが起動されていることを確認します。

    1. (省略可能) NIS を実行している場合は、次のコマンドを使用します。


      # ypwhich
      

      詳細は、ypwhich(1) のマニュアルページを参照してください。

    2. (省略可能) NIS+ を実行している場合は、次のコマンドを使用します。


      # nisls
      

      詳細は、nisls(1) のマニュアルページを参照してください。

    3. (省略可能) DNS を実行している場合は、次のコマンドを使用します。


      # nslookup hostname
      
      hostname

      ホスト名を指定します。

      詳細は、nslookup(1M) のマニュアルページを参照してください。

    4. (省略可能) LDAP を実行している場合は、次のコマンドを使用します。


      # ldaplist
      

      詳細は、ldaplist(1) のマニュアルページを参照してください。

  6. sendmail を再起動します。


    # svcadm enable network/smtp:sendmail
    

Procedureメールクライアントを設定する方法

メールクライアントは、メールサーバー上にメールボックスを持っている、メールサービスのユーザーです。メールクライアントにはさらに、/etc/mail/aliases ファイルで、メールボックスの位置を示すメール別名が設定されています。


注 –

POP (Post Office Protocol) または IMAP (Internet Message Access Protocol) のようなサービスを使ってメールクライアントを設定することもできます。ただし、POP または IMAP の構成方法については、このマニュアルでは説明していません。


  1. メールクライアントシステム上でスーパーユーザーになるか、同等の役割になります。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. sendmail を停止します。


    # svcadm disable -t network/smtp:sendmail
    
  3. メールクライアントのシステムで /var/mail マウントポイントがあることを確認します。

    マウントポイントは、インストール過程で作成されています。ls を使用すると、ファイルシステムが存在するかどうかを確認できます。次の例はファイルシステムが作成されていない場合に受け取る応答を示しています。


    # ls -l /var/mail
    /var/mail not found
  4. /var/mail ディレクトリにファイルが何もないことを確認します。

    メールファイルがこのディレクトリにある場合は、それらのファイルを移動させ、サーバーから /var/mail ディレクトリがマウントされるときにその対象とならないようにします。

  5. メールサーバーから /var/mail ディレクトリをマウントします。

    メールディレクトリは自動的にマウントすることも、ブート時にマウントすることもできます。

    1. (省略可能) /var/mail を自動的にマウントします。

      次のようなエントリを /etc/auto_direct ファイルに追加します。


      /var/mail -rw,hard,actimeo=0 server:/var/mail
      server

      割り当てられているサーバー名を指定します。

    2. (省略可能) ブート時に /var/mail をマウントします。

      /etc/vfstab ファイルに次のエントリを追加します。このエントリにより、指定されたメールサーバー上の /var/mail ディレクトリがローカルの /var/mail ディレクトリをマウントできます。


      server:/var/mail - /var/mail nfs - no rw,hard,actimeo=0

      システムをリブートするたびに、クライアントのメールボックスが自動的にマウントされます。システムをリブートしない場合は、次のコマンドを入力すれば、クライアントのメールボックスをマウントできます。


      # mountall
      

      注意 – 注意 –

      メールボックスのロックとメールボックスへのアクセスが適切に動作するには、NFS サーバーからメールをマウントするときに actimeo=0 オプションを入れる必要があります。


  6. /etc/hosts を更新します。

    /etc/hosts ファイルを編集し、メールサーバーのエントリを追加します。ネームサービスを使用する場合、この手順は必要ありません。


    # cat /etc/hosts
    #
    # Internet host table
    #
    ..
    IP-address     mailhost  mailhost  mailhost.example.com
    
    IP-address

    割り当てられている IP アドレスを指定します。

    example.com

    割り当てられているドメインを指定します。

    mailhost

    割り当てられているメールホストを指定します。

    詳細は、hosts(4) のマニュアルページを参照してください。

  7. 別名ファイルの 1 つにクライアントのエントリを追加します。

    メール別名ファイルの管理に関する作業マップについては、「メール別名ファイルの管理 (作業マップ)」を参照してください。mail.local プログラムは、メッセージがはじめて配信された時に /var/mail ディレクトリでメールボックスを自動的に作成します。メールクライアントの個々のメールボックスを作成する必要はありません。

  8. sendmail を再起動します。


    # svcadm enable network/smtp:sendmail
    

Procedureメールホストを設定する方法

メールホストは、電子メールアドレスを解決し、ドメイン内でメールを再度ルーティングします。メールホストに適しているのは、ネットワークにリモート接続を提供するシステム、または親ドメインにネットワークを接続するシステムです。次に、メールホストを設定する手順を示します。

  1. メールホストシステム上でスーパーユーザーになるか、同等の役割になります。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. sendmail を停止します。


    # svcadm disable -t network/smtp:sendmail
    
  3. ホスト名の構成を確認します。

    次のように check-hostname スクリプトを実行し、sendmail が、このサーバーの完全指定のホスト名を識別できるかどうかを確認します。


    % /usr/sbin/check-hostname
    hostname phoenix OK: fully qualified as phoenix.example.com

    このスクリプトで完全指定ホスト名が識別できなかった場合は、完全指定ホスト名をホストの最初の別名として /etc/hosts 内に追加する必要があります。

  4. /etc/hosts ファイルを更新します。

    次から、適切な手順を選択します。

    1. (省略可能) NIS または NIS+ を使用している場合は、新しいメールホストとなるシステムの /etc/hosts ファイルを編集します。

      メールホストシステムの IP アドレスとシステム名のあとに mailhostmailhost.domain を追加します。


      IP-address mailhost mailhost mailhost.domain loghost
      IP-address

      割り当てられている IP アドレスを指定します。

      mailhost

      メールホストシステムのシステム名を指定します。

      domain

      拡張ドメイン名を指定します。

      これで、このシステムはメールホストとして指定されます。domain は、次のコマンドの出力にサブドメイン名として指定されている文字列と同じにする必要があります。


      % /usr/lib/sendmail -bt -d0 </dev/null
      Version 8.13.1+Sun
       Compiled with: LDAPMAP MAP_REGEX LOG MATCHGECOS MIME7TO8 MIME8TO7
                      NAMED_BIND NDBM NETINET NETINET6 NETUNIX NEWDB NIS
                      NISPLUS QUEUE SCANF SMTP USERDB XDEBUG
      
      ============ SYSTEM IDENTITY (after readcf) ============
            (short domain name) $w = phoenix
        (canonical domain name) $j = phoenix.example.com
               (subdomain name) $m = example.com
                    (node name) $k = phoenix
      ========================================================

      以上の変更を行なったあとの hosts ファイルの例を次に示します。


      # cat /etc/hosts
      #
      # Internet host table
      #
      172.31.255.255   localhost        
      192.168.255.255  phoenix mailhost mailhost.example.com loghost
    2. (省略可能) NIS または NIS+ を使用しない場合は、ネットワーク内の各システムにある /etc/hosts ファイルを編集します。

      次のようなエントリを作成します。


      IP-address mailhost mailhost mailhost.domain loghost
  5. sendmail を再起動します。


    # svcadm enable network/smtp:sendmail
    
  6. メール構成をテストします。

    手順については、「メール構成をテストする方法」を参照してください。


    注 –

    メールホストの詳細は、「ハードウェアコンポーネント」第 14 章メールサービス (リファレンス)を参照してください。


Procedureメールゲートウェイを設定する方法

メールゲートウェイは、ドメイン外のネットワークとの通信を管理します。送信側メールゲートウェイ上のメールプログラムは、受信側システムのメールプログラムと同じでなければなりません。

メールゲートウェイに適しているのは、Ethernet および電話回線に接続されているシステムです。インターネットへのルーターとして設定されているシステムも適しています。メールホストをメールゲートウェイとして設定するか、あるいは別のシステムをメールゲートウェイとして設定できます。複数のメールゲートウェイを自分のドメイン用として設定できます。UUCP (UNIX-to-UNIX Copy Program) 接続がある場合は、メールゲートウェイとして UUCP 接続を使ってシステムを構成します。

  1. メールゲートウェイ上でスーパーユーザーになるか、同等の役割になります。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. sendmail を停止します。


    # svcadm disable -t network/smtp:sendmail
    
  3. ホスト名の構成を確認します。

    次のように check-hostname スクリプトを実行し、sendmail が、このサーバーの完全指定のホスト名を識別できるかどうかを確認します。


    # /usr/sbin/check-hostname
    hostname phoenix OK: fully qualified as phoenix.example.com

    このスクリプトで完全指定ホスト名が識別できなかった場合は、完全指定ホスト名をホストの最初の別名として /etc/hosts 内に追加する必要があります。この手順の詳細は、手順 4「メールホストを設定する方法」 を参照してください。

  4. ネームサービスが起動されていることを確認します。

    1. (省略可能) NIS を実行している場合は、次のコマンドを使用します。


      # ypwhich
      

      詳細は、ypwhich(1) のマニュアルページを参照してください。

    2. (省略可能) NIS+ を実行している場合は、次のコマンドを使用します。


      # nisls
      

      詳細は、nisls(1) のマニュアルページを参照してください。

    3. (省略可能) DNS を実行している場合は、次のコマンドを使用します。


      # nslookup hostname
      
      hostname

      ホスト名を指定します。

      詳細は、nslookup(1M) のマニュアルページを参照してください。

    4. (省略可能) LDAP を実行している場合は、次のコマンドを使用します。


      # ldaplist
      

      詳細は、ldaplist(1) のマニュアルページを参照してください。

  5. sendmail を再起動します。


    # svcadm enable network/smtp:sendmail
    
  6. メール構成をテストします。

    手順については、「メール構成をテストする方法」を参照してください。


    注 –

    メールゲートウェイの詳細は、「ハードウェアコンポーネント」第 14 章メールサービス (リファレンス)を参照してください。


Proceduresendmail で DNS を使用する方法

DNS ネームサービスは、個別の別名をサポートしません。このネームサービスは、MX (メール交換局) レコードおよび CNAME レコードを使用するホストまたはドメインの別名をサポートします。ホスト名とドメイン名は両方またはいずれか一方を DNS データベースで指定できます。sendmail と DNS の詳細は、sendmail とネームサービスの相互作用」第 14 章メールサービス (リファレンス)、または『Solaris のシステム管理 (ネーミングとディレクトリサービス : DNS、NIS、LDAP 編)』を参照してください。

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. DNS ホストルックアップ機能を有効にします (NIS+ のみ)。

    /etc/nsswitch.conf ファイルを編集し、dns フラグを含む hosts の定義から # を削除します。 DNS ホスト別名を使用するには、次の例に示すように、ホストエントリに dns フラグが含まれている必要があります。


    # grep hosts /etc/nsswitch.conf
    #hosts:     nisplus [NOTFOUND=return] files
    hosts:      dns nisplus [NOTFOUND=return] files
  3. mailhostmailhost.domain エントリを確認します。

    nslookup を使用して、mailhostmailhost. domain のエントリが DNS データベースに存在することを確認します。詳細は、nslookup(1M) のマニュアルページを参照してください。

sendmail 構成の変更 (作業マップ)

作業 

説明 

参照先 

sendmail 構成ファイルの構築

sendmail.cf ファイルを変更する手順。例としてドメインマスカレードを有効にする方法を取り上げます。

「新しい sendmail.cf ファイルを構築する方法」

仮想ホストの設定 

メールが複数のドメインに受け入れられるように sendmail を設定する手順。 

「仮想ホストを設定する」

sendmail 構成ファイルの自動再構築の設定 

アップグレード後に sendmail.cf および submit.mc 構成ファイルが自動的に再構築されるように sendmail サービスを変更する手順。

「構成ファイルを自動的に再構築する方法」

sendmail のオープンモードでの実行

オープンモードが有効になるように sendmail サービスのプロパティーを変更する手順。 

「オープンモードで sendmail を使用する方法」

Transport Layer Security (TLS) を使用する SMTP の設定 

SMTP を有効にして TLS との接続をセキュリティー保護する手順。 

「TLS を使用するよう SMTP を構成する」

代替構成を使用したメール配信の管理 

マスターデーモンが無効な場合に発生する可能性があるメール配信上の問題を防ぐための手順。 

sendmail.cf の代替構成を使ってメール配信を管理する方法」

sendmail 構成を変更する

「新しい sendmail.cf ファイルを構築する方法」で、構成ファイルの構築方法について説明します。sendmail.cf ファイルの以前のバージョンも引き続き使用できますが、新しい形式を使用することをお薦めします。

詳細は、次を参照してください。

Procedure新しい sendmail.cf ファイルを構築する方法

次に、新しい構成ファイルを構築する手順を示します。


注 –

/usr/lib/mail/cf/main-v7sun.mc は、/etc/mail/cf/cf/sendmail.mc になりました。


  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. sendmail を停止します。


    # svcadm disable -t network/smtp:sendmail
    
  3. 変更しようとする構成ファイルのコピーを作成します。


    # cd /etc/mail/cf/cf
    # cp sendmail.mc myhost.mc
    
    myhost

    .mc ファイルの新しい名前を指定します。

  4. 必要に応じて、新しい構成ファイル (たとえば、myhost.mc) を編集します。

    たとえば、ドメインマスカレードを有効にするには、次のコマンド行を追加します。


    # cat myhost.mc
    ..
    MASQUERADE_AS(`host.domain')
    host.domain

    目的のホスト名とドメイン名を指定します。

    この例では、MASQUERADE_AS は、送信されたメールに、$j ではなく host.domain から送信されたものとしてラベルを付けます。

  5. m4 を使って構成ファイルを構築します。


    # /usr/ccs/bin/make myhost.cf
    
  6. -C オプションを使用して、新しい構成ファイルをテストし、新しいファイルを指定します。


    # /usr/lib/sendmail -C myhost.cf -v testaddr </dev/null
    

    このコマンドはメッセージを表示するとともに、メッセージを testaddr に送信します。システム上で sendmail サービスを再起動せずに、送信メールだけがテストできます。まだメールを処理していないシステムでは、「メール構成をテストする方法」で説明する完全なテスト手順を使用してください。

  7. オリジナルのコピーを作成したあと、新しい構成ファイルをインストールします。


    # cp /etc/mail/sendmail.cf /etc/mail/sendmail.cf.save
    # cp myhost.cf /etc/mail/sendmail.cf
    
  8. sendmail サービスを再起動します。


    # svcadm enable network/smtp:sendmail
    

仮想ホストを設定する

ホストに複数の IP アドレスを割り当てる必要がある場合は、http://www.sendmail.org/tips/virtualHosting の Web サイトを参照してください。このサイトでは、sendmail を使って仮想ホストを設定する方法を詳しく説明しています。ただし、「Sendmail Configuration」の節では、次に示す手順 3b は実行しないでください。


# cd sendmail-VERSION/cf/cf
# ./Build mailserver.cf
# cp mailserver.cf /etc/mail/sendmail.cf

代わりに、Solaris オペレーティングシステムでは、次の手順を実行してください。


# cd /etc/mail/cf/cf
# /usr/ccs/bin/make mailserver.cf
# cp mailserver.cf /etc/mail/sendmail.cf
mailserver

.cf ファイルの名前を指定します。

「sendmail 構成を変更する」では、構築手順の一部として、これと同じ 3 つの手順を説明しています。

/etc/mail/sendmail.cf ファイルを生成したら、次の手順に進み、仮想ユーザーテーブルを作成できます。

Procedure構成ファイルを自動的に再構築する方法

sendmail.cf または submit.cf のコピーを独自に構築済みであれば、アップグレード時に構成ファイルが置き換えられることはありません。次の手順は、sendmail.cf ファイルが自動的に再構築されるように sendmail サービスのプロパティーを構成する方法を示します。submit.cf 構成ファイルを自動的に再構築する方法については、例 13–1 を参照してください。両方のファイルの構築が必要な場合には、これらの手順を組み合わることもできます。

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. sendmail プロパティーを設定します。


    # svccfg -s sendmail
    svc:/network/smtp:sendmail> setprop config/path_to_sendmail_mc=/etc/mail/cf/cf/myhost.mc 
    svc:/network/smtp:sendmail> quit
  3. sendmail サービスの再表示と再起動を行います。

    最初のコマンドは、変更を実行中のスナップショット内に転送します。2 番目のコマンドは、新しいオプションを使って sendmail サービスを再起動します。


    # svcadm refresh svc:/network/smtp:sendmail 
    # svcadm restart svc:/network/smtp:sendmail
    

例 13–1 submit.cf の自動再構築を設定する

この手順では、submit.mc 構成ファイルが自動的に再構築されるように sendmail サービスを構成します。


# svccfg -s sendmail-client:default
svc:/network/smtp:sendmail> setprop config/path_to_submit_mc=/etc/mail/cf/cf/submit-myhost.mc 
svc:/network/smtp:sendmail> exit
# svcadm refresh svc:/network/sendmail-client 
# svcadm restart svc:/network/sendmail-client

Procedureオープンモードで sendmail を使用する方法

Solaris 10 リリースでは、sendmail サービスがデフォルトでローカル専用モードで実行するように変更されました。ローカル専用モードとは、ローカルホストからのメールだけが受け入れられることを意味します。その他のシステムからのメッセージはすべて拒否されます。Solaris の以前のリリースは、すべてのリモートシステムからのメールを受け入れるように構成されていました。これはオープンモードとして知られています。オープンモードを使用するには、次の手順に従います。


注意 – 注意 –

ローカル専用モードでの sendmail の実行は、オープンモードでの実行よりもはるかに安全です。潜在的なセキュリティーの問題を確実に認識した上で、この手順を実行してください。


  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. sendmail プロパティーを設定します。


    # svccfg -s sendmail
    svc:/network/smtp:sendmail> setprop config/local_only = false 
    svc:/network/smtp:sendmail> quit
  3. sendmail サービスの再表示と再起動を行います。


    # svcadm refresh svc:/network/smtp:sendmail 
    # svcadm restart svc:/network/smtp:sendmail
    

ProcedureTLS を使用するよう SMTP を構成する

Solaris 10 1/06 以降のリリースでは、SMTP は sendmail の version 8.13 で Transport Layer Security (TLS) を使用できます。SMTP サーバーおよびクライアントに対するこのサービスは、インターネット上での機密性の高い認証された通信だけでなく、盗聴や攻撃からの保護も実現します。このサービスは、デフォルトでは有効になっていないことに注意してください。

次の手順では、サンプルデータを使用して、sendmail が TLS を使用できるようにする証明書を設定する方法を示します。詳細については、sendmail の version 8.13 で TLS を使用して SMTP を実行するためのサポート」を参照してください。

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. sendmail を停止します。


    # svcadm disable -t network/smtp:sendmail
    
  3. sendmail が TLS を使用できるようにする証明書を設定します。

    1. 次の手順を行います。


      # cd /etc/mail
      # mkdir -p certs/CA
      # cd certs/CA
      # mkdir certs crl newcerts private
      # echo "01" > serial
      # cp /dev/null index.txt
      # cp /etc/sfw/openssl/openssl.cnf .
      
    2. 任意のテキストエディタを使用して openssl.cnf ファイルの dir の値を /etc/sfw/openssl から /etc/mail/certs/CA に変更します。

    3. openssl コマンド行ツールを使用して TLS を実装します。

      次のコマンド行は対話型テキストを生成することに注意してください。


      # openssl req -new -x509 -keyout private/cakey.pem -out cacert.pem -days 365 \
      -config openssl.cnf
      Generating a 1024 bit RSA private key
      .....................................++++++
      .....................................++++++
      writing new private key to 'private/cakey.pem'
      Enter PEM pass phrase:
      Verifying - Enter PEM pass phrase:
      -----
      You are about to be asked to enter information that will be incorporated
      into your certificate request.
      What you are about to enter is what is called a Distinguished Name or a DN.
      There are quite a few fields but you can leave some blank
      For some fields there will be a default value,
      If you enter '.', the field will be left blank.
      -----
      Country Name (2 letter code) []:US
      State or Province Name (full name) []:California
      Locality Name (eg, city) []:Menlo Park
      Organization Name (eg, company) [Unconfigured OpenSSL Installation]:Sun Microsystems
      Organizational Unit Name (eg, section) []:Solaris
      Common Name (eg, YOUR name) []:somehost.somedomain.example.com
      Email Address []:someuser@example.com
      
      req

      このコマンドは証明書要求を作成し、処理します。

      -new

      この req オプションを選択すると、新しい証明書要求が作成されます。

      -x509

      この req オプションを選択すると、自己署名付き証明書が作成されます。

      -keyout private/cakey.pem

      この req オプションを選択すると、新しく作成された秘密鍵のファイル名として private/cakey.pem を割り当てることができます。

      -out cacert.pem

      この req オプションを選択すると、出力ファイルとして cacert.pem を割り当てることができます。

      -days 365

      この req オプションを選択すると、証明書を 365 日間証明することができます。デフォルト値は 30 です。

      -config openssl.cnf

      この req オプションを選択すると、構成ファイルとして openssl.cnf を指定することができます。

      このコマンドは、次の内容を指定する必要があります。

      • Country Name (US など)。

      • State or Province Name (California など)。

      • Locality Name (Menlo Park など)。

      • Organization Name (Sun Microsystems など)。

      • Organizational Unit Name (Solaris など)。

      • Common Name (マシンの完全指定のホスト名)。詳細は、check-hostname(1M) のマニュアルページを参照してください。

      • Email Address (someuser@example.com など)。

  4. (省略可能) セキュリティー保護された新しい接続が必要である場合、新しい証明書を作成し、認証局を使用して新しい証明書に署名します。

    1. 新しい証明書を作成します。


      # cd /etc/mail/certs/CA
      # openssl req -nodes -new -x509 -keyout newreq.pem -out newreq.pem -days 365 \
      -config openssl.cnf
      Generating a 1024 bit RSA private key
      ..............++++++
      ..............++++++
      writing new private key to 'newreq.pem'
      -----
      You are about to be asked to enter information that will be incorporated
      into your certificate request.
      What you are about to enter is what is called a Distinguished Name or a DN.
      There are quite a few fields but you can leave some blank
      For some fields there will be a default value,
      If you enter '.', the field will be left blank.
      -----
      Country Name (2 letter code) []:US
      State or Province Name (full name) []:California
      Locality Name (eg, city) []:Menlo Park
      Organization Name (eg, company) [Unconfigured OpenSSL Installation]:Sun Microsystems
      Organizational Unit Name (eg, section) []:Solaris
      Common Name (eg, YOUR name) []:somehost.somedomain.example.com
      Email Address []:someuser@example.com
      

      このコマンドでは、手順 3c で指定した情報と同じ情報を指定する必要があります。

      この例では、証明書と秘密鍵はファイル newreq.pem 内にあることに注意してください。

    2. 認証局を使用して新しい証明書に署名します。


      # cd /etc/mail/certs/CA
      # openssl x509 -x509toreq -in newreq.pem -signkey newreq.pem -out tmp.pem
      Getting request Private Key
      Generating certificate request
      # openssl ca -config openssl.cnf -policy policy_anything -out newcert.pem -infiles tmp.pem
      Using configuration from openssl.cnf
      Enter pass phrase for /etc/mail/certs/CA/private/cakey.pem:
      Check that the request matches the signature
      Signature ok
      Certificate Details:
              Serial Number: 1 (0x1)
              Validity
                  Not Before: Jun 23 18:44:38 2005 GMT
                  Not After : Jun 23 18:44:38 2006 GMT
              Subject:
                  countryName               = US
                  stateOrProvinceName       = California
                  localityName              = Menlo Park
                  organizationName          = Sun Microsystems
                  organizationalUnitName    = Solaris
                  commonName                = somehost.somedomain.example.com
                  emailAddress              = someuser@example.com
              X509v3 extensions:
                  X509v3 Basic Constraints: 
                      CA:FALSE
                  Netscape Comment: 
                      OpenSSL Generated Certificate
                  X509v3 Subject Key Identifier: 
                      93:D4:1F:C3:36:50:C5:97:D7:5E:01:E4:E3:4B:5D:0B:1F:96:9C:E2
                  X509v3 Authority Key Identifier: 
                      keyid:99:47:F7:17:CF:52:2A:74:A2:C0:13:38:20:6B:F1:B3:89:84:CC:68
                      DirName:/C=US/ST=California/L=Menlo Park/O=Sun Microsystems/OU=Solaris/\
                      CN=someuser@example.com/emailAddress=someuser@example.com
                      serial:00
      
      Certificate is to be certified until Jun 23 18:44:38 2006 GMT (365 days)
      Sign the certificate? [y/n]:y
      
      
      1 out of 1 certificate requests certified, commit? [y/n]y
      Write out database with 1 new entries
      Data Base Updated
      # rm -f tmp.pem
      

      この例では、ファイル newreq.pem には未署名の証明書と秘密鍵が含まれています。ファイル newcert.pem には署名済みの証明書が含まれています。

      x509 ユーティリティー

      証明書の情報を表示し、証明書をさまざまな形式に変換し、証明書要求に署名します。

      ca アプリケーション

      さまざまな形式の証明書要求の署名と、CRL (Certificate Revocation List) の生成に使用されます。

  5. .mc ファイルに次の行を追加することにより、sendmail が証明書を使用できるようにします。


    define(`confCACERT_PATH', `/etc/mail/certs')dnl
    define(`confCACERT', `/etc/mail/certs/CAcert.pem')dnl
    define(`confSERVER_CERT', `/etc/mail/certs/MYcert.pem')dnl
    define(`confSERVER_KEY', `/etc/mail/certs/MYkey.pem')dnl
    define(`confCLIENT_CERT', `/etc/mail/certs/MYcert.pem')dnl
    define(`confCLIENT_KEY', `/etc/mail/certs/MYkey.pem')dnl
    

    詳細は、「TLS を使用して SMTP を実行するための構成ファイルのオプション」を参照してください。

  6. /etc/mail ディレクトリで sendmail.cf ファイルを再構築し、インストールします。

    手順の詳細は、「sendmail 構成を変更する」を参照してください。

  7. openssl を使用して作成したファイルから、.mc ファイルで定義したファイルへの、シンボリックリンクを作成します。


    # cd /etc/mail/certs
    # ln -s CA/cacert.pem CAcert.pem
    # ln -s CA/newcert.pem MYcert.pem
    # ln -s CA/newreq.pem MYkey.pem
    
  8. セキュリティーを高めるには、MYkey.pem に関して、グループなどに対して読み取り権を許可しないでください。


    # chmod go-r MYkey.pem
    
  9. シンボリックリンクを使用して、confCACERT_PATH に割り当てられているディレクトリで CA 証明書をインストールします。


    # C=CAcert.pem
    # ln -s $C `openssl x509 -noout -hash < $C`.0
    
  10. そのほかのホストとのメールのセキュリティーを保護するには、ホストの証明書をインストールします。

    1. ほかのホストの confCACERT オプションにより定義されたファイルを、/etc/mail/certs/host.domain.cert.pem にコピーします。

      host.domain を、ほかのホストの完全指定のホスト名に置き換えます。

    2. シンボリックリンクを使用して、confCACERT_PATH に割り当てられているディレクトリで CA 証明書をインストールします。


      # C=host.domain.cert.pem
      # ln -s $C `openssl x509 -noout -hash < $C`.0
      

      host.domain を、ほかのホストの完全指定のホスト名に置き換えます。

  11. sendmail を再起動します。


    # svcadm enable network/smtp:sendmail
    

例 13–2 Received: メールヘッダー

次に、TLS を使用したセキュリティー保護されたメールの Received: ヘッダーの例を示します。


Received: from his.example.com ([IPv6:2001:db8:3c4d:15::1a2f:1a2b])
        by her.example.com (8.13.4+Sun/8.13.4) with ESMTP id j2TNUB8i242496
        (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK)
        for <janepc@her.example.com>; Tue, 29 Mar 2005 15:30:11 -0800 (PST)
Received: from her.example.com (her.city.example.com [192.168.0.0])
        by his.example.com (8.13.4+Sun/8.13.4) with ESMTP id j2TNU7cl571102
        version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK)
        for <janepc@her.example.com>; Tue, 29 Mar 2005 15:30:07 -0800 (PST)

verify の値が OK である、つまり認証が成功したことに注意してください。詳細は、「TLS を使用して SMTP を実行するためのマクロ」を参照してください。


参照

次の OpenSSL のマニュアルページも参照してください。

Proceduresendmail.cf の代替構成を使ってメール配信を管理する方法

送受信されるメールの転送を容易にするため、sendmail の新しいデフォルトの構成は、デーモンとクライアントキューランナーを使用します。クライアントキューランナーは、ローカルの SMTP ポートのデーモンにメールを送信できなければなりません。デーモンが SMTP ポート上で待機していない場合、メールはキューに留まります。この問題を避けるには、次の作業を行います。デーモンとクライアントキューランナーについての詳細、およびこの代替構成を使用する必要性を理解するには、sendmail の version 8.12 からの submit.cf 構成ファイル」を参照してください。

この手順を実行すると、デーモンは、ローカルホストからの接続を受け付けるためだけに動作するようになります。

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. sendmail クライアントサービスを停止します。


    # svcadm disable -t sendmail-client
    
  3. 変更しようとする構成ファイルのコピーを作成します。


    # cd /etc/mail/cf/cf
    # cp submit.mc submit-myhost.mc
    
    myhost

    .mc ファイルの新しい名前を指定します。

  4. 新しい構成ファイル (たとえば、submit- myhost.mc) を編集します。

    待機中のホスト IP アドレスを msp 定義に変更します。


    # grep msp submit-myhost.mc
    FEATURE(`msp', `[#.#.#.#]')dnl
  5. m4 を使って構成ファイルを構築します。


    # /usr/ccs/bin/make submit-myhost.cf
    
  6. オリジナルのコピーを作成したあと、新しい構成ファイルをインストールします。


    # cp /etc/mail/submit.cf /etc/mail/submit.cf.save
    # cp submit-myhost.cf /etc/mail/submit.cf
    
  7. sendmail クライアントサービスを再起動します。


    # svcadm enable sendmail-client
    

メール別名ファイルの管理 (作業マップ)

次の表では、メール別名ファイルの管理の手順を説明します。このトピックの詳細は、「メール別名ファイル」第 14 章メールサービス (リファレンス)を参照してください。

作業 

説明 

参照先 

NIS+ mail_aliases テーブルでの別名のエントリの管理

ネームサービスが NIS+ である場合に、mail_aliases テーブルの内容を管理する手順。

NIS+ mail_aliases テーブルを作成します。

「NIS+ mail_aliases テーブルを作成する方法」

 

NIS+ mail_aliases テーブルの内容を表示します。

この手順には、個々のエントリを表示する方法と部分一致エントリを表示する方法の例が含まれています。 

「NIS+ mail_aliases テーブルの内容を表示する方法」

 

コマンド行から NIS+ mail_aliases テーブルへ別名を追加します。

「コマンド行から NIS+ mail_aliases テーブルへ別名を追加する方法」

 

NIS+ mail_aliases テーブルを編集してエントリを追加します。

「NIS+ mail_aliases テーブルを編集してエントリを追加する方法」

 

NIS+ mail_aliases テーブルでエントリを編集します。

この手順には、エントリを削除する方法の例が含まれています。 

「NIS+ mail_aliases テーブルのエントリを編集する方法」

NIS mail.aliases マップの設定

ネームサービスが NIS の場合に、mail.aliases マップを使って別名を設定する手順。

「NIS mail.aliases マップを設定する方法」

ローカルのメール別名ファイルの設定 

NIS や NIS+ などのネームサービスを使用していない場合に、/etc/mail/aliases ファイルを使って別名を設定する手順。

「ローカルメール別名ファイルを設定する方法」

キー付きマップファイルの作成 

キー付きマップファイルを使って別名を設定する手順。 

「キー付きマップファイルの作成方法」

postmaster 別名の設定

postmaster 別名を管理する手順。この別名は必須です。

postmaster 別名の管理」

メール別名ファイルを管理する

メール別名はドメイン独自にする必要があります。この節では、メール別名ファイルを管理する手順を説明します。また、Solaris 管理コンソールの「メーリングリスト」機能を使って別名データベース上でこれらの作業を実行することもできます。

その他に、makemap を使ってローカルメールホストにデータベースファイルを作成することもできます。makemap(1M) のマニュアルページを参照してください。ローカルのデータベースファイルを使用しても、NIS や NIS+ のようなネームサービスを使用するほどの利点は得られません。しかし、ネットワークのルックアップは必要ないため、ローカルのデータベースファイルからの方がより早くデータを取り出すことができます。詳細は、sendmail とネームサービスの相互作用」「メール別名ファイル」および 第 14 章メールサービス (リファレンス)を参照してください。

次の操作を行うことができます。

ProcedureNIS+ mail_aliases テーブルを作成する方法

aliasadm コマンドを使用して、NIS+ テーブルのエントリを管理することができます。テーブルを作成するには、次の手順に従います。詳細は、aliasadm(1M) のマニュアルページを参照してください。

  1. テーブルを所有する NIS+ グループのメンバーになるか、メールサーバーのスーパーユーザーになるか、同等の役割になります。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. NIS+ テーブルを作成します。


    # aliasadm -I
    
  3. テーブルにエントリを追加します。

ProcedureNIS+ mail_aliases テーブルの内容を表示する方法

テーブルの全内容を表示するには、次の手順に従います。

  1. テーブルを所有する NIS+ グループのメンバーになるか、メールサーバーのスーパーユーザーになるか、同等の役割になります。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. 別名のアルファベット順に全エントリを表示します。


    # aliasadm -1
    

    詳細は、aliasadm(1M) のマニュアルページを参照してください。


例 13–3 NIS+ mail_aliases テーブルの個々のエントリを表示する

また、aliasadm コマンドを使用して、個々のエントリを表示することもできます。この手順の最初の手順が完了したら、次のように入力します。


# aliasadm -m ignatz
ignatz: ignatz@saturn # Alias for Iggy Ignatz

このコマンドは、完全に一致する別名のみ表示し、部分的に一致するエントリは表示しません。aliasadm -m オプションでは、メタキャラクタ (*? など) は使用できません。



例 13–4 NIS+ mail_aliases テーブル内の部分一致エントリを表示する

また、aliasadm コマンドを使用して、部分一致エントリを表示することもできます。この手順の最初の手順が完了したら、次のように入力します。


# aliasadm -l | grep partial-string

partial-string は、検索に使用する文字列で置き換えます。


Procedureコマンド行から NIS+ mail_aliases テーブルへ別名を追加する方法

2 つまたは 3 つの別名をテーブルに追加するには、次の手順に従います。多数の別名を追加する場合は、「NIS+ mail_aliases テーブルを編集してエントリを追加する方法」を参照してください。

  1. メールクライアント、メールボックスの場所、およびメールサーバーシステムの名前の各リストをコンパイルします。

  2. テーブルを所有する NIS+ グループのメンバーになるか、メールサーバーのスーパーユーザーになるか、同等の役割になります。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  3. (省略可能) 必要な場合は、NIS+ テーブルを作成します。

    まったく新しい NIS+ mail_aliases テーブルを作成する場合は、最初に NIS+ テーブルを初期設定しなければなりません。テーブルの作成方法については、「NIS+ mail_aliases テーブルを作成する方法」を参照してください。

  4. テーブルに別名を追加します。

    次に、一般的なエントリの例を示します。


    # aliasadm -a iggy iggy.ignatz@saturn "Iggy Ignatz"
    

    上記の例の入力内容を次に説明します。

    -a

    別名を追加するためのオプション

    iggy

    簡略別名

    iggy.ignatz@saturn

    拡張別名

    "Iggy Ignatz"

    引用符で囲んだ別名

  5. 作成したエントリを表示し、エントリに間違いがないことを確認します。


    # aliasadm -m alias
    
    alias

    作成したエントリ

    詳細は、aliasadm(1M) のマニュアルページを参照してください。

ProcedureNIS+ mail_aliases テーブルを編集してエントリを追加する方法

aliasadm コマンドを使用して、NIS+ テーブルのエントリを管理することができます。多数の別名をテーブルに追加するには、次の手順に従います。

  1. メールクライアント、メールボックスの場所、およびメールサーバーシステムの名前の各リストをコンパイルします。

  2. テーブルを所有する NIS+ グループのメンバーになるか、メールサーバーのスーパーユーザーになるか、同等の役割になります。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  3. 別名テーブルを表示して編集します。


    # aliasadm -e
    

    このコマンドは、テーブルを表示し、テーブルの編集を可能にします。使用するエディタは、$EDITOR 環境変数で設定されています。この変数が設定されていない場合、vi がデフォルトのエディタになります。

  4. 次の形式で、1 行に 1 別名ずつ入力します。


    alias: expanded-alias # ["option" # "comments"]
    alias

    この列には、簡略別名を入力します。

    expanded-alias

    この列には、拡張別名を入力します。

    option

    この列は、将来の拡張のために予約されています。

    comments

    この列は、別名など、個々の別名に関するコメントに使用します。

    オプション列をブランクにする場合は、空の引用符 2 つ ("") を入力し、そのあとにコメントを追加します。

    NIS+ mail_aliases テーブルでは、エントリの順序は重要ではありません。aliasadm -l コマンドがリストをソートし、エントリをアルファベット順に表示します。

    詳細は、「メール別名ファイル」および aliasadm(1M) のマニュアルページを参照してください。

ProcedureNIS+ mail_aliases テーブルのエントリを編集する方法

テーブル内のエントリを編集するには、次の手順に従います。

  1. テーブルを所有する NIS+ グループのメンバーになるか、メールサーバーのスーパーユーザーになるか、同等の役割になります。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. 別名エントリを表示します。


    # aliasadm -m alias
    

    alias は、割り当てられている別名で置き換えます。

  3. 必要に応じて別名エントリを編集します。


    # aliasadm -c alias expanded-alias [options comments]
    alias

    必要な場合は、別名を編集します。

    expanded-alias

    必要な場合は、拡張別名を編集します。

    options

    必要な場合は、オプションを編集します。

    comments

    必要な場合は、このエントリのコメントを編集します。

    詳細は、aliasadm(1M) のマニュアルページおよび 「メール別名ファイル」を参照してください。

  4. 編集したエントリを表示し、エントリに間違いがないことを確認します。


    # aliasadm -m alias
    

    詳細は、aliasadm(1M) のマニュアルページを参照してください。


例 13–5 NIS+ mail_aliases テーブルからエントリを削除する

テーブルからエントリを削除するには、この手順の最初の手順の完了後、次の構文を入力します。


# aliasadm -d alias

alias は、削除するエントリの別名で置き換えます。


ProcedureNIS mail.aliases マップを設定する方法

次の手順によって、NIS の mail.aliases マップを使って別名の設定を容易に行うことができます。

  1. メールクライアント、メールボックスの場所、およびメールサーバーシステムの名前の各リストをコンパイルします。

  2. NIS マスターサーバーのスーパーユーザーになるか、同等の役割になります。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  3. /etc/mail/aliases ファイルを編集し、次のようなエントリを作成します。

    1. メールクライアントごとにエントリを追加します。


      # cat /etc/mail/aliases
      ..
      alias:expanded-alias
      
      alias

      簡略別名を指定します。

      expanded-alias

      拡張別名 (user@host.domain.com) を指定します。

    2. Postmaster: root エントリがあることを確認します。


      # cat /etc/mail/aliases
      ..
      Postmaster: root
      
    3. root の別名を追加します。ポストマスターとして指定された個人のメールアドレスを使用します。


      # cat /etc/mail/aliases
      ..
      root: user@host.domain.com
      
      user@host.domain.com

      指定されたポストマスターに割り当てられているアドレスを指定します。

  4. NIS マスターサーバーがネームサービスを実行中で、各メールサーバーのホスト名を解釈処理できることを確認します。

  5. /var/yp ディレクトリに移動します。


    # cd /var/yp
    
  6. make コマンドを適用します。


    # make
    

    /etc/hosts および /etc/mail/aliases ファイルの変更は、NIS スレーブシステムに伝達されます。変更は、遅くとも数分後には有効になります。

Procedureローカルメール別名ファイルを設定する方法

ローカルメール別名ファイルで別名を解釈処理するには、次の手順に従います。

  1. ユーザーとメールボックスの場所の各リストをコンパイルします。

  2. メールサーバーのスーパーユーザーになるか、同等の役割になります。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  3. /etc/mail/aliases ファイルを編集し、次のようなエントリを作成します。

    1. ユーザーごとにエントリを追加します。


      user1: user2@host.domain
      
      user1

      新しい別名を指定します。

      user2@host.domain

      新しい別名の実際のアドレスを指定します。

    2. Postmaster: root エントリがあることを確認します。


      # cat /etc/mail/aliases
      ..
      Postmaster: root
      
    3. root の別名を追加します。ポストマスターとして指定された個人のメールアドレスを使用します。


      # cat /etc/mail/aliases
      ..
      root: user@host.domain.com
      
      user@host.domain.com

      指定されたポストマスターに割り当てられているアドレスを指定します。

  4. 別名データベースを再構築します。


    # newaliases
    

    /etc/mail/sendmail.cfAliasFile オプションの構成によって、このコマンドがバイナリ形式で、/etc/mail/aliases.db ファイルを 1 つ生成するか、または /etc/mail/aliases.dir/etc/mail/aliases.pag の 1 組のファイルを生成するかが決まります。

  5. 次の手順のどちらかを実行して、生成されたファイルをコピーします。

    1. (省略可能) /etc/mail/aliases/etc/mail/aliases.dir、および /etc/mail/aliases.pag ファイルをほかの各システムにコピーします。

      rcp または rdist コマンドを使用して 3 つのファイルをコピーできます。詳細は、rcp(1) のマニュアルページまたは rdist(1) のマニュアルページを参照してください。また、この目的のためのスクリプトを作成することもできます。

      これらのファイルをコピーしたら、newaliases コマンドをほかの各システムで実行する必要はありません。ただし、メールクライアントを追加または削除するたびにすべての /etc/mail/aliases ファイルを更新する必要があるので注意してください。

    2. (省略可能) /etc/mail/aliases および /etc/mail/aliases.db ファイルをほかの各システムにコピーします。

      rcp または rdist コマンドを使用してこれらのファイルをコピーできます。詳細は、rcp(1) のマニュアルページまたは rdist(1) のマニュアルページを参照してください。また、この目的のためのスクリプトを作成することもできます。

      これらのファイルをコピーしたら、newaliases コマンドをほかの各システムで実行する必要はありません。ただし、メールクライアントを追加または削除するたびにすべての /etc/mail/aliases ファイルを更新する必要があるので注意してください。

Procedureキー付きマップファイルの作成方法

キー付きマップファイルを作成するには、次の手順に従います。

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. 入力ファイルを作成します。

    エントリには、次の構文を使用できます。


    old-name@newdomain.com   new-name@newdomain.com
    old-name@olddomain.com    error:nouser No such user here
    @olddomain.com          %1@newdomain.com
    
    old_name@newdomain.com

    新たに割り当てたドメインでこれまで割り当てられていたユーザー名を指定します。

    new_name@newdomain.com

    新たに割り当てるアドレスを指定します。

    old_name@olddomain.com

    これまで割り当てられていたドメインでこれまで割り当てられていたユーザー名を指定します。

    olddomain.com

    これまで割り当てられていたドメインを指定します。

    newdomain.com

    新たに割り当てるドメインを指定します。

    1 番目のエントリにより、メールは新しい別名に転送されます。2 番目のエントリにより、不適切な別名が使用された時にメッセージが作成されます。最後のエントリにより、すべての着信メールは olddomain から newdomain へ転送されます。

  3. データベースファイルを作成します。


    # /usr/sbin/makemap maptype newmap < newmap
    
    maptype

    dbmbtreehash などのデータベースタイプを選択します。

    newmap

    入力ファイル名とデータベースファイル名の最初の部分を指定します。dbm データベースタイプを選択すると、データベースファイルは接尾辞に .pag または .dir を使って作成されます。ほかの 2 つのデータベースタイプの場合、ファイル名には .db が付きます。

postmaster 別名の管理

各システムは postmaster メールボックスにメールを送信できなければなりません。 postmaster の NIS または NIS+ 別名を作成できます。あるいは、ローカルの /etc/mail/aliases ファイルそれぞれに別名を作成することもできます。次の手順を参照してください。

Procedureローカルの各 /etc/mail/aliases ファイルに postmaster 別名を作成する方法

postmaster 別名をローカルの各 /etc/mail/aliases ファイルに作成する場合は、次の手順に従います。

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. /etc/mail/aliases エントリを表示します。


    # cat /etc/mail/aliases
    # Following alias is required by the mail protocol, RFC 2821
    # Set it to the address of a HUMAN who deals with this system's
    # mail problems.
    Postmaster: root
  3. 各システムの /etc/mail/aliases ファイルを編集します。

    root をポストマスターに指定する個人のメールアドレスに変更します。


    Postmaster: mail-address
    
    mail-address

    ポストマスターとして指定された個人に割り当てられたアドレスを使用します。

  4. (省略可能) ポストマスター用に別のメールボックスを作成します。

    ポストマスターがポストマスターメールと個人メールとを区別するために、別のメールボックスを作成できます。別のメールボックスを作成する場合は、/etc/mail/aliases ファイルを編集するときに、ポストマスターの個人メールアドレスではなくメールボックスアドレスを使用してください。詳細は、postmaster 用に別のメールボックスを作成する方法」を参照してください。

Procedurepostmaster 用に別のメールボックスを作成する方法

postmaster 用に別のメールボックスを作成する場合は、次の手順に従います。

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. postmaster として指定された個人のアカウントを作成します。パスワードフィールドにアスタリスク (*) を入力します。

    ユーザーアカウントの追加の詳細については、『Solaris のシステム管理 (基本編)』の第 5 章「ユーザーアカウントとグループの管理 (手順)」を参照してください。

  3. メールが配信されたら、mail プログラムがメールボックス名に読み書きできるようにします。


    # mail -f postmaster
    
    postmaster

    割り当てられているアドレスを指定します。

Procedurepostmaster メールボックスを /etc/mail/aliases ファイルの別名に追加する方法

postmaster メールボックスを /etc/mail/aliases ファイル内の別名に追加する場合は、次の手順に従います。

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. root の別名を追加します。ポストマスターとして指定された個人のメールアドレスを使用します。


    # cat /etc/mail/aliases
    ..
    root: user@host.domain.com
    
    user@host.domain.com

    ポストマスターとして指定された個人に割り当てられたアドレスを使用します。

  3. ポストマスターのローカルシステムで、/etc/mail/aliases ファイルに別名の名前を定義するエントリを作成します。sysadmin が 1 例です。ローカルメールボックスへのパスも指定します。


    # cat /etc/mail/aliases
    ..
    sysadmin: /usr/somewhere/somefile
    
    sysadmin

    新しい別名の名前を作成します。

    /usr/somewhere/somefile

    ローカルメールボックスのパスを指定します。

  4. 別名データベースを再構築します。


    # newaliases
    

キューディレクトリの管理 (作業マップ)

次の表では、メールキューの管理の手順を説明します。

作業 

説明 

参照先 

メールキュー /var/spool/mqueue の内容の表示

キューにあるメッセージの数とそれらのメッセージがキューから消去されるのにかかる時間を表示する手順。 

「メールキュー /var/spool/mqueue の内容を表示する方法」

メールキュー /var/spool/mqueue の強制処理

以前にメッセージを受信できなかったシステムへのメッセージを処理する手順。 

「メールキュー /var/spool/mqueue でメールキューを強制処理する方法」

メールキュー /var/spool/mqueue のサブセットの実行

ホスト名など、アドレスの部分文字列を強制的に処理する手順。さらに、特定のメッセージをキューから強制的に処理する手順。 

「メールキュー /var/spool/mqueue のサブセットを実行する方法」

メールキュー /var/spool/mqueue の移動

メールキューを移動する手順。 

「メールキュー /var/spool/mqueue を移動する方法」

古いメールキュー /var/spool/omqueue の実行

古いメールキューを実行する手順。 

「古いメールキュー /var/spool/omqueue を実行する方法」

キューディレクトリの管理

この節では、キューの管理に役立つ作業について説明します。クライアント専用のキューの詳細については、sendmail の version 8.12 からの submit.cf 構成ファイル」を参照してください。ほかの関連情報については、sendmail の version 8.12 から追加されたキューの機能」を参照してください。

次を参照してください。

Procedureメールキュー /var/spool/mqueue の内容を表示する方法

  1. キューにあるメッセージの数とそれらのメッセージがキューから消去されるのにかかる時間を表示します。

    次の行を入力します。


    # /usr/bin/mailq | more
    

    このコマンドは、次の情報を表示します。

    • キュー ID

    • メッセージのサイズ

    • メッセージがキューに入った日付

    • メッセージの状態

    • 送信者と受信者

    さらに、このコマンドは、承認属性 solaris.admin.mail.mailq を確認します。確認が取れると、sendmail-bp フラグを指定するのと同じ処理が実行されます。確認ができない場合は、エラーメッセージが表示されます。デフォルトでは、この承認属性はすべてのユーザーで使用できるようになっています。承認属性は、prof_attr 内のユーザーエントリを変更することにより無効にできます。詳細は、prof_attr(4) および mailq(1) のマニュアルページを参照してください。

Procedureメールキュー /var/spool/mqueue でメールキューを強制処理する方法

たとえば、以前にメッセージを受信できなかったシステムへのメッセージを処理するには、次の手順に従います。

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. キューを強制処理し、キューが消去されるとジョブの進捗状況を表示します。


    # /usr/lib/sendmail -q -v 
    

Procedureメールキュー /var/spool/mqueue のサブセットを実行する方法

たとえば、ホスト名など、アドレスの部分文字列を強制的に処理するには、次の手順に従います。また、特定のメッセージをキューから強制的に処理するにも、次の手順に従います。

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. -qRstring を使用して、いつでもメールキューのサブセットを実行できます。


    # /usr/lib/sendmail -qRstring
    
    string

    受信者の別名または user@host.domain の部分文字列 (ホスト名など) を指定

    代わりに、-qInnnnn を使ってメールキューのサブセットを実行することもできます。


    # /usr/lib/sendmail -qInnnnn
    
    nnnnn

    キュー ID を指定します。

Procedureメールキュー /var/spool/mqueue を移動する方法

メールキューを移動する場合は、次の手順に従います。

  1. メールホストのスーパーユーザーになるか、同等の役割になります。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. sendmail デーモンを終了します。


    # svcadm disable network/smtp:sendmail
    

    これで、sendmail はキューディレクトリを処理しなくなります。

  3. /var/spool ディレクトリに移動します。


    # cd /var/spool
    
  4. mqueue ディレクトリとディレクトリ内のすべての内容を omqueue ディレクトリに移動します。次に、mqueue という名前の新しい空のディレクトリを作成します。


    # mv mqueue omqueue; mkdir mqueue
    
  5. ディレクトリのアクセス権を所有者は読み取り/書き込み/実行に、またグループは読み取り/実行に設定します。また、所有者とグループを daemon に設定します。


    # chmod 750 mqueue; chown root:bin mqueue
    
  6. sendmail を起動します。


    # svcadm enable network/smtp:sendmail
    

Procedure古いメールキュー /var/spool/omqueue を実行する方法

古いメールキューを実行するには、次の手順に従います。

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. 古いメールキューを実行します。


    # /usr/lib/sendmail -oQ/var/spool/omqueue -q
    

    -oQ フラグで、代替キューディレクトリを指定します。-q フラグで、キューのすべてのジョブを実行するように指示します。画面に冗長出力を表示する場合は、-v フラグを使用します。

  3. 空のディレクトリを削除します。


    # rmdir /var/spool/omqueue
    

.forward ファイルの管理 (作業マップ)

次の表では、.forward ファイルを管理するための手順を説明します。詳細は、.forward ファイル」第 14 章メールサービス (リファレンス)を参照してください。

作業 

説明 

参照先 

.forward ファイルを無効にする

たとえば、自動転送を禁止する場合に実行する手順。 

.forward ファイルを無効にする方法」

.forward ファイルの検索パスを変更する

たとえば、すべての .forward ファイルを共通ディレクトリに移動させる場合に実行する手順。

.forward ファイルの検索パスを変更する方法」

/etc/shells を作成し生成する

メールをプログラムまたはファイルに転送するために、ユーザーが .forward ファイルを使用できるようにする手順。

/etc/shells の作成および生成方法」

.forward ファイルを管理する

この節では、.forward ファイルの管理に関する複数の手順を説明します。これらのファイルはユーザーが編集できるので、ファイルが問題の原因になる場合があります。詳細は、.forward ファイル」第 14 章メールサービス (リファレンス)を参照してください。

次を参照してください。

Procedure.forward ファイルを無効にする方法

自動転送を禁止し、特定のホストの .forward ファイルを無効にするには、次の手順に従います。

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. /etc/mail/cf/domain/solaris-generic.m4 またはサイト固有のドメイン m4 ファイルのコピーを作成します。


    # cd /etc/mail/cf/domain
    # cp solaris-generic.m4 mydomain.m4
    
    mydomain

    選択するファイル名を指定します。

  3. 次の行を作成したファイルに追加します。


    define(`confFORWARD_PATH',`')dnl
    

    m4 ファイルに confFORWARD_PATH の値がすでに存在する場合は、NULL 値に置き換えます。

  4. 新しい構成ファイルを構築してインストールします。

    この手順の詳細については、「新しい sendmail.cf ファイルを構築する方法」を参照してください。


    注 –

    .mc ファイルを編集する場合は、忘れずに、DOMAIN(`solaris-generic')DOMAIN(`mydomain ') に変更してください。


Procedure.forward ファイルの検索パスを変更する方法

たとえば、すべての .forward ファイルを共通ディレクトリに入れる場合は、次の手順に従います。

  1. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  2. /etc/mail/cf/domain/solaris-generic.m4 またはサイト固有のドメイン m4 ファイルのコピーを作成します。


    # cd /etc/mail/cf/domain
    # cp solaris-generic.m4 mydomain.m4
    
    mydomain

    選択するファイル名を指定します。

  3. 次の行を作成したファイルに追加します。


    define(`confFORWARD_PATH',`$z/.forward:/var/forward/$u')dnl

    m4 ファイルに confFORWARD_PATH の値がすでに存在する場合は、新しい値に置き換えます。

  4. 新しい構成ファイルを構築してインストールします。

    この手順の詳細については、「新しい sendmail.cf ファイルを構築する方法」を参照してください。


    注 –

    .mc ファイルを編集する場合は、忘れずに、DOMAIN(`solaris-generic')DOMAIN(`mydomain ') に変更してください。


Procedure/etc/shells の作成および生成方法

このファイルは標準リリースには含まれていません。.forward ファイルを使用してプログラムまたはファイルにメールを転送することをユーザーに許可する場合は、このファイルを追加する必要があります。grep を使用して、パスワードファイルに一覧表示されたすべてのシェルを特定し、ファイルを手動で作成することができます。これにより、シェルをファイルに入力できます。しかし、次に示す、ダウンロード可能なスクリプトを使用する手順の方が簡単です。

  1. スクリプトをダウンロードします。

    http://www.sendmail.org/vendor/sun/gen-etc-shells.html

  2. スーパーユーザーになるか、同等の役割を引き受けます。

    役割には、認証と特権コマンドが含まれます。役割の詳細については、『Solaris のシステム管理 (セキュリティサービス)』「RBAC の構成 (作業マップ)」を参照してください。

  3. シェルのリストを作成するために、gen-etc-shells を実行します。


    # ./gen-etc-shells.sh > /tmp/shells
    

    このスクリプトでは、getent コマンドを使用して、/etc/nsswitch.conf 内に一覧表示されたパスワードファイルソースに組み込まれたシェルの名前を収集します。

  4. /tmp/shells 内のシェルのリストを調べて編集します。

    選択したエディタを使用し、組み込まないシェルを削除します。

  5. ファイルを /etc/shells に移動します。


    # mv /tmp/shells /etc/shells
    

メールサービスの障害対処とヒント (作業マップ)

次の表では、メールサービスのトラブルシューティング手順とヒントを説明します。

作業 

説明 

参照先 

メール構成のテスト 

sendmail 構成ファイルの変更をテストする手順

「メール構成をテストする方法」

メール別名の確認 

指定された受信者にメールを配信できるかどうかを確認する手順 

「メール別名を確認する方法」

ルールセットのテスト 

sendmail ルールセットの入力と戻りを確認する手順

sendmail ルールセットをテストする方法」

ほかのシステムへの接続の確認 

ほかのシステムへの接続を確認するためのヒント 

「ほかのシステムへの接続を調べる方法」

syslogd プログラムを使用したメッセージの記録

エラーメッセージ情報を収集するためのヒント 

「エラーメッセージの記録」

診断情報のその他の情報源の確認 

ほかの情報源から診断情報を取得するためのヒント 

「メール診断情報のその他の情報源」

メールサービスのトラブルシューティング手順とヒント

この節では、メールサービスの問題解決に使用できる手順とヒントをいくつか示します。

Procedureメール構成をテストする方法

構成ファイルに対して行なった変更をテストするには、次の手順に従います。

  1. 変更した構成ファイルがあるシステムで sendmail を再起動します。


    # svcadm refresh network/smtp:sendmail
    
  2. 各システムからテストメッセージを送信します。


    # /usr/lib/sendmail -v names </dev/null
    
    names

    受信者の電子メールアドレスを指定します。

    このコマンドは、指定された受信者に NULL メッセージを送信し、画面にメッセージの動作を表示します。

  3. メッセージを通常のユーザー名に送ることによって、メールを自分自身またはローカルシステム上のほかの人に送信します。

  4. (省略可能) ネットワークに接続している場合は、別のシステムの個人宛に次の 3 方向でメールを送信します。

    • メインシステムからクライアントシステムへ

    • クライアントシステムからメインシステムへ

    • クライアントシステムから別のクライアントシステムへ

  5. (省略可能) メールゲートウェイがある場合、メールホストから別のドメインにメールを送信して、中継メールプログラムおよびホストが適切に設定されていることを確認します。

  6. (省略可能) 電話回線上で別のホストへの UUCP 接続を設定している場合は、そのホストのだれかにメールを送信します。メッセージを受信した時点で、メールを返信してもらうか、電話してもらいます。

  7. UUCP 接続を介してメールを送信するようにほかの人に頼みます。

    sendmail プログラムは、メッセージが配信されたかどうかは検出しません。これは、配信のためにプログラムがメッセージを UUCP に渡すためです。

  8. 異なるシステムからメッセージを postmaster 宛てに送信し、ポストマスターのメールボックスにそのメッセージが配信されたことを確認します。

メール別名を確認する方法

次の例は、別名を確認する方法を示します。


% mconnect
connecting to host localhost (127.0.0.1), port 25
connection open
220 your.domain.com ESMTP Sendmail 8.13.6+Sun/8.13.6; Tue, 12 Sep 2004 13:34:13 -0800 (PST)
expn sandy
250 2.1.5 <sandy@phoenix.example.com>
quit
221 2.0.0 your.domain.com closing connection
% 

この例では、mconnect プログラムがローカルホスト上のメールサーバーとの接続を確立し、接続をテストできるようにします。プログラムは対話式で実行されるので、さまざまな診断コマンドを実行できます。詳細は、mconnect(1) のマニュアルページを参照してください。expn sandy のエントリに、展開されたアドレス sandy@phoenix.example.com が示されています。したがって、別名 sandy でメールを配信できることが確認されました。

ローカルおよびドメインの両方で別名を使用する場合は、ループやデータベースの不整合が生じないようにしてください。あるシステムから別のシステムにユーザーを移動するときは、別名のループが生じないよう特に注意してください。

Proceduresendmail ルールセットをテストする方法

sendmail ルールセットの入力と戻りを確認するには、次の手順に従います。

  1. アドレステストモードに変更します。


    # /usr/lib/sendmail -bt
    
  2. メールアドレスをテストします。

    最後のプロンプト (>) で次の数値とアドレスを入力します。


    > 3,0 mail-sraddress
    
    mail-address

    テストするメールアドレスを指定します。

  3. セッションを終了します。

    Control-D キーを押します。


例 13–6 アドレステストモードの出力

次にアドレステストモードの出力例を示します。


% /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

connecting to host phoenix (172.31.255.255), port 25
connection open
220 phoenix.example.com ESMTP Sendmail 8.13.1+Sun/8.13.1; Sat, 4 Sep 2004 3:52:56 -0700
expn sandy
250 2.1.5 <sandy@phoenix.example.com>
quit

mconnect を使用して SMTP ポートに接続できない場合は、次の条件を確認してください。

エラーメッセージの記録

メールサービスは、syslogd プログラムを使って大部分のエラーメッセージを記録します。デフォルトでは、syslogd プログラムはこれらのメッセージを /etc/hosts ファイルで指定されている loghost というシステムに送信します。loghost が NIS ドメイン全体のすべてのログを保持するように定義できます。loghost を指定しなければ、syslogd からのエラーメッセージはレポートされません。

/etc/syslog.conf ファイルは、syslogd プログラムがメッセージをどこに転送するかを制御します。/etc/syslog.conf ファイルを編集することにより、デフォルト構成を変更できます。変更内容を有効にするには、syslog デーモンを再起動する必要があります。メールに関する情報を収集するために、ファイルに次の選択を追加できます。

/etc/syslog.conf ファイルの次のエントリは、クリティカルメッセージ、通知メッセージ、デバッグメッセージをすべて /var/log/syslog に送信します。


mail.crit;mail.info;mail.debug			/var/log/syslog

システムログの各行には、タイムスタンプ、そのログ行を生成したシステム名、およびメッセージが入っています。syslog ファイルは、大量の情報を記録できます。

ログは、連続したレベルとして並べられます。最下位レベルでは、異常なイベントだけが記録されます。最上位レベルでは、もっとも必須なイベントと注目する必要のないイベントが記録されます。通常、10 以下のログレベルが「有用」とみなされます。10 を超えるログレベルは通常、デバッグに使用されます。loghost および syslogd プログラムの詳細については、 『Solaris のシステム管理 (上級編)』「システムのメッセージ記録のカスタマイズ」を参照してください。

メール診断情報のその他の情報源

その他の診断情報については、次の情報源を確認してください。

エラーメッセージの解釈

この節では、sendmail 関連のエラーメッセージを解釈し対処する方法について説明します。http://www.sendmail.org/faq/ も参照してください。

次のエラーメッセージには、次の種類の情報が含まれます。


451 timeout waiting for input during source

原因:

タイムアウトの可能性があるソース (SMTP 接続など) から読み取るとき、sendmail は、読み込みを開始する前にさまざまな Timeout オプションの値をタイマーに設定します。タイマーが期限切れになる前に読み取りが完了しなかった場合、このメッセージが表示され、読み取りが停止します。通常、この状況は RCPT 時に発生します。メールメッセージはキューに入れられて、あとで配信されます。

対処方法:

このメッセージが頻繁に表示される場合は、/etc/mail/sendmail.cf ファイルの Timeout オプションの値を大きくします。タイマーがすでに大きな値に設定されている場合は、ネットワークの配線や接続などハードウェアの問題点を探します。


550 hostname... Host unknown

原因:

この sendmail のメッセージは、単価記号 (@) のあとのアドレス部分で指定されている受信先のホストマシンが、ドメインネームシステム (DNS) ルックアップ時に見つからなかったことを示します。

対処方法:

nslookup コマンドを使用して、受信先ホストが、そのドメインまたはほかのドメインにあることを確認します。スペルが間違っている可能性があります。あるいは、受信者に連絡して正しいアドレスを確認します。


550 username... User unknown

原因:

この sendmail のメッセージは、単価記号 (@) の前のアドレス部分で指定されている受信者を受信先ホストマシンで検出できなかったことを示します。

対処方法:

電子メールアドレスを確認し、再度送信してみます。スペルが間違っている可能性があります。これで解決しない場合は、受信者に連絡して正しいアドレスを確認します。


554 hostname... Local configuration error

原因:

この sendmail メッセージは通常、ローカルホストがメールを自分宛に送信しようとしていることを示します。

対処方法:

/etc/mail/sendmail.cf ファイル内の $j マクロの値が完全指定ドメイン名になっていることを確認します。

説明:

送信側のシステムが SMTP の HELO コマンドで受信側のシステムに自身のホスト名を示すと、受信側のシステムはそのホスト名を送信者の名前と比較します。これらの名前が同じ場合、受信側のシステムはこのエラーメッセージを発行し、接続を閉じます。HELO コマンドで提供される名前は、$j マクロの値です。

追加情報については、http://www.sendmail.org/faq/section4#4.5 を参照してください。


config error: mail loops back to myself.

原因:

このエラーメッセージが生成されるのは、MX レコードを設定し、ホスト bar をドメイン foo のメール交換局にした場合です。ただし、ホスト bar 自身がドメイン foo のメール交換局であることを認識するように設定されていません。

また、送信側システムと受信側システムの両方が同じドメインとして識別される場合にも、このメッセージを受け取ります。

対処方法:

手順については、http://www.sendmail.org/faq/section4#4.5 を参照してください。


host name configuration error

説明:

これは sendmail の古いメッセージで、「I refuse to talk to myself」というメッセージから置き換えられたもので現在は、「Local configuration error」メッセージに置き換えられています。

対処方法:

次のエラーメッセージの対処方法で説明されている手順に従います。554 hostname... Local configuration error.


user unknown

原因:

メールをユーザー宛てに送信しようとすると、「Username... user unknown」のエラーが表示されます。ユーザーが同じシステム上にいます。

対処方法:

入力した電子メールアドレスに誤字がないか確認します。あるいは、ユーザーが、/etc/mail/aliases またはユーザーの .mailrc ファイルに存在しない電子メールアドレスに別名を割り当てられている可能性があります。また、ユーザー名の大文字も確認してください。できれば、電子メールアドレスは大文字と小文字が区別されないようにします。

追加情報については、http://www.sendmail.org/faq/section4#4.17 を参照してください。