STARTTLSとは?基本の仕組みとトラブル事例を解説

STARTTLSの基本

STARTTLSとは

STARTTLSという用語を聞いたことがあるでしょうか。主にメールやFTP、LDAPなどで利用されており、平文で通信しているプロトコルを暗号化するための仕組みです。STARTTLSを利用することで、通信内容が暗号化されるため、第三者による盗聴や改ざんを防げます。

STARTTLSは STARTTLS がくっついた用語になります。 START は平文での通信を開始する際に使われるコマンドで、 TLS はTransport Layer Securityの略で、通信内容を暗号化するためのプロトコルです。つまり、 STARTTLS は平文での通信を暗号化通信に切り替えるための仕組みをそのまま意味しています。

STARTTLSの仕組みとSSL/TLSの違い

たとえばSMTPの場合、STARTTLSは25番ポートで使われます。接続してきたクライアントから EHLO というコマンドが送られてきたら、サーバーは 250 STARTTLS という応答を返します。これは、クライアントがSTARTTLSに対応していることを示しています。その後、クライアントが STARTTLS というコマンドを送ると、その後の通信内容が暗号化されます。

似たような仕組みとして、SSL/TLSが挙げられます。メール送信の場合は、465番ポートなどで定義されるSMTPSが知られています。SSL/TLSでは、最初の接続から暗号化通信が始まります。STARTTLSとSMTPSの違いは、STARTTLSが平文での通信を暗号化通信に切り替えるのに対し、SMTPSは最初から暗号化通信を行う点です。

SMTPSでは専用のポートを利用しますが、STARTTLSの場合は既存のポート(25番)を利用できます。STARTTLSは既存のインフラを活かしてセキュリティを高められるのがメリットです。ただし、最初の接続が平文で行われますので、その点を考慮しなければなりません。

STARTTLSでよく使用されるポート番号

STARTTLSは、既存の非暗号化通信を暗号化通信にアップグレードする技術であり、専用のポート番号を必要としません。そのため、従来からよく使われてきたポート番号がそのまま利用されます。

メール関連としては、以下のようになります。

プロトコル 用途 ポート番号
SMTP メール送信 25, 587
POP3 メール受信 110
IMAP メール受信 143

STARTTLSの設定と使用方法

STARTTLSの設定手順

メールサーバーとして有名なPostfixでSTARTTLSを有効にする手順を紹介します。

証明書の作成

まず、証明書を作成します。以下のコマンドを実行します。以下は10年間有効な独自の秘密鍵、証明書を作成する例です。もちろん、証明書の発行機関から取得・設定するのが本番運用では必要です。

openssl req -new -x509 -days 3650 -nodes -out /etc/postfix/cert.pem -keyout /etc/postfix/privkey.pem

設定ファイルの修正

Postfixの設定ファイル(/etc/postfix/main.cf)を修正します。以下のように設定します。

# SMTPサーバーとしてのTLS設定
smtpd_tls_cert_file = /etc/postfix/cert.pem
smtpd_tls_key_file = /etc/postfix/privkey.pem
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_tls_protocols = !SSLv2, !SSLv3

# SMTPクライアントとしてのTLS設定
smtp_tls_security_level = may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_tls_protocols = !SSLv2, !SSLv3

Postfixの再起動

設定ファイルを修正したら、Postfixを再起動します。利用している環境によってコマンドは異なりますので注意してください。

systemctl restart postfix

動作確認

たとえば、STARTTLSに対応しているGmail宛にメールを送信してみます。以下のようなログが残っていれば、STARTTLSが有効になっていることが確認できます。

postfix/smtp[11111]: TLS connection established to gmail-smtp-in.l.google.com: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)

クライアントの設定

メールクライアント側の設定としては、以下の設定が必要です。

  • ポート番号
    25番、587番ポートのいずれかを指定します。
  • 暗号化方式
    TLSまたはSTARTTLSを選択します。

GmailでのSTARTTLS設定

GmailをWebブラウザで利用している場合には、特別な設定は不要です。ただし、Gmailに対してOutlookやThunderbirdなどのメールクライアントからメールを送信する場合には、以下の設定が必要です。

  • IMAP設定
    • サーバー名
      imap.gmail.com
    • ポート番号
      993
    • 暗号化方式
      SSL/TLS
  • SMTP設定
    • サーバー名
      smtp.gmail.com
    • ポート番号
      587
    • 暗号化方式
      STARTTLS

STARTTLSの確認方法

STARTTLSになっているかどうか確認する際には、以下のコマンドを利用します。

echo -e "EHLO test\nQUIT" | openssl s_client -starttls smtp -connect example.com:25

以下のような結果が返ってくれば、STARTTLSが有効になっていることが確認できます。

Connecting to 111.111.111.111
CONNECTED(00000006)
depth=2 C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert Global Root G2
verify return:1
  :
