SMTP サーバーとそのクライアント間の通信は通常、どちらの側でも制御されたり信頼されたりしません。このようにセキュリティーが存在しないことにより、第三者は、サーバーとクライアントの間の通信をモニターし、変更することさえ可能です。SMTP は sendmail の version 8.13 で Transport Layer Security (TLS) を使用してこの問題を解決できます。これにより SMTP サーバーおよびクライアントに対するサービスが拡張され、次の機能が実現されます。
インターネットでの機密性の高い認証された通信
盗聴や攻撃からの保護
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 構成用
|
sendmail で SMTP による TLS の使用をサポートできるようにするには、次のオプションを定義してください。
–CACertPath
–CACertFile
–ServerCertFile
–ClientKeyFile
そのほかのオプションは必須ではありません。
次の表で、STARTTLS コマンドにより使用されるマクロを説明します。
|
次の表で、TLS を使用する SMTP 接続を、受け入れるか、継続するか、拒否するかを決定するルールセットを説明します。
|
詳細は、http://www.sendmail.org/m4/starttls.htmlhttp://www.sendmail.org/m4/starttls.html を参照してください。
インターネットで動作するメールプログラムを定義する標準メールプロトコルとしては、SMTP はエンドツーエンドのメカニズムではありません。このプロトコルの制限により、SMTP を介した TLS のセキュリティーにはメールユーザーエージェントは含まれていません。メールユーザーエージェントは、ユーザーと (sendmail などの) メール転送エージェントの間のインタフェースとして動作します。
また、メールは複数のサーバーを経由してルーティングされる場合があります。SMTP のセキュリティーを完全にするには、SMTP 接続のチェーン全体に TLS のサポートが必要です。
最終的には、サーバーの各ペア、またはクライアントとサーバーのペアの間でネゴシエーションされる認証と機密性のレベルを考慮すべきです。詳細は、Oracle Solaris 11.2 での Secure Shell アクセスの管理 の第 1 章Secure Shell の使用 (タスク)を参照してください。