SecurityGatewayは、データを保護する最新暗号化技術を実装しています。 Transport Layer Security (TLS)としても知られるSecure Sockets Layer(SSL)プロトコルは、STARTTLS SMTP拡張で、メールを第3者による盗聴から保護する事ができます。SecurityGatewayのHTTPSはこれと同様の機能をウェブ上で実現します。
SSLプロトコル(Netscape Communications社開発)は、サーバ/クライアントインターネット通信を確保するための標準方式です。TCP/IP接続のためにサーバ認証、データの暗号化および任意のクライアント認証を提供します。さらに、SSLが現在の主要なブラウザに組み込まれるので、有効なデジタル証明書をサーバにインストールすると、SecurityGatewayに接続する時、接続しているブラウザのSSL機能を起動させます。メールクライアントを使用して接続する場合、SecurityGatewayはSSL/TLS上のSTARTTLS SMTP機能拡張をサポートします。しかしながら、最初、SSLを使用するために構成されるクライアントを持つ必要があり、機能拡張をサポートする必要があります-多くでサポートしていますが、すべてのメールクライアントがサポートするわけではありません。
メールとHTTPSの暗号化
SMTPとHTTPSにおいて、SSLとSTARTTLSサポートを有効にする
下記の証明書選択ボックスで「有効な」証明書を使用しSSL/TLSプロトコルおよびSTARTTLS拡張のサポートを有効にするには、このチェックボックスをクリックします。このオプションは、HTTPを使用しSecurityGatewayのウェブインターフェースにログインする場合、有効な証明書がアクティブである必要があります。このオプションはデフォルトで無効です。
使用可能な場合は常にSTARTTLSでメッセージを送信する
SecurityGatewayが送信するSMTPメッセージについてSTARTTLS拡張を使用することを試みる必要がある場合、このオプションをクリックします。SecurityGatewayが接続しているサーバが、STARTTLSをサポートしない場合、メッセージは、SSLを使用することなく通常に配信されます。このオプションはデフォルトで無効です。
SSLネゴシエーションが失敗した際、1時間だけSSLを使わずに再送信を行う
このオプションはSMTPセッション中にSSLエラーが発生したホストを一時的に許可リストにします。許可リストは1時間ごとにリセットされます。
新しい証明書を自動的に検出してアクティブ化する
このオプションを有効にすると、システムは夜間の保守プロセス中にチェックを実行します。アクティブな各証明書について、有効期限が後に切れる別の証明書がシステム上にあるかどうか、同じホスト名の証明書であるかどうか、すべての代替ホスト名を含むかどうかを確認します。そのような証明書が存在する場合、システムは自動的にその証明書をアクティブな証明書にします。この機能は、Let's Encryptなど、証明書を自動的に更新するスケジュール・タスクがシステム上にある場合に特に便利です。このオプションはデフォルトで有効になっている。
RequireTLSはメールの送信時TLSを必須とするようフラグ付けできるSMTP拡張です。TLSが不可能(またはTLS証明書の交換が不可能)の場合、メールは暗号化されずに送信するのではなく、エラーとして戻されます。RequireTLSの詳細な説明は: RFC 8689: SMTP Require TLS Optionを参照してください。
RequireTLSはデフォルトで有効ですが、RequireTLSの処理対象となるメッセージは新しいコンテンツフィルタアクションである「REQUIRETLS…のフラグを追加」でコンテンツフィルタによるフラグ付けされたものか、<local-part>+requiretls@domain.tld (例えばarvel+requiretls@mdaemon.com) 宛のメールだけです。他のメールは全て、サービスが無効であるかのように処理されます。メールをRequireTLSを使って送信するにはいくつかの条件があります。条件を満たせない場合メールは送られずにエラーとして戻されます。要件は次の通りです。
•RequireTLSが有効化されていること
•コンテンツフィルタアクションや"<localpart>+requiretls@..."アドレスで、メールへRequireTLS処理が必要というフラグ付けがされていること
•宛先ドメインのMXレコードがMTA-STSで検証済である事
•受取側のホストへの接続にSSL (STARTTLS)が使用されていること
•受取側のホストのSSL証明書がMXホスト名と一致しており、信頼するCAへ紐づけられていること
•受信メールサーバーがREQUIRETLSに対応しておりEHLOレスポンスを返す事ができること
•上記の要件を満たしていないメールは送信されず、送信者へ戻されます。
MTA-STS対応はデフォルトで有効化されており、RFC 8461: SMTP MTA Strict Transport Security (MTA-STS)にて詳細をご確認頂けます。
SMTP MTA Strict Transport Security (MTA-STS)は、メールサービスプロバイダー(SPs)側でメールを受信するにあたり、セキュアなSMTP接続が行えるトランスポート層レベルのセキュリティTransport Layer Security (TLS) に対応していることを宣言し、信頼のできるサーバ証明書を使用していない場合にメール送信側でメールを送信するかしないかを指定できる仕組みです。
管理しているドメインに対してMTA-STSを設定するには、HTTPSを使った通信でURL https://mta-sts.domain.tld/.well-known/mta-sts.txt("domain.tld"部分は、実際のドメイン名に置き換えてください)からMTA-STSポリシーファイルをダウンロードできるようにする必要があります。ポリシーファイルは、次のフォーマットで記載してください:
version: STSv1
mode: testing
mx: mail.domain.tld
max_age: 86400
modeパラメータには、"none", "testing", "enforce"の指定が可能です。mxパラメータには、MXホスト名を指定して下さい。サブドメインに対しては、"*.domain.tld"といったワイルドカードの使用もできます。max_ageの単位は秒で、一般的な値は 86400 (1日)か 604800 (1週間)です。
また、DNSサーバには、TXTレコードに、_mta-sts.domain.tld("domain.tld"は実際のドメイン名に置き換えてください)という登録が必要で、次のフォーマットで値を記述します。
v=STSv1; id=20200206T010101;
"id"の値は、ポリシーファイルの編集を行った際、都度変更してください。一般的にidには、タイムスタンプを使用します。
TLS Reportingはデフォルトで無効に設定されており、RFC 8460: SMTP TLS Reportingで議論されています。
TLS Reportingは、MTA-STSポリシーの取得やSTARTTLSを使ったセキュアな接続のネゴシエーションに失敗した通知を、MTA-STSを使用するドメインに行ないます。有効にすると、MDaemonは各MTA-STSを使用するドメインへその日の送信した(もしくは送信を試みた)メールのレポートを日次で送ります。 レポートに含む情報について、設定できる幾つかのオプションがあります。
ドメインのTLS Reportingを設定するには、 DKIM 署名を有効にし、DNS TXTレコードを _smtp._tls.domain.tld といった形式で作成します。"domain.tld"は実際のドメイン名に置き換えてください:
v=TLSRPTv1; rua=mailto:mailbox@domain.tld
mailbox@domain.tldの部分には、レポートメールを受信するメールアドレスをご指定下さい。
SecurityGatewayでSSL/TLSとHTTPSをサポートするには、 SSL/TLS証明書 (下記参照 )が必要です。 証明書とは、 認証局(CA )が発行する小さなファイルで 、クライアントまたはブラウザが目的のサーバーに接続していることを確認するために使用され、SSL/TLS/HTTPSを有効にしてそのサーバーへの接続を保護します。
このボックスは、作成したすべてのSSL証明書を一覧にします。SecurityGatewayは、自動署名される証明書を生成し、証明書の発行人またはCertificate Authority (CA:認証局)が証明書の所有者と同じである意味します。これは、完全に有効で、許可されますが、CAが信頼されたCAリストに示さないので、一部のユーザに、SecurityGatewayのHTTP URLに接続する時はいつでも、サイトに進み証明書をインストールする質問が表示されることがあります。証明書をインストールし有効なCAとしてSecurityGatewayドメインを信頼することに同意する場合には、今後、接続時のセキュリティ警告メッセージを確認する必要はありません。その手続きに完了する必要があるかどうか、使用しているブラウザ、どんなセキュリティ規制があるかなどに依存します。
SSL証明書の作成と削除
証明書を新規作成するには、証明書の選択ボックスの上部にあるツールバーの新規をクリックします。SSL証明書画面が開きます(下図参照)。 既存の証明書を削除するには、証明書を選択し、 削除を クリック します。
SSL証明書の有効化
SSL証明書をアクティブにするには、証明書の [アクティブ] チェックボックスを クリック し、 [保存]を クリックします 。
Let's Encrypt の設定
証明書の管理を自動化するために、Let's EncryptLetCAとして使用している場合は、Let's Encryptを設定するをクリックして、Let's Encrypt PowerShell更新ページを開き、「SecurityGatewayLetsEncrypt」フォルダに含まれる必要なPowerShellスクリプトを簡単に設定して実行できるようにします。詳細については、以下の「Let's Encryptを使用して証明書を管理する」を参照してください。
STARTTLS許可リスト
ここではSTARTTLSから除外するIPアドレス、ホスト、ドメインを指定します。STARTTLSはここで登録したエントリ宛のメールでは使用されず、STARTTLSを対象ホストやIPアドレスへ要求する事もありません。
STARTTLS要求リスト
STARTTLS要求リストの中のホストやIPアドレスに対するSMTP接続へはSTARTTLSを使用する必要があります。STARTTLSが使用できない場合や失敗した場合、メールの送信は行えません。
ここでは新しいSSL証明書を作成できます。証明書を作成するには、暗号化ページにある証明書の選択ツールバーで新規をクリックし、証明書の情報を入力します。終了したら、保存して閉じるをクリックし、新しい証明書を追加します。
証明書の作成
ホスト名
ユーザが接続するホスト名を入力します(例えば、"mail.example.com")。
団体/会社名
証明書を「所有する」団体または会社名を入力します。
代替えホスト名(複数指定はカンマ区切り)
SecurityGatewayは、各ドメインについて異なる証明書をサポートしません。すべてのドメインは、単一の証明書を共有する必要があります。ユーザが接続している代替えホスト名、および、この証明書を代替えホスト名にも適用する必要がある場合、カンマ区切りドメイン名を、ここに入力します。ワイルドカードが使用できます(例えば"*.example.com")。
暗号キーの長さ
この証明書で暗号化キーの必要なビット長を選択します。暗号キーは長くなるほど、データ転送がより安全です。ただし、すべてのアプリケーションが512より長いキーに対応しているわけではない点にご注意下さい。
国/地域
サーバが存在する国または地域を選択します。
SecurityGateway以外で生成された証明書を購入した場合でも、Microsoft管理コンソールでSecurityGatewayが使用する証明書ストアへインポートする事により、この証明書を利用する事ができます。証明書がWindowsへインポートされると、SecurityGateway上でも表示され、使用できるようになります。証明書は次の方法でインポートできます:
1.Windowsツールバーで、スタート » ファイル名を指定して実行... を選択し、mmc /a と入力します。
2.OKをクリックするか、Enterキーを押します。
3.Microsoft管理コンソールで、メニューバーからファイル » スナップインの追加/削除...をクリックします(又はCtrl+Mを押してください)
4.スナップインの追加/削除ダイアログで、証明書をクリックし、追加をクリックします。
5.証明書のスナップイン ダイアログで、コンピューターアカウントを選択し、次へをクリックします。
6.コンピューターの選択 ダイアログで、ローカルコンピューターを選択し、完了をクリックします。
7.OKをクリックします。
9. | 左側の証明書 (ローカルコンピュータ) で、インポートする証明書が自己発行の証明書だった場合は、信頼するルート証明機関をクリックし、証明書をクリックします。自己発行でない場合は、パーソナルをクリックしてください。 |
10. | メニューバーで アクション » 全てのタスク » インポート... を選択し、次へをクリックします。 |
11. | インポートする証明書のパスを入力(または必要に応じてブラウズボタンを使い)し、次へをクリックします。 |
12. | 次へをクリックし、完了をクリックします。 |
Let'sEncryptLet 'sEncryptは、安全なウェブサイトのための証明書の手動作成、検証、署名、インストール、および更新の現在の複雑なプロセスを排除するように設計された自動化プロセスを介して無料の証明書を提供するCAです。 暗号化] ページの[Let's Encryptの設定] をクリック すると、[Let's Encrypt PowerShell Update]ページが開き、[SecurityGatewayLetsEncrypt]フォルダに 含まれるPowerShellスクリプトを簡単に設定および実行できます。
Let's Encrypt PowerShellアップデート
証明書を管理するための Let's Encrypt の自動化プロセスの使用をサポートするために、「SecurityGatewayLetsEncrypt」フォルダに含まれる PowerShell スクリプトを簡単に構成および実行できるように、このページを提供します。このページを使用してスクリプトを構成および実行すると、http-01チャレンジを完了するために必要なファイルをSecurityGateway HTTP(templates)フォルダに置くなど、Let's Encryptのすべてが設定されます。証明書のドメインとしてHTTPサーバホスト名を使用し(このオプションが空白の場合は、デフォルトドメインを使用します)、証明書を取得し、Windowsに読み込み、SecurityGatewayのXMLRPC APIを使用して証明書を使用するようにSecurityGatewayを設定します。
注:Let's Encryptを使用するには、PowerShell5.1以上と.NET Framework4.7.2以上が必要です。さらに、SecurityGateway のHTTP ポート設定がポート 80 をリッスンするように設定されている必要があります。
LetsEncrypt証明書を自動的に更新する
Let's Encryptスクリプトを使用してSSL/TLS証明書を自動的に作成および更新する場合は、このチェックボックスをクリックします。証明書は、以下の「更新間隔」の設定に従って、10~60日ごとに更新されます。
現在のパスワード
パスワードを含めると、スクリプトが SG XML API にアクセスするための API トークンが作成されます。パスワードは保存されません。設定を更新するだけの場合は、この設定は必要ありません。
ホスト名 (複数のホスト名をコンマで区切ります)
証明書に代替ホスト名を設定する場合は、ここでホスト名をカンマ区切りで指定します。このリストにHTTP サーバーホスト名を含める必要はありません。たとえば、ホスト名が「mail.example.com」で、代替ホスト名として「imap.example.com」を使用する場合は、ここに「imap.example.com」を含めるだけでよい。代替ホスト名を使用したくない場合は、このオプションを空白のままにします。注意:ホスト名を含める場合、Let's EncryptからのHTTPチャレンジは、サーバーがそのホスト名を制御していることを検証するために、ホスト名ごとに完了する必要があります。チャレンジがすべて完了していない場合、処理は失敗します。
通知用管理者メールアドレス
Let's Encrypt の更新中にエラーが発生した場合に通知を希望する場合は、ここに管理者の電子メール アドレスを指定します。
ECDSA証明書を使用する
RSA 証明書ではなく ECDSA ベースの証明書を使用する場合は、このボックスにチェックを入れます。
ステージングサーバーを使用する
Let's Encrypt をテストする必要がある場合に使用します。
アップデート間隔 (10-60)
このオプションを使用して、証明書の更新頻度を10~60日の間で指定します。デフォルト設定は60日です。
今すぐ実行
スクリプトを直ちに実行するには、このボタンをクリックします。
古い証明書の削除(有効期限が30日以上前)
デフォルトでは、SecurityGatewayは、30日以上前に失効した古い証明書を削除します。自動的に削除したくない場合は、このボックスのチェックを外します。
LetsEncryptスクリプトログファイルの表示
このボタンをクリックすると、LetsEncryptスクリプトのログファイルが表示されます。
次回更新までの日数
上記の更新間隔 (10 ~ 60) の設定に従って、証明書が自動的に更新されるまでの残り日数が表示されます。
コマンドライン
スクリプトの実行時に使用されるコマンド ライン テキストが表示されます。テキストは、このページで変更を加えるとリアルタイムで更新されます。