Go to main content
Oracle® Solaris 11.3 での sendmail サービスの管理

印刷ビューの終了

更新: 2016 年 11 月
 
 

sendmail の version 8.13

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

また、Transport Layer Security (TLS) を使用して SMTP を実行できます。次に説明します。

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

    SMTP サーバーとそのクライアント間の通信は通常、どちらの側でも制御されたり信頼されたりしません。このようにセキュリティーが存在しないことにより、第三者は、サーバーとクライアントの間の通信をモニターし、変更することさえ可能です。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 を実行するための構成ファイルのオプション

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

  • O OptionName=argument # 構成ファイル用

  • -O OptionName=argument # コマンド行用

  • define(`m4Name',argument) # m4 構成用

表 5  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 ソケットを指定します。Oracle 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

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

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

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

表 6  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 接続を、受け入れるか、継続するか、拒否するかを決定するルールセットを説明します。

表 7  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.htmlhttp://www.sendmail.org/m4/starttls.html を参照してください。

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

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

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

最終的には、サーバーの各ペア、またはクライアントとサーバーのペアの間でネゴシエーションされる認証と機密性のレベルを考慮すべきです。詳細は、Oracle Solaris 11.3 での Secure Shell アクセスの管理 の 第 1 章, Secure Shell の使用を参照してください。

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

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

表 8  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
表 9  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
デフォルト値: /system/volatile/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')
表 10  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 であり、今回の Oracle 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} で最初の引数をオーバーライドします。