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エラーが発生した際対象ホストを一時的にホワイトリストへ追加します。ホワイトリストは毎時間リセットされます。

REQUIRETLS (RFC 8689)を有効化

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レスポンスを返す事ができること

上記の要件を満たしていないメールは送信されず、送信者へ戻されます。

Enable MTA-STA (RFC 8461)を有効化

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)を有効化

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の部分には、レポートメールを受信するメールアドレスをご指定下さい。

証明書の選択

このボックスは、作成したすべてのSSL証明書を一覧にします。SecurityGatewayは、自動署名される証明書を生成し、証明書の発行人またはCertificate Authority (CA:認証局)が証明書の所有者と同じである意味します。これは、完全に有効で、許可されますが、CAが信頼されたCAリストに示さないので、一部のユーザに、SecurityGatewayのHTTP URLに接続する時はいつでも、サイトに進み証明書をインストールする質問が表示されることがあります。証明書をインストールし有効なCAとしてSecurityGatewayドメインを信頼することに同意する場合には、今後、接続時のセキュリティ警告メッセージを確認する必要はありません。その手続きに完了する必要があるかどうか、使用しているブラウザ、どんなセキュリティ規制があるかなどに依存します。

SSL証明書の作成

新規の証明書を作成するためには、証明書選択ボックス上部ツールバーで新規をクリックし、SSL証明書を開きます。既存の証明書を削除するには、証明書を選択し削除をクリックします。

SSL証明書の使用

SSL証明書をアクティブにするには、エントリを選択して[アクティブにする]をクリックします。

STARTTLSホワイトリスト

ここではSTARTTLSから除外するIPアドレス、ホスト、ドメインを指定します。STARTTLSはここで登録したエントリ宛のメールでは使用されず、STARTTLSを対象ホストやIPアドレスへ要求する事もありません。

STARTTLS要求リスト

STARTTLS要求リストの中のホストやIPアドレスに対するSMTP接続へはSTARTTLSを使用する必要があります。STARTTLSが使用できない場合や失敗した場合、メールの送信は行えません。

SSL証明書

ここでは新しいSSL証明書を作成できます。証明書を作成するには、暗号化ページにある証明書の選択ツールバーで新規をクリックし、証明書の情報を入力します。終了したら、保存して閉じるをクリックし、新しい証明書を追加します。

証明書の作成

ホスト名

ユーザが接続するホスト名を入力します(例えば、"mail.example.com")。

団体/会社名

証明書を「所有する」団体または会社名を入力します。

代替えホスト名(複数指定はカンマ区切り)

SecurityGatewayは、各ドメインについて異なる証明書をサポートしません。すべてのドメインは、単一の証明書を共有する必要があります。ユーザが接続している代替えホスト名、および、この証明書を代替えホスト名にも適用する必要がある場合、カンマ区切りドメイン名を、ここに入力します。ワイルドカードが使用できます(例えば"*.example.com")。

暗号キーの長さ

この証明書で暗号化キーの必要なビット長を選択します。暗号キーは長くなるほど、データ転送がより安全です。ただし、すべてのアプリケーションが512より長いキーに対応しているわけではない点にご注意下さい。

国/地域

サーバが存在する国または地域を選択します。

サードパーティーCAで発行された証明書の使用

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's Encryptを使った証明書の管理

SecurityGatewayで SSL/TLSとHTTPS を使用するためには、 SSL/TLS証明書 が必要です。証明書は 認証局 (CA) で発行される小さなファイルで、サーバーへ接続するクライアントやブラウザから検証を行ったり、サーバーへの接続にSSL/TLS/HTTPSで安全な接続を行ったりするのに使用します。Let's Encrypt は手動での証明書作成、署名、検証、インストール、更新にかかる複雑な処理を自動化できる無償の証明書を発行している認証局です。

Let's Encryptで証明書の管理を自動化するため、SecurityGatewayでは"SecurityGateway\LetsEncrypt"フォルダへPowerShellスクリプトを用意しています。スクリプトへ依存する、ACMESharpモジュールにはPowerShell 3.0 が必要で、スクリプトはWindows2003では動作しません。さらに、SecurityGateway HTTPサービスはポート80番を使用する必要があり、HTTPチャレンジが完了しないとスクリプトが動作しません。使用する際にはスクリプトを実行する前にPowerShellの実行ポリシーを設定しておく必要があります。スクリプトを実行すると、http-01にチャレンジに必要なファイルをSecurityGateway HTTP (テンプレート)フォルダへ格納するといった Let's Encryptで必要な全ての処理が行われます。SecurityGatewayで設定されたFQDNは証明書用のデフォルトドメインとして、証明書の取得、Windowsへのインポート、SecurityGatewayのXMLRPC APIを使った証明書の設定で使用されます。

デフォルトドメインのFQDN設定がSecurityGatewayを指していない場合、このスクリプトは動作しません。証明書で関連するホスト名を設定する事もできます。関連するホスト名はコマンドラインで渡す必要があります。

使用例:

.\SGLetsEncrypt.ps1 -UserName admin@domain.com -Password Password1 -AlternateHostNames mail.domain.com,imap.domain.com,wc.domain.com -ErrorEmailTo admin@domain.com

AlternateHostNames の一覧へデフォルトドメインのFQDNを入れる必要はありません。例えば、デフォルトドメインが "example.com"で、FQDNが "mail.example.com"だった場合、関連するホスト名として"imap.example.com"を指定したとします。スクリプトを実行すると、"imap.example.com" だけが関連するホスト名として認識されます。さらに、関連するホスト名は、それぞれがHTTPチャレンジをパスする必要が生じます。チャレンジが完了しないと、処理が完了しません。

関連するホストを使用しない場合は、コマンドラインへ –AlternateHostNames パラメータを使用する事ができません。エラー発生時にメール通知が送信されないようにするには、コマンドラインで –ErrorEmailToを使用しないでください。