---
Certificate chain
 0 s:CN=*.example.com
   i:C=US, O=DigiCert Inc, OU=www.digicert.com, CN=RapidSSL TLS RSA CA G1
   a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256
   v:NotBefore: Jul  1 00:00:00 2024 GMT; NotAfter: Jul  1 23:59:59 2025 GMT
 1 s:C=US, O=DigiCert Inc, OU=www.digicert.com, CN=RapidSSL TLS RSA CA G1
   i:C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert Global Root G2
   a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256
   v:NotBefore: Nov  2 12:24:33 2017 GMT; NotAfter: Nov  2 12:24:33 2027 GMT
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIGHzCCBQegAwIBAgIQDjDXxv3Ek7mNuy7r4KRyOTANBgkqhkiG9w0BAQsFADBg
  :
6/LkcQ3rRL9Oxs7aEEBHM1zhX8mWKtjnVD1teA3Ns1xJ2cg=
-----END CERTIFICATE-----
subject=CN=*.example.com
issuer=C=US, O=DigiCert Inc, OU=www.digicert.com, CN=RapidSSL TLS RSA CA G1
---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: RSA-PSS
Server Temp Key: ECDH, prime256v1, 256 bits
---
SSL handshake has read 3840 bytes and written 899 bytes
Verification: OK
---
New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
Server public key is 2048 bit
This TLS version forbids renegotiation.
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
---
250 STARTTLS
DONE

STARTTLSの証明書の確認と設定

STARTTLSに必要な証明書は、証明書の有効期限や発行元を確認する必要があります。以下のコマンドを利用して、証明書の情報を確認します。

openssl s_client -connect smtp.example.com:25 -starttls smtp | openssl x509 -noout -dates

結果は以下のように返ってきます。

Connecting to 111.111.111.111
depth=2 C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert Global Root G2
verify return:1
depth=1 C=US, O=DigiCert Inc, OU=www.digicert.com, CN=GeoTrust TLS RSA CA G1
verify return:1
depth=0 CN=smtp.example.com
verify return:1
250 STARTTLS
notBefore=Oct  2 00:00:00 2024 GMT
notAfter=Oct 23 23:59:59 2025 GMT

STARTTLSの代表的なトラブルと解決策

「must issue starttls command first」というエラーが出る

must issue starttls command first というエラーは、サーバー側がSTARTTLSを要求しているにもかかわらず、クライアント側がSTARTTLSを実行していない場合に発生します。このエラーを解消するためには、クライアント側の設定でSTARTTLSが有効になっているか確認してください。

「starttls extension not supported by server」というエラーが出る

starttls extension not supported by server というエラーは、上記とは逆でサーバー側がSTARTTLSをサポートしていない場合に発生します。このエラーを解消するには、サーバー側の設定でSTARTTLSが有効になっているか確認が必要です。

OutlookでのSTARTTLSトラブルと対策

クライアント側でよくあるのは、送信時にエラーになるというものです。この場合、まずはサーバーのアドレスとポート番号、暗号化方式を確認してください。また、設定が正しくてもサーバー側が対応していない場合もあります。この場合は、メールプロバイダーの設定を見直します。

もう一つは、Outlookのバージョンが古い場合に起こります。Outlook 2013では、送信のみSTARTTLSがサポートされています。受信を行う場合には、POP over SSLやIMAP over SSLを利用する必要があります。

STARTTLS導入によるセキュリティ向上

STARTTLSがメールセキュリティに与える影響

STARTTLSのメリットは、既存のリソース(25番ポートなど)を活かしてセキュリティを向上できる点です。ネットワーク設定を変更しないので、セキュリティポリシーを変更せずに済みます。STARTTLSは暗号化通信を行うので、メール送受信に関する盗聴や改ざんを防ぐことができます。

DKIMやSPF、DMARCとの連携

もちろん、STARTTLSだけでメールに関するセキュリティがすべて解決できる訳ではありません。メールを正しく、相手の届けるためのテクノロジーとしてSPFやDKIM、DMARCなどが知られています。これらの技術と組み合わせることで、よりセキュアなメール環境を構築できます。

Customers Mail CloudのSTARTTLSサポート

Customers Mail Cloud(CMC)では、送信先までの通信においてSTARTTLSによる暗号化をサポートしています。 より安全なメール送信を実現するためには、送信元からCMCまでの通信でもSTARTTLSを有効にすることが重要です。

例えば、Postfixをお使いの場合、STARTTLS対応の設定を行うことで、送信元からCMCへの通信が暗号化され、さらに安全なメール送信環境を構築できます。具体的な設定手順については、以下のマニュアルをご参照ください。

▶ PostfixでのSTARTTLS設定方法はこちら https://smtps.jp/docs/integrate/si/postfix/#starttls

これにより、メール通信全体のセキュリティが向上し、送信データの盗聴や改ざんのリスクを低減できます。安全な通信を確保するために、ぜひご確認ください。

まとめ

本記事では、STARTTLSの基本的な仕組みや設定方法、トラブル事例と解決策、他の技術と絡めたセキュリティ向上について解説しました。STARTTLSは、既存のリソースを活かしてセキュリティを向上できるため、メール送受信において重要な技術です。セキュリティを向上させるために、ぜひSTARTTLSを導入してください。

Customers Mail Cloudでは、STARTTLSをサポートしています。セキュリティを向上させるために、ぜひご利用ください。