5.Postfixを使ってSMTPサーバを暗号化する(クライアントとして※)

 ここではSMTPクライアント(ノードとしてはSMTPサーバなんだけど、クライアントとして動作するという意味で、外部のドメインから自分のドメイン宛のメールの受信)の暗号化です。
分かりづらいよね・・・(w
アタイも理解するのに時間がかかった。ただ「クライアント」って書くとメーラーソフトをイメージしてしまうので話が分からなくなるんですよね。

4.Postfixを使ってSMTPサーバの暗号化でも同じことを書いてあるので読み飛ばしてもらってよいです。

ここで知っておいてほしいのは、概要ページにも記載してますが、SMTPサービスとして2種類の暗号設定をしないといけません。
 1. SMTPサービスのサーバとして、メールを受信する際の暗号化設定。
    (main.cfファイルの「smtpd_xxxx」のパラメータ)

 2. SMTPサービスのクライアントとして、メールを送信する際の暗号化設定。
    (main.cfファイルの「smtp_xxxx」のパラメータ)

 このページでは「2.SMTPサービスのクライアント」としての設定を記載していきます。

上の図でピンクにした部分、SMTPサービスがクライアントとなって他のドメインのSMTPサーバーへ送信する際の暗号化です。
くどいように別のページでも記載していますが、相手のSMTPサーバーも暗号化に対応していないと平文で送る設定にします。

 なので基本的には相手のSMTPサーバの25番ポートに対して伺いを立てて、相手のサーバがSTARTTLSに対応していれば暗号化してメールを送信する。という事になります。

では設定に入りましょう。
4.Postfixを使ってSMTPサーバの暗号化では「smtpd_〇〇」のパラメータを設定していきましたが、クライアントの設定は「smtp_〇〇」のパラメータを変更していきます。

目次
 main.cfの修正
  smtp_tls_security_level
  smtp_tls_CApath
  smtp_tls_CAfile
  smtp_tls_ciphers
  smtp_tls_protocols
  smtp_tls_loglevel

設定ファイルmain.cfの修正

smtp_tls_security_level   736行目

デフォルトのままで修正なしだけど説明の為記載

SMTPサービスのクライアントとして送信する際のメールを暗号化するかどうか
下の表にも記載しましたが、送信先のメールサーバが暗号化に対応しているとは限らない為、暗号化の強制はせず「may」を設定します。

smtp_tls_security_level = may
オプション説明
mayTLSを有効化(暗号化の適用はクライアントに依存)
日和見TLS。つまりサーバー側がSTARTTLSをサポートしていれば暗号化される。
とはいってもサーバー側が対応している暗号化プロトコルに合わせる為、こちら側のsmtp_〇〇の設定によってはSSLv2という暗号化したところで・・・というプロトコルでの暗号化になる可能性もある。
encryptTLSを強制化。
しかしメールを送信する先が特定されているわけではないので、送信先のサーバが暗号化に対応しているかわからないのでencryptの設定は避けます。

smtp_tls_CApath   725行目

SMTPクライアントがSMTPサーバ証明書を確認するのに使う認証局証明書のディレクトリ設定
(英語を翻訳にかけただけなので意味がよく分かっていない・・・)
とりあえずsmtp_tls_CApathはディレクトリの指定で証明書を複数持っている場合に使用するようです。
今回証明書は1つしかもっていないのでこれはコメントアウトします。

smtp_tls_CApath = /etc/pki/tls/certs
  ↓ ↓ ↓ ↓
#smtp_tls_CApath = /etc/pki/tls/certs

smtp_tls_CAfile   731行目

自身のドメインのサーバ証明書が記載されているファイルの絶対パス
Let's Encryptで発行したサーバ証明書をフルパスで指定します。

smtp_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt
  ↓ ↓ ↓ ↓
smtp_tls_CAfile = /etc/letsencrypt/live/caramelsauce.info/cert.pem

smtp_tls_ciphers  新規追加(どこに追加してもOK)

暗号化アルゴリズムのグレードを設定
正直、このパラメータの詳細は分かってないです。デフォルトの設定は「medium」です。
そして設定できる値は、「high」「medium」「low」「export」「null」の5つなので一番上位の「high」を設定しましょう。

smtp_tls_ciphers = high

smtp_tls_protocols  新規追加(どこに追加してもOK)

SMTPクライアントとして送信する際のTLSプロトコル
ここでは安全な暗号化プロトコルの設定を入れます。
2022年5月現在TLSv1.2以上のプロトコルを使う様に設定します。

smtp_tls_protocols = >=TLSv1.2

smtp_tls_loglevel  新規追加(どこに追加してもOK)

TLSに関連するログレベルの設定
TLSに関わるPostfix SMTPクライアントとしてのログレベルの設定をします。デフォルト(未記載状態)では「0」に設定されています。
設定値に関しては下記の表に記載しておきます。
さすがに16進数のASCII内容を出力されてもさすがにわけがわからなくなると思うので、ここではどのバージョンのTLSプロトコルを使っているのかが分かるようになるように「2」を設定します。
ついでに言うと、2に設定する事でメールを送受信する際にサーバとクライアントがどんなコマンドでやり取りしているのかが分かるようになります。

smtp_tls_loglevel = 2
設定値説明
0TLS動作に関するログ記録を無効にします(デフォルト値)
1TLSハンドシェイクと証明書の情報をログに記録します。
2TLSネゴシエーションの間のレベルをログに記録します。
3TLSネゴシエーションプロセスの16進数およびASCIIダンプをログに記録します。
4STARTTLS以降の通信の16進数およびASCIIダンプを完全にログに記録します。

設定が終わったらpostfixをリロードしましょう。

systemctl reload postfix