SMTP/POP3/IMAP4 over SSL/TLS設定方法 updated!

SMTP/POP3/IMAP4 over SSL/TLS とは、Webサイトで利用されているSSLを利用して、丸裸のSMTP/POP3/IMAP4の通信手順そのものを暗号化する手段です。E-Postシリーズでは、次の通信手順を暗号化することが可能です。
※なお2019年1月公開の20181224最新差分アップデートを適用した最新版では、SSLは廃止され、TLS1.0〜TLS1.3に対応しています。
  1. クライアント−サーバー間(SMTP/POP3/IMAP4)
  2. サーバー−サーバー間(SMTP)*1
    *1) 相手サーバーがSSL/TLSで通信可能で、「ゲートウェイテーブル」=【gateway.dat】に相手サーバーが指定されている場合に通信が行われます。
E-PostシリーズにてSSL/TLSを利用可能にするには、以下の手順にて設定を行います。
  1. 「公開鍵証明書」と「秘密鍵」を作成する。
  2. 「公開鍵証明書」と「秘密鍵」を本サーバーソフトウェアに設定する。
  3. クライアント−サーバー間でのSMTP over SSL/TLS用IPアドレス/ポートの指定
  4. クライアント−サーバー間でのPOP3 over SSL/TLS用IPアドレス/ポートの指定
  5. クライアント−サーバー間でのIMAP4 over SSL/TLS用IPアドレス/ポートの指定
  6. サーバー−サーバー間でのSMTP over SSL/TLS用IPアドレス/ポートの指定
1.「公開鍵証明書」と「秘密鍵」を作成する。
「ダウンロード」公開ページに用意してある SSL-Key-SHA2a.zipもしくはSSL-Key-SHA2.zip をダウンロードし、解凍してください。
(※2018年12月以降、新しい openssl.exe を組み込んだ SSL-Key-SHA2a.zipもしくはSSL-Key-SHA2.zip を用意してあります。E-Postシリーズの20181224最新差分アップデート[2019年1月公開]以降が適用された環境で、CSRの鍵長が2048bitであり、TLS1.3にも対応する必要がある場合は、必ずこちらのツールで「公開鍵証明書」と「秘密鍵」を作成するようにしてください。それ以前のE-Post旧バージョン環境でCSRの鍵長が512bitでよいケース向けに SSL-Key.zip も用意しています。)
解凍されたファイルの "CERTIFICATE.BAT" *2を実行し、質問に合わせて順次入力すれば、「秘密鍵」「証明書要求(Certificate Request or CSR)」「公開鍵証明書」が作成されます。
    *2)自前で認証局を作成し、必要な「公開鍵証明書」と「秘密鍵」を作る為に独自に用意したバッチファイルです。このバッチファイルでは中間証明書は作成されません。正規の認証局に公開鍵証明書を発行してもらう場合は、「登録申請書」を認証局に送付して「公開鍵証明書」を発行してもらってください。
    なお、中間証明書付きの証明書を作成して試したいときは "CERTIFICATE-internal.BAT" の方を使います。"CERTIFICATE-internal.BAT" ではルート証明書と中間証明書作成時に16桁以上のパスワードを登録する必要があります。パスワードが短すぎるとファイルが作成できませんので注意してください。作成後、rootCA/cacert.pem と interCA/cacert.pem を結合して ./cacert.pem を作成、opensslコマンドを使って、"openssl s_client -connect 192.168.xx.xx:465 -CAfile cacert.pem" とすることで接続確認ができます。
