3-2.DovecotでPOP3 サーバの暗号化 POP3 over SSL/TLS(POP3s 995番ポート)対応(Ver 2.4~)

バージョン2.3以前の場合はこちら

 それでは最初の暗号化はDovecotです。
SMTPよりPOPサーバの方が設定にミスがあった場合、メールサーバとしての影響が少ないと考え、SMTPより先にPOPサーバを先に暗号化します。

目次
 dovecot.conf
  ssl
  ssl_cipher_list
 10-auth.conf
  auth_allow_cleartext
  auth_ssl_require_client_cert
 10-ssl.conf
  ssl_server_cert_file
  ssl_server_key_file
  ssl_min_protocol
  ssl_server_dh_file
  書き方 補足
 10-master.conf
  service-pop3-login
 再起動
 受信確認

dovecot.conf

ssl

SSLの暗号化通信を行うかを指定します。
まずは2-2.暗号化無しでメールの送受信ができるか確認した為「no」にしたのを「required」(暗号化必須)に戻します。

ssl = no
  ↓ ↓ ↓ ↓
ssl = required

ssl_cipher_list

Dovecotのデフォルトは ALL:!kRSA:!SRP:!kDHd:!DSS:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK:!RC4:!ADH:!LOW@STRENGTH
でもdovecot.confにはPROFILE=SYSTEMと書いてある。なんなん?
まぁ、バージョン2.3系で設定していた値であるPROFILE=SYSTEMで問題ないと思います。

#ssl_cipher_list = PROFILE=SYSTEM
  ↓ ↓ ↓ ↓
ssl_cipher_list = PROFILE=SYSTEM

10-auth.conf

auth_allow_cleartext

平文での認証許可設定
Dovecotのデフォルトはno
Dovecot CEから落としたコンフィグ例では、コメントアウト状態でyesと記載されてました。
ここでは暗号化させるので2-2でyesにしましたがnoにして平文での認証を無効にします。

auth_allow_cleartext = yes
  ↓ ↓ ↓ ↓
auth_allow_cleartext = no

auth_ssl_require_client_cert

クライアント証明書を使っての認証をするか?
Dovecotのデフォルトではnoとなっています。
また、ダウンロードした構成例ではコメントアウトされていますがnoが定義されています。
個人としてクライアント証明書を使う予定もないのでコメントアウトを外してnoにします。

#auth_ssl_require_client_cert = no
  ↓ ↓ ↓ ↓
auth_ssl_require_client_cert = no

10-ssl.conf

ssl_server_cert_file

サーバ証明書(公開鍵)を指定
バージョン2.3までは「ssl_cert」となっていたパラメータです。
Dovecotのデフォルトはnull。
Dovecot CEから落としたコンフィグ例では/etc/ssl/certs/dovecot.pemとなっている。
あくまでも例で記載されていたファイルであり、かつ証明書生成コマンドも実行していないので、そんなファイルはあるわけもなく。
なのでここはLet’s Encryptで作成した証明書+中間証明書(fullchain.pem)を指定します。

#ssl_server_cert_file = /etc/ssl/certs/dovecot.pem
  ↓ ↓ ↓ ↓
ssl_server_cert_file = /etc/letsencrypt/live/caramelsauce.info/fullchain.pem

ssl_server_key_file

秘密鍵を指定
バージョン2.3までは「ssl_key」となっていたパラメータです。
Dovecotのデフォルトはnulll。
Dovecot CEから落としたコンフィグ例では/etc/ssl/private/dovecot.pemとなっている。
上のサーバ証明書同様に秘密鍵もLet's Encryptの秘密鍵(privkey.pem)ファイルを参照するように変更します。

#ssl_server_key_file = /etc/ssl/private/dovecot.pem
  ↓ ↓ ↓ ↓
ssl_server_key_file = /etc/letsencrypt/live/redhill.jp/privkey.pem

ssl_min_protocol

使用許可するSSLプロトコルの一番古いバージョンの指定。
DovecotのデフォルトはTLSv1.2
Dovecot CEから落としたコンフィグ例ではTLSv1.3となっている。
 とりあえず今まで使っていたTLSv1.2に設定します。

#ssl_min_protocol = TLSv1.3
  ↓ ↓ ↓ ↓
ssl_min_protocol = TLSv1.2

ssl_server_dh_file

Diffie-Hellman法パラメータファイルのパス指定。
Dovecotのデフォルトはnull
 あたしゃ実はよく分かっていないのだが・・・(Diffie-Hellman法でググってみてください。)「共通鍵暗号方式の鍵の共有方法」という事らしい。
そしてこのDH法はDovecotのバージョン2.3.3以降はオプションンになったのでパラメータファイルのパスを記載しないといけないと。
(メールサーバ建ててから20年くらい経つけど今まで暗号化もせず、家からしか送受信できないようにしていたので知らんかった・・・)

アタイの端末では11分ほどかかりました。(DDR3でCPUがi3のPC。ディスクはSATA接続のSSD。)

openssl dhparam -out /etc/dovecot/dh.pem 4096
Generating DH parameters, 4096 bit long safe prime
......................+............+.......+.....
....+........+...................................
            ・
            ・
            ・


 opensslコマンドが終わったらssl_dhパラメータのコメントを外します。

#ssl_server_dh_file = /etc/dovecot/dh.pem
  ↓ ↓ ↓ ↓
ssl_server_dh_file = /etc/dovecot/dh.pem

10-master.conf

service pop3-login

POP3プロトコルに関する基本設定
 暗号化無しのDovecot設定で有効にした110番ポートを無効にする為「0」に指定します。
 また、pop3sのポート番号とsslのコメントアウトを外し有効化します。

service pop3-login {
  inet_listener pop3 {
    port = 110
  }
  inet_listener pop3s {
    #port = 995
    #ssl = yes
  }
}

      ↓  ↓  ↓  ↓

service pop3-login {
  inet_listener pop3 {
    port = 0
  }
  inet_listener pop3s {
    port = 995
    ssl = yes
  }
}

Dovecotにおいて参考にしたサイト:Dovecot documentation

dovecotサービス再起動

systemctl restart dovecot

一応ステータス確認しましょう。

systemctl status dovecot
● dovecot.service - Dovecot IMAP/POP3 email server
     Loaded: loaded (/usr/lib/systemd/system/dovecot.service; enabled; preset: disabled)
     Active: active (running) since Mon 2025-12-01 00:00:00 JST; 10s ago

・「Active」がactive(runnning)になっている事。
・最後に表示される部分(maillogの一部を表示)にerrorやwarningが出ていないことを確認します。

受信確認

 メーラーを使って受信の確認をしましょう。メーラーの大まかな設定は

POP3サーバ:192.168.0.1  (あくまでもサーバと同一セグメントからの接続とする)
認証方式:標準
POP3ポート:995
SSL/TLS受信:TLS 1.2
証明書の検証:しない  (同一セグメントからの接続なので証明書とのドメインが違うので「検証する」にするとエラー発生して(送)受信できない)

メーラーの設定が完了したら・・・
 1.携帯からでもいいから違うドメインから自分ドメイン宛にメールを送信する。
 2.メーラーから受信確認します。
これで携帯からのメールがメーラに受信出来たらOKです。
更にmaillogを確認してみて「TLS, session=<AbcDeFghIjkLMnOPq>」というようなログが出ていたら暗号化した状態でメールの受信ができているとみて問題ないと思います。