変更履歴
- Rev. 0.7 : 2026年03月20日
- 新規作成
1 はじめに
本記事は、
Let's Encrypt
で取得したSSLサーバー証明書を使って、
基本設定後のメールサーバーPostfixとDovecotをSSL化する方法について
備忘録としてまとめたものです。
OSの入れ換えの度に、メールサーバーのPostfixとDovecotを再設定するわけですが、
今まで参考にしていたページが無くなってしまっていたりします。
ですので、このメモを残しておくことにしました。
本記事で示す設定は、表1-1に示すソフトウェア環境下においてのものです。
「SSL/TLS」は文脈によって、慣習の「SSL」と記述することもあることをお断りしておきます。
なお、PostfixとDovecotの基本設定については、次のページをご覧ください。
【RHEL 10: PostfixとDovecot】
RHEL 10におけるPostfixとDovecotの基本設定(備忘録)
2 Let's EncryptでのSSLサーバー証明書取得
PostfixとDovecotをSSL化するには、SSLサーバー証明書が必要です。
本章では、SSLサーバー証明書の取得について簡単に示します。
2.1 Let's Encryptの導入とSSLサーバー証明書の取得
Let's Encrypt の導入とSSLサーバー証明書の取得については、次のページをご覧ください。
【Let's Encrypt】
RHEL 10 + Apache 2.4にLet's Encryptをインストールする(2025年11月Snap版)
2.2 SSLサーバー証明書が保存される場所
Let's Encryptで発行されるSSLサーバー証明書は、
サーバー証明書と中間CA証明書の2つの証明からなります。
中間CA証明書とは、
電子証明書(デジタル証明書)を発行する認証局が、
自分自身の認証のために発行する電子証明書の1つです。
「中間証明書」とも言います。
CAとは「Certification Authority」の略で、認証局を意味します。
電子証明書はインターネット上で本人証明を行うために使用されており、
この証明書を発行する「信頼できる第三者」のことを認証局と言います。
他にも、暗号化用の秘密鍵も発行します。
サーバー証明書や秘密鍵は“/etc/letsencrypt/archive/”以下に保存され、
表2.2-1に示すパスにシンボリックリンクが作成されます。
シンボリックリンクのリンク先は、
SSLサーバー証明書を更新するたびに新しい証明書に変更されます。
|
1 2 3 4 5 6 |
# ls -l /etc/letsencrypt/live/www.mywebsite.jp/ total 4<br> -rw-r--r-- 1 root root 543 Apr 17 17:23 README lrwxrwxrwx 1 root root 45 Apr 17 17:23 chain.pem -> ../../archive/www.mywebsite.jp/chain1.pem lrwxrwxrwx 1 root root 49 Apr 17 17:23 fullchain.pem -> ../../archive/www.mywebsite.jp/fullchain1.pem lrwxrwxrwx 1 root root 47 Apr 17 17:23 privkey.pem -> ../../archive/www.mywebsite.jp/privkey1.pem |
3 Postfix
本章では、PostfixをSSL化する設定を示します。
SSL化前の基本設定は既に済んでいるものとして、SSL化する設定だけを示します。
PostfixのSSL化は、”/etc/postfix”ディレクトリ下にある次の2つのファイルで行います。
① “main.cf”
② “master.cf”
各項目の詳細な内容やパラメータ値は、下に示すページに記載されています。
そちらで確認していただければと思います。
3.1 main.cf
SSL化するための設定項目を表3.1-1に示します。
表最左欄の項目は、“main.cf”ファイル中にサンプル記述がないため、新規の追加項目となります。
3.1.1 SSLサーバー証明書のパス設定
下に示すよう
“smtpd_tls_cert_file”に「サーバー証明書+中間CA証明書」ファイルのあるパス、
“smtpd_tls_key_file”に、秘密鍵ファイルのパスを設定します。
各ファイルのパスは、2.2項で示しました。
|
1 2 3 4 5 6 7 8 9 10 11 |
# The full pathname of a file with the Postfix SMTP server RSA certificate # in PEM format. Intermediate certificates should be included in general, # the server certificate first, then the issuing CA(s) (bottom-up order). # smtpd_tls_cert_file = /etc/letsencrypt/live/<ドメイン名>/fullchain.pem # The full pathname of a file with the Postfix SMTP server RSA private key # in PEM format. The private key must be accessible without a pass-phrase, # i.e. it must not be encrypted. # smtpd_tls_key_file = /etc/letsencrypt/live/<ドメイン名>/privkey.pem |
3.1.2 SSL/TLS通信のための設定
基本的には、
下に示すものをそっくりそのまま“main.cf”ファイルに写します(ファイル最下部がよいでしょう)。
特に、接続キャッシュファイルのファイル形式は、RHEL旧版では“hash”でしたが、
RHEL 10では、“lmdb”に変更されていることに注意してください
(BSDとの著作権問題で、“hash”が使えなくなったとのこと)。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
########## TLS/SSL関連 ########## # TLSログレベルの設定 # 0:出力しない 1:TLSハンドシェイクと証明書情報 2:TLSネゴシエーションの全て smtpd_tls_loglevel = 1 # 暗号に関する情報を "Received:" メッセージヘッダに含める smtpd_tls_received_header = yes # 接続キャッシュファイルの指定 smtpd_tls_session_cache_database = lmdb:${data_directory}/smtpd_scache # キャッシュの保持時間の指定 smtpd_tls_session_cache_timeout = 3600s |
3.2 master.cf
わたしがインストールしたPostfixの“master.cf”には、smtpsの設定がなく、
全く同じ内容のsubmissionの設定が2つありました。
ですので、RHEL 9の“master.cf”中のsmtpsの設定をコピー、 2番目のsubmissionと置き換えました。
下に示すものを、コピーすれば良いでしょう。
各パラメータの意味用途は、次のページでご確認すださい。
|
1 2 3 4 5 6 7 8 9 |
smtps inet n - n - - smtpd # -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes # -o smtpd_reject_unlisted_recipient=no # -o smtpd_client_restrictions=$mua_client_restrictions # -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject |
4 Dovecot
本章では、DovecotをSSL化する設定を示します。
SSL化前の基本設定は既に済んでいるものとして、SSL化する設定だけを示します。
本記事では、POP3S、IMAPSのポートを有効にし、
SSL化前に使用していたPOP3、IMAPは無効とする方法を示します。
4.1 SSLに関する設定
SSLに関する基本設定は、“/etc/dovecot/conf.d/10-ssl.conf”のファイルで行います。
4.1.1 SSLの有効化
“ssl”の項目が“no”だったら、“yes”または“required”に変更します。
|
1 2 3 4 5 6 |
# SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt> # disable plain pop3 and imap, allowed are only pop3+TLS, pop3s, imap+TLS and imaps # plain imap and pop3 are still allowed for local connections #ssl = no ⇓ ssl = yes |
4.1.2 SSLサーバー証明書のパス設定
下に示すよう
“ssl_cert”に「サーバー証明書+中間CA証明書」ファイルのあるパス、
“ssl_key”に秘密鍵ファイルのパスを設定します。
パス・パラメータ値直前の“<”文字は必須です。
|
1 2 3 4 5 6 |
# PEM encoded X.509 SSL/TLS certificate and private key. They're opened before # dropping root privileges, so keep the key file unreadable by anyone but # root. Included doc/mkcert.sh can be used to easily generate self-signed # certificate, just make sure to update the domains in dovecot-openssl.cnf ssl_cert = </etc/letsencrypt/live/<ドメイン名>/fullchain.pem ssl_key = </etc/letsencrypt/live/<ドメイン名>/privkey.pem |
4.2 SSLポートの有効化
IMAPS、POP3Sポート有効化は、
“/etc/dovecot/conf.d/10-master.conf”のファイルで行います。
4.2.1 IMAPの無効化とIMAPSの有効化
下に示すように、IMAPのポートを無効化し、IMAPSのポートを有効化します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
service imap-login { inet_listener imap { #port = 143 ⇓ port = 0 } inet_listener imaps { #port = 993 #ssl = yes ⇓ port = 993 # コメントイン ssl = yes # コメントイン } } |
4.2.2 POP3の無効化とPOP3Sの有効化
下に示すように、POP3のポートを無効化し、POP3Sのポートを有効化します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
service pop3-login { inet_listener pop3 { #port = 110 ⇓ port = 0 } inet_listener pop3s { #port = 995 #ssl = yes ⇓ port = 995 # コメントイン ssl = yes # コメントイン } } |
以上
本記事の元となっているWordで作成したPDFを
ページ最後に貼り付けました。
少しでも役に立てていただければ、うれしく思います。
このPDFファイルは、自由に配布されてもかまいません。
ただし、再配布の際には、
入手元と著者名は明らかにしてください。
なお、上のPDFファイルの内容、また本文中の記述に、
誤字や脱字、誤った内容の記述など見つかりましたら、
下に示すフォームでご連絡いただければ幸いです。

コメント