"CERTIFICATE.BAT" の実行例 (赤のアンダーライン部が入力例
自前での認証局(CA)の作成
     openssl req -config openssl.cnf -new -nodes -keyout cakey.pem -x509 -out cacert.pem

     Using configuration from openssl.cnf
     Loading 'screen' into random state - done
     Generating a 512 bit RSA private key
     ..++++++++++++
     ....++++++++++++
     writing new private key to 'key.pem'
     -----
     You are about to be asked to enter information that will be incorporated
     into your certificate request.
     What you are about to enter is what is called a Distinguished Name or a DN.
     There are quite a few fields but you can leave some blank
     For some fields there will be a default value,
     If you enter '.', the field will be left blank.
     -----
     Country Name (2 letter code) [AU]:JP ← 国
     State or Province Name (full name) [Some-State]:Saitama ← 都道府県
     Locality Name (eg, city) []:Kasukabe ← 市町村等
     Organization Name (eg, company) [Internet Widgits Pty Ltd]:XXX Corp. ← 会社名(組織名)
     Organizational Unit Name (eg, section) []:xxxx ← 部署等
     Common Name (eg, YOUR name) []:xxxx ← 担当者の氏名等
     Email Address []:xxx@domain.jp ← 担当者のメールアドレス
秘密かぎの作成と登録申請書の作成
     openssl req -config openssl.cnf -new -nodes -newkey rsa:512 -keyout mykey.pem -out myreq.pem

     Using configuration from openssl.cnf
     Loading 'screen' into random state - done
     Generating a 512 bit RSA private key
     ...++++++++++++
     .++++++++++++
     writing new private key to 'mykey.pem'
     -----
     You are about to be asked to enter information that will be incorporated
     into your certificate request.
     What you are about to enter is what is called a Distinguished Name or a DN.
     There are quite a few fields but you can leave some blank
     For some fields there will be a default value,
     If you enter '.', the field will be left blank.
     -----
     Country Name (2 letter code) [AU]:JP ← 国
     State or Province Name (full name) [Some-State]:Saitama ← 都道府県
     Locality Name (eg, city) []:Kasukabe← 市町村等
     Organization Name (eg, company) [Internet Widgits Pty Ltd]:XXX Corp. ← 会社名(組織名)
     Organizational Unit Name (eg, section) []:xxxx ← 部署等
     Common Name (eg, YOUR name) []:xxxx ← 担当者の氏名等
     Email Address []:xxx@domain.jp ← 担当者のメールアドレス

     Please enter the following 'extra' attributes
     to be sent with your certificate request
     A challenge password []:
     An optional company name []:
認証局(CA)によって署名した「公開鍵証明書」を発行
     openssl ca -config openssl.cnf -in myreq.pem -keyfile cakey.pem -cert cacert.pem -out mycert.pem

     Using configuration from openssl.cnf
     Loading 'screen' into random state - done
     Check that the request matches the signature
     Signature ok
     The Subjects Distinguished Name is as follows
     countryName :PRINTABLE:'JP'
     stateOrProvinceName :PRINTABLE:'Saitama'
     localityName :PRINTABLE:'Kasukabe'
     organizationName :PRINTABLE:'XXX Corp.'
     organizationalUnitName:PRINTABLE:'xxxx'
     commonName :PRINTABLE:'xxxx'
     Certificate is to be certified until May 6 00:29:27 2003 GMT (365 days)
     Sign the certificate? [y/n]:y

     1 out of 1 certificate requests certified, commit? [y/n]y
     Write out database with 1 new entries
     Data Base Updated
2.「公開鍵証明書」と「秘密鍵」を本サーバーソフトウェアに設定する
上記 "CERTIFICATE.BAT" の実行で作成されたファイルは、次の通り作成されています。
  1. 秘密鍵ファイル
    mykey.pem
  2. 証明書要求(Certificate Request or CSR)ファイル
    myreq.pem
    正規認証局(日本ジオトラストや日本ベリサインなど)にて証明書発行を依頼する場合に利用する
  3. 公開鍵証明書ファイル
    mycert.pem
SSL/TLS設定で利用するファイルは、秘密鍵ファイル(上記1)及び公開鍵証明書ファイル(上記3)のファイルです。
任意のフォルダに保存後、MailControl画面の「SSL設定」タブ画面での各項目にフルパス表記で指定して下さい。


3.クライアント−サーバー間でのSMTP over SSL/TLS用IPアドレス/ポートの指定
MailControl画面の「サービス制御」タブに切り替えいったん EPSTRSサービス を[停止]します。
「サービス制御」タブにある EPSTRSの[詳細]ボタンをクリックします。
「詳細設定」のダイアログボックスが表示されますので、「IP設定」の「一覧のアドレスに応答する」を選択し、"IP"欄と"port"欄に応答アドレス/ポートを入力、[追加]ボタンをクリックします。同様の方法でもう一つ追加し、合わせて2つの設定をしてください。
    (メールサーバ自体のIPアドレスが192.168.0.4の事例)
    192.168.0.4 25   ←− IP address 192.168.0.4 port 25 は暗号化しないで接続するためのポート
    192.168.0.4 465*  ←− IP address 192.168.0.4 port 465 はSSL/TLSで暗号化して接続するためのポート

追加ができたら[OK]ボタンをクリック。
EPSTRSサービス[開始]ボタンクリックし、サービスを再開します。 メールクライアントのアカウント設定でSSL/TLS通信の指定を行うと、クライアント−サーバー間の暗号化通信でメール送信を行えるようになります。*3
    *3)自前で認証局を作成し、「公開鍵証明書」と「秘密鍵」を自身で作成した場合、一部メーラーでは送信の始めに警告ダイアログボックスが表示されますが、「はい」をクリックすることでメール送信が実施されます。

