Postfix smtp と smtpd -o オプション

Postfix smtp と smtpd -o オプション

以下の表は、電子メール転送の各ステップで使用できるプロトコル/ポートを示しています。また、表には、サーバー設定で使用するプロトコル/ポートがpostfix✘ または ✔ でマークされて示されています。

手術 送信者 受信機 可能なプロトコル/ポート
1 「メール送信」 メイクアップアーティスト MSA (✘) SMTP 25
(✘) SMTP 25& STARTTLS
(✘) SMTP 587& STARTTLS
(✔) SMTPS 465& 暗黙的な TLS
2 「サーバー内部」 MSA インド /
3... 「メールリレー」 インド インド (✘) SMTP 25
(✘) SMTP 25& STARTTLS
(✔) SMTP 25& STARTTLS& DANE
2 -2 です 「サーバー内部」 インド MDAA /
1 - 1 です 「サーバー内部」 MDAA MS /
「メールボックスへのアクセス」 MS メイクアップアーティスト (✘) POP3 110& STARTTLS
(✘) POP3S 995& 暗黙的な TLS
(✘) IMAP 143& STARTTLS
(✔) IMAPS 993& 暗黙的な TLS

話を続ける前に、次の 2 つの仮定に同意するか、反対するかを尋ねたいと思います。

仮定A:

私は推測するこれPostfixの古い回答サービス 465smtps途中で名前が変更されました。そのため、私はサービス smtps聞くために「メール送信」SMTPS ポート465

仮定B:

私のファイルの先頭は/etc/postfix/master.cf次のようになります。

# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (no)    (never) (100)
# ==========================================================================
smtp      inet  n       -       y       -       -       smtpd
smtps     inet  n       -       y       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_security_level=encrypt
  -o smtpd_use_tls=yes
  -o smtpd_tls_wrappermode=yes
  -o smtpd_tls_protocols=!SSLv2,!SSLv3,!TLSv1,!TLSv1.1
  -o smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
  -o smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

  ...

私は読むここそれ:

postfix/smtpd- SMTPデーモンプロセスです"メール受信"適切な内部の場所にルーティングします。

postfix/smtp- SMTPデーモンプロセスです"送信メール"世界に向けて発信します。

それで、私はpostfix/smtpdポートをリッスンしている465と仮定します「受信メール」25ローカルユーザーからポート「受信メール」他の場所から。また、送信postfix/smtpポートを使用していると仮定します25「送信メール」

問題:

途中で Postfix を設定していたとき、/etc/postfix/main.cfグローバル設定が内部で設定した個々のサービスの設定に影響しないように、内部の TLS セクション全体を無効にしました/etc/postfix/master.cf

ご覧のとおり、-oサービスにはsmtp多くのオプションを使用しているのに、-oサービスにはオプションをまったく使用していません。最も混乱しているのは、公式ドキュメントに次のようなほぼ重複したオプションが多数あることsmtpsです。/etc/postfix/main.cf

引用されたテキストによれば、私は次のように使用すべきです:

  • smtp_forで始まるもの"送信メール"
  • smtpd_forで始まるもの「受信メール」

openssl私の考え方が正しければ、現在の設定は機能するはずです。次のように別のコンピューターでコマンドを使用して TLS 1.3 ハンドシェイクを実現できるため、部分的には機能します。

┌───┐
│ $ │ ziga > ziga--workstation > ~
└─┬─┘
  └─> openssl s_client -connect pis.eu:465 -tls1_3

CONNECTED(00000003)
depth=0 CN = tek-eu
verify error:num=18:self signed certificate
verify return:1
depth=0 CN = tekpi-eu
verify return:1
---
Certificate chain
 0 s:CN = tek-eu
   i:CN = tek-eu
---
Server certificate
-----BEGIN CERTIFICATE-----

  < REMOVED FOR CLARITY >

-----END CERTIFICATE-----
subject=CN = tek-eu

issuer=CN = tek-eu

---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: RSA-PSS
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 1286 bytes and written 313 bytes
Verification error: self signed certificate
---
New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
Server public key is 2048 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 18 (self signed certificate)
---
---
Post-Handshake New Session Ticket arrived:
SSL-Session:
    Protocol  : TLSv1.3
    Cipher    : TLS_AES_256_GCM_SHA384
    Session-ID: 45F832A32F5F27CEAA41B271F28545ECA98DC1AC61F51A484123DD28B2535C30
    Session-ID-ctx: 
    Resumption PSK: 3175AD1641D8D77511FD5C76508D339D01F5D1CE02DBF90F33FEBD334A7E76FD44B52808A846C281616469143977B6F1
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 7200 (seconds)
    TLS session ticket:

    < REMOVED FOR CLARITY >

    Start Time: 1607602078
    Timeout   : 7200 (sec)
    Verify return code: 18 (self signed certificate)
    Extended master secret: no
    Max Early Data: 0
---
read R BLOCK
220 mail.pis.eu -------> "HELLO!"

-tls1_3上記では、構成パラメータで-o smtpd_tls_protocols=!SSLv2,!SSLv3,!TLSv1,!TLSv1.1TLS 1.2 および TLS 1.3 以外のハンドシェイクを禁止する必要があるため、機能するはずのパラメータを使用しました。しかし、パラメータを変更して TLS 1 ハンドシェイクを試行する-tls1_3-tls1成功するのでしょうか?

┌───┐
│ $ │ ziga > ziga--workstation > ~
└─┬─┘
  └─> openssl s_client -connect pis.eu:465 -tls1
CONNECTED(00000003)
depth=0 CN = tek-eu
verify error:num=18:self signed certificate
verify return:1
depth=0 CN = tek-eu
verify return:1
---
Certificate chain
 0 s:CN = tek-eu
   i:CN = tek-eu
---
Server certificate
-----BEGIN CERTIFICATE-----

  < REMOVED FOR CLARITY >

-----END CERTIFICATE-----
subject=CN = tek-eu

issuer=CN = tek-eu

---
No client certificate CA names sent
Peer signing digest: MD5-SHA1
Peer signature type: RSA
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 1385 bytes and written 227 bytes
Verification error: self signed certificate
---
New, TLSv1.0, Cipher is ECDHE-RSA-AES256-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1
    Cipher    : ECDHE-RSA-AES256-SHA
    Session-ID: C1E39786A475DA48ED222EAB5247CCE57D49875AE9A442A73027FBE1F9BB7C4D
    Session-ID-ctx: 
    Master-Key: 5900F37B79A7949871008A827904F2BA907F42EE8BBC73328CD49DF7E37AF2687C06B316922D7D76DDC36FA1DF912E7A
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 7200 (seconds)
    TLS session ticket:

    < REMOVED FOR CLARITY >
    
    Start Time: 1607602884
    Timeout   : 7200 (sec)
    Verify return code: 18 (self signed certificate)
    Extended master secret: yes
---
220 mail.pis.eu -------> "HELLO!"

なぜこれが成功するのでしょうか? 何が間違っているのでしょうか? 現在、私のセットアップには-o smtpd_オプションしかありません。オプションも使用する必要がありますか-o smtp_? これらはどこに配置すればよいですか?

ご覧の通り、私は混乱しています...

関連情報