2026年11月07日(土) - 23:06 | カテゴリ:
Linux
今回の自宅サーバ刷新の目玉として、メールサーバのTLS対応があった。
以前の環境はオレオレ証明書を使ってSMTPS対応をしていたのだが、
コレだとTLSレポートが確実に失敗する問題があった。
自宅サーバを作り直すならメールのSSL/TLSもやろうと思い立ち、
メールサーバを設計し直して対応させてみた。
やる事は簡単で、Let’s Encryptをワイルドカード証明書で発行してPostfixに読み込ませるのだが、
“smtpd_tls_cert_file”と“smtpd_tls_key_file”の二つのみ設定し、“smtpd_tls_CAfile”は未設定にする。
“smtpd_tls_CAfile”はクライアント証明書を用いたSMTPS通信を行うときのCA設定のため不要となる。
正しく設定できていれば、次のコマンドでSTARTTLS・SMTPSの通信テストが出来る。
STARTTLSはTCP:25かTCP:587、SMTPSはTCP:465で通信するのでポート指定でコマンドを打てばOK。
実際に筆者が構築した自宅メール鯖に対して打ち込んでみたら、正常に証明書が返ってきた。
STARTTLS > openssl s_client -connect example.com:25 -starttls smtp -showcerts
SMTPS > openssl s_client -connect example.com:465 -showcerts |
 |
………
SMTP(TCP:25)、STARTTLS(TCP:25)、SMTPS(TCP:465)の対応が出来たので、
いよいよ本末のTLSレポート設定をDNSに入れることになる。
メールドメインに対して“_smtp._tls”の語句をつけたTXTレコードを作成し、
次の様にTLSレポートの受信アドレスなどを設定する。
| _smtp._tls.example.com. 3600 IN TXT “v=TLSRPTv1; rua=mailto:postmaster@example.com” |
………
後はTLSレポート送信に対応しているメールとSMTPSでメール送受信すればTLSレポートが送られてくる。
だが、コレが一番の問題でTLSレポート送信に対応しているメール鯖が皆無で、
筆者が調査した限りだとGmailしか送ってくれなかった。
TLSレポートの解析は自前で構築するか、SaaSを活用するかの2択になる。
筆者はDMARCレポート分析でも使っている、dmarcianを使って解析してみた。
オレオレ証明書でSMTPS通信がトラストチェーンエラーを出していたのが赤い部分、
Let’s Encryptのワイルドカード証明書でトラストチェーンも正しく認識させたのが緑の部分となる。
普段利用しているドメインなので送受信もしているのだが、それでもGmailだけしかレポートをくれなかった。
仮想ホストと他サーバの刷新も並行でやりつつ、プライベートのイベントもやったので時間が超かかったが、
今回の機能拡張でPostfixの仕組みとSTARTTLS・SMTPSの仕組みも読み解けたので非常に満足。
やはり、技術者たるものバタバタしている時でも技術は追いかけねばと思った。
« 続きを隠す