4.クライアント−サーバー間でのPOP3 over SSL/TLS用IPアドレス/ポートの指定
MailControl画面の「サービス制御」タブに切り替えいったん EPSTPOP3Sサービス を[停止]します。
「サービス制御」タブにある EPSTPOP3Sの[詳細]ボタンをクリックします。
「詳細設定」のダイアログボックスが表示されますので、「IP設定」の「一覧のアドレスに応答する」を選択し、"IP"欄と"port"欄に応答アドレス/ポートを入力、[追加]ボタンをクリックします。同様の方法でもう一つ追加し、合わせて2つの設定をしてください。
    (メールサーバ自体のIPアドレスが192.168.0.4の事例)
    192.168.0.4 110   ←− IP address 192.168.0.4 port 110 は暗号化しないで接続するためのポート
    192.168.0.4 995*   ←− IP address 192.168.0.4 port 995 はSSL/TLSで暗号化して接続するためのポート

追加ができたら[OK]ボタンをクリック。
EPSTPOP3Sサービス[開始]ボタンクリックし、サービスを再開します。 メールクライアントのアカウント設定でSSL/TLS通信の指定を行うと、クライアント−サーバー間の暗号化通信でPOP3受信が行えるようになります。*4
    *4)自前で認証局を作成し、「公開鍵証明書」と「秘密鍵」を自身で作成した場合、一部メーラーでは送信の始めに警告ダイアログボックスが表示されますが、「はい」をクリックすることでメールボックスからの受信が実施されます。
5.クライアント−サーバー間でのIMAP4 over SSL/TLS用IPアドレス/ポートの指定
MailControl画面の「サービス制御」タブに切り替えいったん EPSTIMAP4Sサービス を[停止]します。
「サービス制御」タブにある EPSTIMAP4Sの[詳細]ボタンをクリックします。
「詳細設定」のダイアログボックスが表示されますので、「IP設定」の「一覧のアドレスに応答する」を選択し、"IP"欄と"port"欄に応答アドレス/ポートを入力、[追加]ボタンをクリックします。同様の方法でもう一つ追加し、合わせて2つの設定をしてください。
    (メールサーバ自体のIPアドレスが192.168.0.4の事例)
    192.168.0.4 143   ←− IP address 192.168.0.4 port 143 は暗号化しないで接続するためのポート
    192.168.0.4 993*   ←− IP address 192.168.0.4 port 993 はSSL/TLSで暗号化して接続するためのポート

EPSTIMAP4Sサービス[開始]ボタンクリックし、サービスを再開します。 メールクライアントのアカウント設定でSSL/TLS通信の指定を行うと、クライアント−サーバー間の暗号化通信でIMAP4受信が行えるようになります。*5
    *5)自前で認証局を作成し、「公開鍵証明書」と「秘密鍵」を自身で作成した場合、一部メーラーでは送信の始めに警告ダイアログボックスが表示されますが、「はい」をクリックすることでメールボックスからの受信が実施されます。
6.サーバー−サーバー間でのSMTP over SSL/TLS用IPアドレス/ポートの指定
MailControl画面の「サーバー設定」タブに切り替え[テーブル編集]ボタンをクリックします。
SMTPゲートウェイテーブルである【gateway.dat】が表示されますので、以下の記述例にならい、SSL/TLS通信可能なサーバーを指定して保存します。
    (ドメインsample2.jp宛のメール送信を SMTP over SSL/TLS で送信する事例)
    sample2.jp,mail.sample2.jp,465*

(関連FAQ)
SSL設定で中間CA証明書を設定するには
グローバルサイン認証局の証明書を利用したSSL設定事例
SSL/TLS設定で認証局が発行するSHA2(sha256)の証明書に対応しているか
SSL/TLS通信使用時にTLS1.3のみ有効にさせる方法について