22.SSL(TLS)で送受信してみよう
SMTP、POP3、IMAP4の各プロトコルでメールをやり取りする場合は、あまり知られたくないユーザIDやパスワードが平文でネットワーク内を流れてしまう。
閉じられたネットワーク(LAN)内であれば、あまり問題にはならないのだが、インターネットを通じてメールを送受信する場合は、ユーザIDと、それに対するパスワードを盗聴される危険性が十分にあることを考えなくてはいけない。
E-Post Mail Serverシリーズでは、SMTP、POP3、IMAP4での通信をSSL(TLS)を使って暗号化して通信することができる。それぞれ SMTP Over SSL、POP3 Over SSL、IMAP4 Over SSL と呼ばれる。※0
- ※0)なお2019年1月公開の20181224最新差分アップデートを適用した最新版では、SSLは廃止(デフォルトで使用禁止)され、TLS1.0〜TLS1.3に対応している。
- クライアント ←→ サーバー との間(SMTP/POP3/IMAP4)
- SMTPサーバー ←→ SMTPサーバー との間(SMTP)※2
- ※1)SMTP Over SSL と STARTTLS(SMTP)との違いだが、SMTP Over SSL が465番ポートで接続時点から"暗号通信"されるのに比べ、 STARTTLS は25番ポートのまま接続、最初は"プレーン通信"でネゴシェーション後に途中から"暗号通信"を開始するという基本的な違いがある。STARTTLS の設定方法はこの構築ガイド内ではふれていないが、設定の要点は、STARTTLS での受信時には SSL設定の証明書・鍵情報をそのまま用いる一方、送信時には「ESMTPで送信」を有効設定にするだけで STARTTLS での送信が可能になっている。
※2)相手先サーバーがSSL(TLS)で通信可能なときで、なおかつ E-Post側の「ゲートウェイテーブル」【gateway.dat】に、相手先サーバーが暗号化通信の465番ポートで指定されている場合にのみ通信が行われる。最近ではSMTPサーバー間の通信は、上記にあげたように25番ポートのまま接続できる STARTTLS 通信の方がよく使われることが多くなっている。
SSL(TLS)の設定手順
E-Post Mail Serverシリーズで、SSL(TLS)での通信を可能にするには、以下の手順にて設定を行うことになる。
- 「公開鍵証明書」と「秘密鍵」を作成する
- 「公開鍵証明書」と「秘密鍵」を本サーバーソフトウェアに設定する
- クライアント ←→ SMTPサーバー間でのSMTP over SSL(TLS)用IPアドレス/ポートの指定
- クライアント ←→ POP3サーバー間でのPOP3 over SSL(TLS)用IPアドレス/ポートの指定
- クライアント ←→ IMAP4サーバー間でのIMAP4 over SSL(TLS)用IPアドレス/ポートの指定
- SMTPサーバー ←→ SMTPサーバー間でのSMTP over SSL(TLS)用IPアドレス/ポートの指定
手順1.最初に「公開鍵証明書」と「秘密鍵」を作成する
まず、SSL(TLS) Key 作成キットを入手するため、「ダウンロード」公開ページの「各種ツール・ユーティリティ」に用意してある SSL-Key.zip をダウンロードし、解凍しよう。2015年12月以降、新しい openssl.exe を組み込んだSHA2(sha256)対応の SSL-Key-SHA2.zip が用意されている。最新OSにインストールするなら、まよわず新しい方のモジュールを選ぼう。
次に解凍されたファイル内にバッチファイル"CERTIFICATE.BAT"※2および設定ファイルの"openssl.cnf"があるのを確認する。
-
※2)自前で自己認証局を作成し、必要な「公開鍵証明書」と「秘密鍵」を作るために、用意されているバッチファイル。SSL(TLS)での通信が問題なく行えるかどうかを検証するだけであれば、自己認証局でも十分だ。自己認証局ではなく、正規の認証局に公開鍵証明書を発行依頼する場合は、「登録申請書」を認証局に提出し「公開鍵証明書」を発行してもらう必要がある。
このとき"CERTIFICATE.BAT"を使って"myreq.pem"を作成、
"myreq.pem"の内容を認証局のCSR情報に入力すると、認証局によっては「CSRの鍵長は2048bit(または1024bit)以上でなければならない」旨の警告メッセージが表示されることがある。そのような場合、
"CERTIFICATE.BAT"と設定ファイルの"openssl.cnf"を1個所ずつ修正、CSRの鍵長を2048bit(または1024bit)に変更した上で作成すればよい。なお、SSL-Key-SHA2.zip の方はCSRの鍵長は最初から2048bitに設定済みだ。
このバッチファイル"CERTIFICATE.BAT"を管理者権限で実行する。
実行すると、以下の例のように、質問内容が表示される。表示内容に応じて必要事項を逐次入力していけば「公開鍵証明書」および「秘密鍵」が作成される。
"CERTIFICATE.BAT"の実行例(赤のアンダーライン部が入力する箇所) 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]:Tokyo Locality Name (eg, city) []:Shinjuku-ku Organization Name (eg, company) [Internet Widgits Pty Ltd]:sample Organizational Unit Name (eg, section) []: Common Name (eg, YOUR name) []:sample.jp Email Address []: |
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]:Tokyo Locality Name (eg, city) []:Shinjuku-ku Organization Name (eg, company) [Internet Widgits Pty Ltd]:sample Organizational Unit Name (eg, section) []: Common Name (eg, YOUR name) []:sample.jp Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: |
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:'Tokyo' localityName :PRINTABLE:'Shinjuku-ku' organizationName :PRINTABLE:'sample' organizationalUnitName:PRINTABLE:'' commonName :PRINTABLE:'sample' 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 Mail Server に設定する
"CERTIFICATE.BAT"の実行によって作成されたファイルは、次の2ファイルである。
mycert.pem ---- 公開鍵証明書ファイル
mykey.pem ---- 秘密鍵ファイル
必要に応じて任意のフォルダに移動した後、E-Post Mail Controlを起動し、[SSL設定]タブを選択し、それぞれの「証明書ファイル」「秘密鍵ファイル」欄にフルパスでこのファイルを指定する。
手順3.クライアント←→SMTPサーバー間でのSMTP over SSL(TLS)用IPアドレス/ポートの指定
E-Post Mail Controlを開き、[サービス制御]タブを選択、[EPSTRS] の [詳細設定] ボタンをクリック。
「詳細設定(SMTP)」ダイアログボックスが表示されるので、「一覧のアドレスに応答する」を選択し、[IP address] 設定欄に応答する2組のIPアドレス/ポートを追加設定する。
-
例)
- 192.168.0.103 25 ※3← IP address 192.168.0.103 port 25 は暗号化しないで接続する通常のポート
- 192.168.0.103 465* ← IP address 192.168.0.103 port 465 はSSL(TLS)で暗号化して接続するためのポート
※3) ここではメールサーバに割り当てた静的なプライベートIPアドレスを指定しているが、IPアドレスをワイルドカード指定し、「*.*.*.* 25」「*.*.*.* 465*」の指定でもかまわない。
追加できたら[OK]ボタンをクリックして、ダイアログボックスを閉じる。その後、[EPSTRS] サービスの再起動を行う。
この後、メーラー側のアカウント設定で、SSL(TLS)通信の指定を行えば、クライアント←→サーバー間で暗号化通信によるメール送信を行えるようになる。※4
-
※4) 自前で認証局を作成し、「公開鍵証明書」と「秘密鍵」を自身で作成した場合、送信の始めに警告メッセージが表示されるものの、[許可]または[OK]ボタンをクリックすることで、メール送信が行われる。
手順4.クライアント←→POP3サーバー間でのPOP3 over SSL(TLS)用IPアドレス/ポートの指定
E-Post Mail Controlを開き、[サービス制御]タブを選択、[EPSTPOP3S] の [詳細設定] ボタンをクリック。
「詳細設定(POP3)」ダイアログボックスが表示されるので、「一覧のアドレスに応答する」を選択し、[IP address] 設定欄に応答する2組のIPアドレス/ポートを追加設定する。
-
例)
- 192.168.0.103 110 ※5← IP address 192.168.0.103 port 110 は暗号化しないで接続する通常のポート
- 192.168.0.103 995* ← IP address 192.168.0.103 port 995 はSSL(TLS)で暗号化して接続するためのポート
※5) ここではメールサーバに割り当てた静的なプライベートIPアドレスを指定しているが、IPアドレスをワイルドカード指定し、「*.*.*.* 110」「*.*.*.* 995*」の指定でもかまわない。
追加できたら[OK]ボタンをクリックして、ダイアログボックスを閉じる。その後、[EPSTPOP3S] サービスの再起動を行う。
この後、メーラー側のアカウント設定で、SSL(TLS)通信の指定を行えば、クライアント←→サーバー間で暗号化通信によるPOP3受信を行えるようになる。※6
-
※6) 自前で認証局を作成し、「公開鍵証明書」と「秘密鍵」を自身で作成した場合、POP3受信の始めに警告メッセージが表示されるものの、[許可]または[OK]ボタンをクリックすることで、POP3受信が行われる。
手順5.クライアント←→IMAP4サーバー間でのIMAP4 over SSL(TLS)用IPアドレス/ポートの指定
E-Post Mail Controlを開き、[サービス制御]タブを選択、[EPSTIMAP4S] の [詳細設定] ボタンをクリック。
「詳細設定(IMAP4)」ダイアログボックスが表示されるので、「一覧のアドレスに応答する」を選択し、[IP address] 設定欄に応答する2組のIPアドレス/ポートを追加設定する。
-
例)
- 192.168.0.103 143 ※7← IP address 192.168.0.103 port 143 は暗号化しないで接続する通常のポート
- 192.168.0.103 993* ← IP address 192.168.0.103 port 993 はSSL(TLS)で暗号化して接続するためのポート
※7) ここではメールサーバに割り当てた静的なプライベートIPアドレスを指定しているが、IPアドレスをワイルドカード指定し、「*.*.*.* 143」「*.*.*.* 993*」の指定でもかまわない。
追加できたら[OK]ボタンをクリックして、ダイアログボックスを閉じる。その後、[EPSTIMAP4S] サービスの再起動を行う。
この後、メーラー側のアカウント設定で、SSL(TLS)通信の指定を行えば、クライアント←→サーバー間で暗号化通信によるIMAP4受信を行えるようになる。※8
-
※8) 自前で認証局を作成し、「公開鍵証明書」と「秘密鍵」を自身で作成した場合、IMAP4受信の始めに警告メッセージが表示されるものの、[許可]または[OK]ボタンをクリックすることで、IMAP4受信が行われる。
手順6.SMTPサーバー←→SMTPサーバー間でのSMTP over SSL(TLS)用IPアドレス/ポートの指定
これまでの手順とは異なり、E-Post側のSMTPサーバーと他のSMTPサーバーとの間で、SMTP over SSL(TLS)通信を行う場合には、ゲートウェイ詳細設定ファイル(gateway.dat)を編集することになる。手順は次の通りだ。
E-Post Mail Controlを開き、[サーバー設定]タブを選択、[テーブル編集]ボタンをクリックする。
ゲートウェイ詳細設定ファイル(gateway.dat)が開くので、次のような書式で記述し、SSL(TLS)通信可能なサーバーを指定しておき、最後に保存して閉じる。
例) E-Post側のSMTPより、外部ドメイン sample2.jp 宛のメール送信を SMTP over SSL(TLS) でフォワード送信する場合
-
[gateway.dat]の例※9
sample2.jp,mail.sample2.jp,465*
以上で、SSL(TLS)通信を行うための設定が完了する。
上記にあげたいずれの手順でも、設定が完了した後は、必ず各サービス(EPSTRS,EPSTDS,EPSTPOP3S,EPSTIMAP4S)を再起動しておこう。
手順7.SSL(TLS)通信を使った送受信の確認
SSL(TLS)での通信はTelnetで試すことはむずかしいので、代表的なメーラーである Outlook Express で試してみることにする。
まずは、メールアカウントを追加する。
- Outlook Expressを起動し、メニューバーの [ツール] −[アカウント] を選択。
- [追加] → [メール] ボタンの順にクリックすると、インターネット接続ウィザードが起動されるので、[表示名] に名前を入力し [次へ] ボタンをクリック。
- [電子メールアドレス] には、メールアドレス(user1@sample.jp)を入力し [次へ] ボタンをクリック。
- 次に「受信メールサーバーの種類」として「POP3」を選択、[受信メール(POP3、IMAPまたはHTTP)サーバー]と[送信メール(SMTP)サーバー] の両方に、192.168.0.103(メールサーバに設定した静的IPアドレス)を入力し、[次へ] ボタンをクリック。
- [アカウント名] にメールアドレス(user1@sample.jp)とパスワードを入力し、[次へ] ボタンをクリック。
- 最後に[完了] ボタンをクリック。
- 登録終了後、メニューバーの [ツール] から[アカウント] -[メール]を選択。登録されたアカウントを選択し、[プロパティ]をクリック。
- 表示されたダイアログボックスの[サーバー]タブを選択。[このサーバーには、認証が必要] チェックボックスをオンにする。
- [詳細設定]タブを選択。「このサーバーはセキュリティで保護された接続必要」チェックボックスをオンにし、「送信メール(SMTP)」に "465" を入力。
「このサーバーはセキュリティで保護された接続必要」チェックボックスをオンにし、「受信メール(POP)」 "995" を入力。
最後に [OK] ボタンをクリックすることで、設定は完了する。
- 送信テスト用にメールを作成する。
- メールが作成できたら、「送信」ボタンをクリック。最初の送信時には「インターネットセキュリティの警告」メッセージが表示されるが、問題ないので、そのまま「はい」をクリックする。するとメールの送信が完了する。
- 送ったメールを受信する。メールが受信されていることを確認できればOK。