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 Ready to start TLS
501 Syntax error (no parameters allowed)
454 TLS not available due to temporary reason
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 を実行するために使用される構成ファイルのオプションを説明します。これらのオプションを宣言する場合は、次の構文のどれかを使用します。
O OptionName=argument # 構成ファイル用
-O OptionName=argument # コマンド行用
define(`m4Name',argument) # m4 構成用
オプション |
説明 |
---|---|
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 の使用をサポートできるようにするには、次のオプションを定義してください。
CACertPath
CACertFile
ServerCertFile
ClientKeyFile
そのほかのオプションは必須ではありません。
次の表で、STARTTLS コマンドにより使用されるマクロを説明します。
表 14–14 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 を参照してください。
インターネットで動作するメールプログラムを定義する標準メールプロトコルとしては、SMTP はエンドツーエンドのメカニズムではありません。このプロトコルの制限により、SMTP を介した TLS のセキュリティーにはメールユーザーエージェントは含まれていません。メールユーザーエージェントは、ユーザーと (sendmail などの) メール転送エージェントの間のインタフェースとして動作します。
また、メールは複数のサーバーを経由してルーティングされる場合があります。SMTP のセキュリティーを完全にするには、SMTP 接続のチェーン全体に TLS のサポートが必要です。
最終的には、サーバーの各ペア、またはクライアントとサーバーのペアの間でネゴシエーションされる認証と機密性のレベルを考慮すべきです。詳細は、『Solaris のシステム管理 (セキュリティサービス)』の「認証サービス」を参照してください。