すべてのデプロイガイド デプロイ

メールサーバーのSSL/TLS(Postfix、Dovecot、Exchange)

Webサイトを保護するのと同じLet’s Encrypt証明書で、メール接続も暗号化できます。このガイドでは、最も一般的なメールサーバーへのTLS設定を解説します。

メールにTLSが必要な理由

TLSがなければ、メールトラフィック(パスワードやメッセージ内容を含む)は平文で送信されます:

  • SMTP(メール送信)— ポート25/587はデフォルトで暗号化されません
  • IMAP(メール受信)— ポート143はデフォルトで暗号化されません
  • POP3(メール受信)— ポート110はデフォルトで暗号化されません

TLSはHTTPSがWebトラフィックを暗号化するのと同じ方法で、これらの接続を暗号化します。最新のメールクライアントはTLSを期待しており、暗号化されていない接続についてユーザーに警告します。

証明書のセットアップ

GetHTTPSから取得した同じ証明書ファイルをWebサーバーとメールサーバーの両方に使用できます。ただし、証明書がメールサーバーのホスト名(例:mail.example.com)をカバーしている必要があります。

メールホスト名をカバーする証明書を取得する:

  1. GetHTTPSでmail.example.com(またはMXレコードが指すホスト名)を追加します
  2. Webドメインと一緒に含めることができます:example.com + www.example.com + mail.example.com
  3. ファイルをダウンロードします:fullchain.pemprivkey.pem

Postfix(SMTP)

/etc/postfix/main.cfを編集します:

# TLS for outbound mail (sending)
smtp_tls_security_level = may
smtp_tls_loglevel = 1

# TLS for inbound mail (receiving) — STARTTLS on port 25/587
smtpd_tls_cert_file = /etc/ssl/gethttps/fullchain.pem
smtpd_tls_key_file = /etc/ssl/gethttps/privkey.pem
smtpd_tls_security_level = may
smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_loglevel = 1

サブミッション(ポート587)用に/etc/postfix/master.cfを編集します:

submission inet n       -       y       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes

リロード: sudo systemctl reload postfix

Dovecot(IMAP/POP3)

/etc/dovecot/conf.d/10-ssl.confを編集します:

ssl = required
ssl_cert = </etc/ssl/gethttps/fullchain.pem
ssl_key = </etc/ssl/gethttps/privkey.pem
ssl_min_protocol = TLSv1.2
ssl_prefer_server_ciphers = no

ファイルパスの前の<に注意してください。Dovecotはこの構文でファイルの内容をインラインで読み込みます。

リロード: sudo systemctl reload dovecot

IMAP/POP3ポート

サービス暗号化なしSTARTTLS暗黙のTLS(推奨)
IMAP143143(アップグレード)993
POP3110110(アップグレード)995
SMTPサブミッション587587(アップグレード)465(smtps)

最新のメールクライアントは暗黙のTLSポート(993、995、465)に接続する必要があります。STARTTLSポートと併せて、DovecotとPostfixでこれらを設定してください。

メールTLSを検証する

# Test SMTP STARTTLS
openssl s_client -connect mail.example.com:587 -starttls smtp

# Test IMAP implicit TLS
openssl s_client -connect mail.example.com:993

# Test SMTP implicit TLS (smtps)
openssl s_client -connect mail.example.com:465

Verify return code: 0 (ok)と証明書の詳細が表示されることを確認してください。

更新

Let’s Encrypt証明書を更新する際は、ファイルを置き換えて、Webサーバーとメールサーバーの両方をリロードしてください:

sudo systemctl reload nginx      # web
sudo systemctl reload postfix    # SMTP
sudo systemctl reload dovecot    # IMAP

Certbotで--deploy-hookを使用している場合は、フックスクリプトにメールサーバーのリロードを追加してください。

よくある質問

WebとメールでSSL証明書を共用できますか?

はい。証明書のSAN(Subject Alternative Name)にメールサーバーのホスト名が含まれていれば可能です。MXがmail.example.comを指している場合、証明書のリクエスト時にその名前を含めてください。

Let’s Encryptはメールサーバーに使えますか?

はい。Let’s Encrypt証明書は、TLS対応のあらゆるサービスで動作する標準的なX.509証明書です。Webサーバー専用ではありません。証明書はHTTPS、SMTP、IMAP、その他何に使用されているかを認識しません。

メールプロトコルごとに別々の証明書が必要ですか?

いいえ。1つの証明書でSMTP(Postfix)、IMAP(Dovecot)、Webサーバーを同時に使用できます。すべてのサービスから同じfullchain.pemprivkey.pemを参照してください。

Microsoft Exchangeの場合は?

ExchangeはPFX/PKCS#12形式を使用します。PEMファイルをPFXに変換し、Exchange管理センター → Servers → Certificates → Importからインポートしてください。手順はIISの証明書インストールと同様です。

関連記事

はじめに 2026-05-08
無料SSL証明書の取得方法(ステップバイステップガイド)
Let's Encryptから5分で無料のSSL証明書を取得。ソフトウェアのインストール不要、アカウント作成不要。4つの方法、両方のチャレンジタイプ、6つのプラットフォームへのインストール、トラブルシューティングを網羅した完全ガイドです。
デプロイ 2026-05-08
NginxにSSL証明書をインストールする方法
NginxにSSL証明書をインストールするステップバイステップガイド。ファイルアップロード、完全なサーバーブロック設定、TLSベストプラクティス、HTTP/2、HSTS、リダイレクト設定、テスト、6つの一般的なエラーのトラブルシューティングを解説します。
SSL と証明書 2026-05-07
SSL証明書フォーマット:PEM、PFX、DERの違い
PEM、PFX/PKCS#12、DERの証明書フォーマットを解説。サーバーに必要なフォーマットとOpenSSLでの変換方法を紹介します。
ブラウザで無料 SSL 証明書を取得
インストール不要、アカウント不要。秘密鍵は常にデバイスに残ります。
証明書を取得