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

sendmail の version 8.13 での変更点

sendmail のこの新しいバージョンには多くの新機能が用意されていますが、FallBackSmartHost オプションがもっとも重要な追加機能です。このオプションにより、main.cf ファイルおよび subsidiary.cf ファイルを使用する必要がなくなります。main.cf ファイルは、MX レコードをサポートする環境で使用されていました。subsidiary.cf ファイルは、完全に動作する DNS がない環境で使用されていました。そのような環境では、スマートホストが MX レコードの代わりに使用されていました。FallBackSmartHost オプションは、統一された構成を提供します。このオプションは、すべての環境でもっとも優先順位の低い MX レコードのように動作します。このオプションは、有効である場合、メールが確実にクライアントに配信されるように、失敗した MX レコードのバックアップ (フェイルオーバー) として担う接続が保たれた (スマート) ホストを提供します。

version 8.13 の詳細については、次の各節を参照してください。

さらに、Solaris 10 1/06 以降のリリースでは、TLS (Transport Layer Security) を使用して SMTP を実行できます。次に説明します。

sendmail の version 8.13 で TLS を使用して SMTP を実行するためのサポート

SMTP サーバーとそのクライアント間の通信は通常、どちらの側でも制御されたり信頼されたりしません。このようにセキュリティーが存在しないことにより、第三者は、サーバーとクライアントの間の通信を監視し、変更することさえ可能です。Solaris 10 1/06 以降のリリースでは、SMTP は sendmail の version 8.13 で Transport Layer Security (TLS) を使用して、この問題を解決できます。これにより SMTP サーバーおよびクライアントに対するサービスが拡張され、次の機能が実現されます。


注 –

TLS の実装は Secure Sockets Layer (SSL) プロトコルに基づいています。


STARTTLS は、TLS を使用して、セキュリティー保護された SMTP 接続を開始する SMTP キーワードです。このセキュリティー保護された接続は、2 台のサーバーの間、またはサーバーとクライアントの間で行われます。セキュリティー保護された接続は、次のように定義されます。

クライアントが STARTTLS コマンドを発行すると、サーバーは次のいずれかを使用して応答します。

220 応答では、クライアントが TLS ネゴシエーションを開始する必要があります。501 応答は、クライアントが STARTTLS コマンドを正しく発行しなかったことを示します。STARTTLS はパラメータなしで発行されます。454 応答では、クライアントがルールセットの値を適用して、接続を受け入れるか維持するかどうかを決定する必要があります。

インターネットの SMTP インフラストラクチャーを維持するため、公的に使用されるサーバーは TLS ネゴシエーションを要求してはならないことに注意してください。ただし、私的に使用されるサーバーは、クライアントが TLS ネゴシエーションを実行するよう要求しても構いません。このような場合、サーバーは次のような応答を返します。


530 Must issue a STARTTLS command first

530 応答は、 STARTTLS コマンドを発行して接続を確立するようクライアントに指示します。

認証とプライバシーのレベルが不十分である場合、サーバーまたはクライアントは接続を拒否できます。また、多くの SMTP 接続はセキュリティー保護されていないため、サーバーとクライアントはセキュリティー保護されていない接続を維持する場合があります。接続を維持するか拒否するかどうかは、サーバーとクライアントの構成により決まります。

TLS を使用して SMTP を実行するためのサポートは、デフォルトでは有効になっていません。TLS が有効になるのは、SMTP クライアントが STARTTLS コマンドを発行した場合です。SMTP クライアントがこのコマンドを発行する前に、sendmail が TLS を使用できるようにする証明書を設定する必要があります。「TLS を使用するよう SMTP を構成する」を参照してください。この手順には、新しい構成ファイルのオプションの定義と、sendmail.cf ファイルの再構築が含まれることに注意してください。

TLS を使用して SMTP を実行するための構成ファイルのオプション

次の表で、TLS を使用して SMTP を実行するために使用される構成ファイルのオプションを説明します。これらのオプションを宣言する場合は、次の構文のどれかを使用します。

表 14–13 TLS を使用して SMTP を実行するための構成ファイルのオプション

オプション 

説明 

CACertFile

m4 名 : confCACERT

引数 : filename

デフォルト値 : 未定義 

1 つの CA 証明書を含むファイルを指定します。 

CACertPath

m4 名 : confCACERT_PATH

引数 : path

デフォルト値 : 未定義 

複数の CA の証明書が含まれるディレクトリへのパスを指定します。 

ClientCertFile

m4 名 : confCLIENT_CERT

引数 : filename

デフォルト値 : 未定義 

クライアントの証明書が含まれるファイルを指定します。sendmail がクライアントとして動作する場合にこの証明書が使用されることに注意してください。

ClientKeyFile

m4 名 : confCLIENT_KEY

引数 : filename

デフォルト値 : 未定義 

クライアントの証明書に属する秘密鍵が含まれるファイルを指定します。 

CRLFile

m4 名 : confCRL

引数 : filename

デフォルト値 : 未定義 

