【SNI(Server Name Indication)】postfixで利用

linux

久しぶりに新しい検証をしました。年を重ねるごとに若手社員が対応するので管理系が多くなってきてほんとウンザリ。。。

問い合わせ内容はこんな感じ

メールのSTART_TLSでの応答にワイルドカード証明書を追加してほしい

対象のサーバは既に1つのワイルドカード証明書を利用してSTART_TLSを応答させている。smtpsなどの通信はSSLアクセラレータで受けているため、サーバ側では実施していない。
設定は割愛するので、以下記事を参考に。

ChatGPTに頼って設定してるとだいぶドツボにハマって大変でした。AIより技術ブログに1票w

対象の環境

  • RHEL9.3(Red Hat Enterprise Linux)
  • postfix 3.5.x

SNIが利用可能なpostfixのバージョン

postfixのバージョン3.4以上
https://www.postfix.org/announcements/postfix-3.4.0.html

SNI(Server Name Indication)
1つのIPアドレスで複数のドメイン名のサーバー証明書を利用できるようにするTLSの拡張機能

設定

/etc/postfix/sni_maps

  • 新規でファイル作成
    • ワイルドカード証明書の場合、「*」記載では無いので注意
    • 順番:「サーバ名」 「鍵」 「サーバ証明書」
# OKパターン1
smtp.piteki-sub.com    /etc/pki/tls/private/piteki-sub.key /etc/pki/tls/certs/piteki-sub.crt
pop.piteki-sub.com     /etc/pki/tls/private/piteki-sub.key /etc/pki/tls/certs/piteki-sub.crt

# OKパターン2
.piteki-sub.com        /etc/pki/tls/private/piteki-sub.key /etc/pki/tls/certs/piteki-sub.crt

# NGパターン1
*.piteki-sub.com       /etc/pki/tls/private/piteki-sub.key /etc/pki/tls/certs/piteki-sub.crt

# NGパターン2
smtp.piteki-sub.com    /etc/pki/tls/certs/piteki-sub.crt /etc/pki/tls/private/piteki-sub.key
pop.piteki-sub.com     /etc/pki/tls/certs/piteki-sub.crt /etc/pki/tls/private/piteki-sub.key
  • 上記で作成したファイルをデータベース化
    • 「-F」オプションは必須らしい?(base64でエンコードする必要があるみたい)
$ postmap -F hash:/etc/postfix/sni_maps

/etc/postfix/main.cf

  • 以下の設定値を追記
tls_server_sni_maps = hash:/etc/postfix/sni_maps
  • configチェックして、再起動
$ postfix check
$ systemctl restart postfix

動作確認

  • 下記のようにサーバ名を追加した証明書の名前にしてアクセス
$ openssl s_client -connect piteki.com:587 -servername smtp.piteki-sub.com -starttls smtp

コメント