3-2.DovecotでPOP3 サーバの暗号化 POP3 over SSL/TLS(POP3s 995番ポート)対応(Ver 2.4~)
それでは最初の暗号化は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>」というようなログが出ていたら暗号化した状態でメールの受信ができているとみて問題ないと思います。