X.509v3 認証に使用される、証明書の失効ステータスが含まれるファイルを指定します。 

DHParameters

m4 名 : confDH_PARAMETERS

引数 : filename

デフォルト値 : 未定義 

Diffie-Hellman (DH) パラメータが含まれるファイルを指定します。 

RandFile

m4 名 : confRAND_FILE

引数 : file:filename または egd:UNIX socket

デフォルト値 : 未定義 

file: 接頭辞を使用してランダムデータが含まれるファイルを指定するか、egd: 接頭辞を使用して UNIX ソケットを指定します。Solaris OS は乱数生成デバイスをサポートしているため、このオプションを指定する必要はありません。random(7D) のマニュアルページを参照してください。

ServerCertFile

m4 名 : confSERVER_CERT

引数 : filename

デフォルト値 : 未定義 

サーバーの証明書が含まれるファイルを指定します。sendmail がサーバーとして動作する場合にこの証明書が使用されます。

Timeout.starttls

m4 名 : confTO_STARTTLS

引数 : amount of time

デフォルト値 : 1h

STARTTLS コマンドに対する応答を SMTP クライアントが待機する時間を設定します。

TLSSrvOptions

m4 名 : confTLS_SRV_OPTIONS

引数 : V

デフォルト値 : 未定義 

サーバーがクライアントから証明書を要求するかどうかを決定します。このオプションが V に設定されている場合、クライアント検証は行われません。

sendmail で SMTP による TLS の使用をサポートできるようにするには、次のオプションを定義してください。

そのほかのオプションは必須ではありません。

TLS を使用して SMTP を実行するためのマクロ

次の表で、STARTTLS コマンドにより使用されるマクロを説明します。

表 14–14 TLS を使用して SMTP を実行するためのマクロ

マクロ 

説明 

${cert_issuer}

証明書の発行元である認証局 (CA) の識別名 (DN) を保持します。 

${cert_subject}

cert subject と呼ばれる証明書の DN を保持します。

${cn_issuer}

cert issuer である CA の共通名 (CN) を保持します。

${cn_subject}

cert subject と呼ばれる証明書の CN を保持します。

${tls_version}

接続に使用される TLS のバージョンを保持します。 

${cipher}

接続に使用される (cipher suite と呼ばれる) 暗号アルゴリズムのセットを保持します。

${cipher_bits}

接続に使用される対称暗号化アルゴリズムのキーの長さをビット単位で保持します。 

${verify}

提示された証明書の検証結果を保持します。取りうる値は次のとおり 

  • OK – 検証成功。

  • NO – 証明書は提示されません。

  • NOT – 証明書は要求されません。

  • FAIL – 証明書は提示されたが検証不可。

  • NONE STARTTLS は実行されません。

  • TEMP – 一時エラーが発生。

  • PROTOCOL – SMTP エラーが発生。

  • SOFTWARE STARTTLS ハンドシェークが失敗。

${server_name}

現在の出力 SMTP 接続のサーバー名を保持します。 

${server_addr}

現在の出力 SMTP 接続のサーバーのアドレスを保持します。 

TLS を使用して SMTP を実行するためのルールセット

次の表で、TLS を使用する SMTP 接続を、受け入れるか、継続するか、拒否するかを決定するルールセットを説明します。

表 14–15 TLS を使用して SMTP を実行するためのルールセット

ルールセット 

説明 

tls_server

クライアントとして動作する場合、sendmail はこのルールセットを使用して、サーバーが現在 TLS によってサポートされているかどうかを判別します。

tls_client

サーバーとして動作する場合、sendmail はこのルールセットを使用して、クライアントが現在 TLS によってサポートされているかどうかを判別します。

tls_rcpt

このルールセットは、受取人の MTA の検証を必要とします。この受取人の制限により、DNS スプーフィングなどの攻撃が不可能になります。 

TLS_connection

このルールセットは、アクセスマップの RHS により指定された要件を、現在の TLS 接続の実際のパラメータに照合して確認します。 

try_tls

sendmail はこのルールセットを使用して、別の MTA への接続時に STARTTLS を使用できるかを判別します。MTA が適切に STARTTLS を実装できない場合、STARTTLS は使用されません。

詳細は、http://www.sendmail.org/m4/starttls.html を参照してください。

TLS を使用した SMTP の実行に関連するセキュリティーの検討事項

インターネットで動作するメールプログラムを定義する標準メールプロトコルとしては、SMTP はエンドツーエンドのメカニズムではありません。このプロトコルの制限により、SMTP を介した TLS のセキュリティーにはメールユーザーエージェントは含まれていません。メールユーザーエージェントは、ユーザーと (sendmail などの) メール転送エージェントの間のインタフェースとして動作します。

また、メールは複数のサーバーを経由してルーティングされる場合があります。SMTP のセキュリティーを完全にするには、SMTP 接続のチェーン全体に TLS のサポートが必要です。

