この用語をシェア
STARTTLSとは
STARTTLSは、平文(暗号化されていない)接続をTLS暗号化接続にアップグレードするコマンドです。RFC 3207(SMTP用)およびRFC 2595(IMAP/POP3用)で標準化されており、既存のポート番号(25、587、143など)で暗号化通信を実現します。
STARTTLSの動作
通信フロー
1. クライアント: 平文で接続
→ EHLO client.example.com
2. サーバー: STARTTLS対応を通知
← 250-mail.example.com
← 250-STARTTLS
← 250 8BITMIME
3. クライアント: 暗号化を要求
→ STARTTLS
4. サーバー: TLS開始を承認
← 220 Ready to start TLS
5. TLSハンドシェイク実施
[暗号化通信開始]
6. 以降の通信はすべて暗号化
Implicit TLSとの違い
| 項目 | STARTTLS | Implicit TLS |
|---|---|---|
| 接続開始 | 平文 | 最初から暗号化 |
| ポート(SMTP) | 25, 587 | 465 |
| ポート(IMAP) | 143 | 993 |
| 推奨度 | ✅ 推奨(現代標準) | ⚠️ 一部で使用 |
自社メールサーバー運用への応用
Postfixでの設定例
# main.cf - STARTTLS設定
smtpd_tls_security_level = may # STARTTLSを提供(強制はしない)
smtpd_tls_cert_file = /etc/letsencrypt/live/mail.example.com/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.example.com/privkey.pem
smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
# Submission(ポート587)ではSTARTTLS強制
# master.cf
submission inet n - y - - smtpd
-o smtpd_tls_security_level=encrypt
Dovecot(IMAP/POP3)での設定
# /etc/dovecot/conf.d/10-ssl.conf
ssl = yes
ssl_cert =
セキュリティベストプラクティス
- Submission(ポート587)ではSTARTTLS必須にする
- TLS 1.2以上のみを許可(TLS 1.0/1.1は脆弱性あり)
- 有効な証明書を使用(Let's Encryptなど)
- 強固な暗号スイートを設定
関連ブログ記事
まとめ
STARTTLSは、既存ポートで暗号化通信を実現する標準的な方法です。自社メールサーバーでは、Submission(ポート587)でSTARTTLSを必須化し、ポート25ではオプション提供することで、セキュアなメール送信環境を構築できます。TLS 1.2以上の使用と有効な証明書の導入が重要です。
