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

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