最終的には、サーバーの各ペア、またはクライアントとサーバーのペアの間でネゴシエーションされる認証と機密性のレベルを考慮すべきです。詳細は、『Solaris のシステム管理 (セキュリティサービス)』「認証サービス」を参照してください。

sendmail の version 8.13 で追加されたコマンド行オプション

次の表に、sendmail の version 8.13 で追加されたコマンド行オプションを示します。コマンド行のほかのオプションについては、sendmail(1M) のマニュアルページを参照してください。

表 14–16 sendmail の version 8.13 で使用可能になったコマンド行オプション

オプション 

説明 

-D logfile

この情報を標準出力に含めるのではなく、指定された logfile にデバッグ出力を送信します。

-q[!]Qsubstr

隔離 reason の部分文字列である substr を持つ隔離されたジョブの処理を指定します。-Q reason オプションの説明を参照。!が追加された場合、このオプションは、この substr を持たない隔離されたジョブを処理します。

-Qreason

この reason を持つ通常のキュー項目を隔離します。reason が指定されていない場合、隔離されるキュー項目が隔離されません。このオプションは、-q[!]Qsubstr オプションと連動します。substr は、reason の一部 (部分文字列) です。

sendmail の version 8.13 で追加または改訂された構成ファイルオプション

次の表に、追加または改訂された構成ファイルオプションを示します。これらのオプションを宣言する場合は、次の構文のどれかを使用します。


O OptionName=argument          # for the configuration file
-O OptionName=argument         # for the command line
define(`m4Name',argument)     # for m4 configuration
表 14–17 sendmail の version 8.13 で使用可能な構成ファイルオプション

オプション 

説明 

ConnectionRateWindowSize

m4 名 : confCONNECTION_RATE_WINDOW_SIZE

引数 : number

デフォルト値 : 60

受信接続を維持する秒数を設定します。 

FallBackSmartHost

m4 名 : confFALLBACK_SMARTHOST

引数 : hostname

このオプションは、メールが確実にクライアントに配信されるように、失敗した MX レコードのバックアップ (フェイルオーバー) として担う接続が保たれたホストを提供します。 

InputMailFilters

m4 名 : confINPUT_MAIL_FILTERS

引数 : filename

sendmail デーモンの入力メールフィルタを示します。

PidFile

m4 名 : confPID_FILE

引数 : filename

デフォルト値 : /var/run/sendmail.pid

今までのリリースのように、ファイルを開く前に、そのファイル名がマクロで展開されます。さらに、version 8.13 では、sendmail の終了時にファイルへのリンクが削除されます (unlinked)。

QueueSortOrder

m4 名 : confQUEUE_SORT_ORDER

追加された引数 : none

version 8.13 では、ソート順序を指定しない場合に none を使用します。

RejectLogInterval

m4 名 : confREJECT_LOG_INTERVAL

引数 : period-of-time

デフォルト値 : 3h (3 時間)

指定した period-of-time に対してデーモン接続が拒否された場合、その情報が記録されます。

SuperSafe

m4 名 : confSAFE_QUEUE

短縮名 : s

追加された引数 : postmilter

デフォルト値 : true

postmilter が設定されている場合、sendmail は、すべての milters がメッセージの受付の信号を送るまで、キューファイルとの同期を延期します。この引数を有効にするには、sendmail が SMTP サーバーとして実行される必要があります。それ以外の場合、postmiltertrue 引数を使用しているように動作します。

sendmail の version 8.13 で追加または改訂された FEATURE() の宣言

次の表に、追加または改訂された FEATURE() の宣言を示します。この m4 マクロは次の構文を使用します。


FEATURE(`name', `argument')
表 14–18 sendmail の version 8.13 で使用可能な FEATURE() の宣言

FEATURE() の名前

説明 

conncontrol

access_db ルールセットと連動して、受信 SMTP 接続の数を確認します。詳細は、/etc/mail/cf/README を参照してください。

greet_pause

オープンプロキシと SMTP のスラミング保護を可能にする、greet_pause ルールセットを追加します。詳細は、/etc/mail/cf/README を参照してください。

local_lmtp

デフォルトの引数は引き続き mail.local であり、今回の Solaris のリリースでの LMTP を使用できるメールプログラムです。ただし、version 8.13 で、LMTP を使用できる別のメールプログラムを使用する場合は、パス名を 2 番目のパラメータとして指定し、2 番目のパラメータに渡される引数を 3 番目のパラメータとして指定します。次に例を示します。


FEATURE(`local_lmtp', `/usr/local/bin/lmtp', `lmtp')

mtamark

“TXT RRs による逆引き DNS でのメール転送エージェントのマーキング” (MTAMark) を試験的にサポートします。詳細は、/etc/mail/cf/README を参照してください。

ratecontrol

access_db ルールセットと連動して、ホストに対する接続速度を制御します。詳細は、/etc/mail/cf/README を参照してください。

use_client_ptr

この FEATURE() が有効になっている場合、ルールセット check_relay$&{client_ptr} というこの引数で最初の引数を上書きします。