以下の表は、電子メール転送の各ステップで使用できるプロトコル/ポートを示しています。また、表には、サーバー設定で使用するプロトコル/ポートが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の古い回答サービス 465
smtps
途中で名前が変更されました。そのため、私はサービス 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.1
TLS 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_
? これらはどこに配置すればよいですか?
ご覧の通り、私は混乱しています...