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

SMTP/POP3/IMAP4 over SSL/TLS とは、Webサイトで利用されているSSLを利用して、丸裸のSMTP/POP3/IMAP4の通信手順そのものを暗号化する手段です。E-Postシリーズでは、次の通信手順を暗号化することが可能です。
  1. クライアント−サーバー間(SMTP/POP3/IMAP4)
  2. サーバー−サーバー間(SMTP)※1
    ※1) 相手サーバーがSSLで通信可能で、「ゲートウェイテーブル」=【gateway.dat】に相手サーバーが指定されている場合に通信が行われます。
E-PostシリーズにてSSLを利用可能にするには、以下の手順にて設定を行います。
  1. 「公開鍵証明書」と「秘密鍵」を作成する
  2. 「公開鍵証明書」と「秘密鍵」をE-Postに設定する
  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.「公開鍵証明書」と「秘密鍵」を作成する
キーを作成するには、あらかじめWindowsマシン上で作業を行う必要があります。
「ダウンロード」公開ページに用意してある SSL-Key-SHA2a.zipもしくはSSL-Key-SHA2.zip をダウンロードし、解凍してください。より新しい openssl.exe が組み込まれています。
Windowsマシン上で、解凍されたファイルの中から "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.「公開鍵証明書」と「秘密鍵」を E-Post に設定する
上記1の手順でバッチファイルを実行した結果、以下のファイルが作成されています。
  1. 秘密鍵ファイル
    mykey.pem
  2. 証明書要求(Certificate Request or CSR)ファイル
    myreq.pem
    正規認証局(日本ジオトラストや日本ベリサインなど)にて証明書発行を依頼する場合に利用する
  3. 公開鍵証明書ファイル
    mycert.pem
SSL設定で利用するファイルは、A.秘密鍵ファイルと C.公開鍵証明書ファイルの2ファイルです。
続いて作成されたファイルを次の方法でメールサーバ・SMTPサーバに設定します。
  1. E-POSTコントロールセンターのシステム管理にあるアップロードファイルを指定する機能か、またはSSHなどを使ってメールサーバマシンのコンソールにログインし、プログラムインストールフォルダの既定値である /usr/local/mta/bin フォルダに、証明書ファイル "mycert.pem" と、秘密鍵ファイル "mykey.pem" をコピーします。または任意のフォルダを作成してそのフォルダにファイルをコピーしてもかまいません。
  2. 続いてE-POSTコントロールセンターのメールサーバ管理から[システム管理メニュー]をクリック、[SSL設定]を開きます。
  3. 「証明書ファイル」および「秘密鍵ファイル」の各欄にフルパスで指定します。
    例)「証明書ファイル」/usr/local/mta/bin/mycert.pem
      「秘密鍵ファイル」/usr/local/mta/bin/mykey.pem
  4. 最後にE-POSTコントロールセンターのメールサーバ管理から[システム管理メニュー]をクリック、[サービス制御]をクリックして表示される「サービス制御」画面からいったん各サービスを[停止]し[開始]させることで各サービスを再起動します。

3.クライアント−サーバー間でのSMTP over SSL/TLS用IPアドレス/ポートの指定
E-POSTコントロールセンターのメールサーバ管理から[システム管理メニュー]をクリック、[SMTP受信詳細]を開きます。
表示される「SMTP受信詳細設定」画面で「一覧のアドレスに応答する」を選択し、"IP"設定欄に2つの応答アドレス/ポートを追加設定します。
    (例)
    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で暗号化して接続するためのポート
追加したら「設定する」ボタンをクリック。最後に epstrd サービスの再起動を行ってください。
この結果、メールクライアント側のアカウント設定でSSL/TLS通信の指定を行うと、クライアント−サーバー間の暗号化通信でメール送信を行えるようになります。※3
    ※3) 自前で認証局を作成し「公開鍵証明書」と「秘密鍵」を自身で作成した場合、送信の始めにOE側に次のような警告ダイアログが表示されますが、「はい」をクリックすることでメール送信が実施されます。

4.クライアント−サーバー間でのPOP3 over SSL/TLS用IPアドレス/ポートの指定
E-POSTコントロールセンターのメールサーバ管理から[システム管理メニュー]をクリック、[POP3詳細]を開きます。
表示される「POP3詳細設定」画面で「一覧のアドレスに応答する」を選択し、"IP"設定欄に2つの応答アドレス/ポートを追加設定します。
    例)
    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で暗号化して接続するためのポート
追加したら「設定する」ボタンをクリック。最後に epstpop3d サービスの再起動を行ってください。
この結果、メールクライアント側のアカウント設定でSSL通信の指定を行うと、クライアント−サーバー間の暗号化通信でメール送信を行えるようになります。※4
    ※4) 自前で認証局を作成し「公開鍵証明書」と「秘密鍵」を自身で作成した場合、送信の始めに警告ダイアログが表示されるケースがあります。「はい」をクリックすることでメールボックスからの受信が実施されます。
5.クライアント−サーバー間でのIMAP4 over SSL/TLS用IPアドレス/ポートの指定
E-POSTコントロールセンターのメールサーバ管理から[システム管理メニュー]をクリック、[IMAP4詳細]を開きます。
表示される「IMAP4詳細設定」画面で「一覧のアドレスに応答する」を選択し、"IP"設定欄に2つの応答アドレス/ポートを追加設定します。
    例)
    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で暗号化して接続するためのポート
追加したら「設定する」ボタンをクリック。最後に epstimap4d サービスの再起動を行ってください。
この結果、メールクライアント側のアカウント設定でSSL/TLS通信の指定を行うとクライアント−サーバー間の暗号化通信でメール送信を行えるようになります。※5
    ※5) 自前で認証局を作成し「公開鍵証明書」と「秘密鍵」を自身で作成した場合、送信の始めに警告ダイアログが表示されるケースがあります。「はい」をクリックすることでメールボックスからの受信が実施されます。
6.サーバー−サーバー間でのSMTP over SSL/TLS用IPアドレス/ポートの指定

E-POSTコントロールセンターのメールサーバ管理から[システム管理メニュー]をクリック、[基本設定]にある[ゲートウェイ詳細]ボタンをクリックし、表示される 【gateway.dat】 を編集します。
続いて引用行に書かれている書式例に合わせて、SSL/TLS通信可能なサーバーを指定して保存します。
    例) SMTPサーバーより、ドメインsample2.jp宛のメール送信を SMTP over SSL/TLS で送信する場合
    sample2.jp,mail.sample2.jp,465*
(関連FAQ)
SSL設定で中間CA証明書を設定するには
グローバルサイン認証局の証明書を利用したSSL設定事例
SSL/TLS設定で認証局が発行するSHA2(sha256)の証明書に対応しているか
SSL/TLS通信使用時にTLS1.3のみ有効にさせる方法について