Postfix smtp 대 smtpd -o 옵션

Postfix smtp 대 smtpd -o 옵션

아래 표에는 이메일 전송의 각 단계에서 사용할 수 있는 프로토콜/포트가 나와 있습니다. 표 postfix에는 ✘ 또는 ✔로 표시하여 서버 설정 에서 사용하려는 프로토콜/포트도 표시됩니다 .

N 작업 보내는 사람 수화기 가능한 프로토콜/포트
1 "메일 제출" 무아 MSA (✘) SMTP 25
(✘) SMTP 25& STARTTLS
(✘) SMTP 587& STARTTLS
(✔) SMTPS 465& 암시적 TLS
2 "서버 내부" MSA MTA /
... "메일 릴레이" MTA MTA (✘) SMTP 25
(✘) SMTP 25& STARTTLS
(✔) SMTP 25& STARTTLS& DANE
n -2 "서버 내부" MTA MDA /
n - 1 "서버 내부" MDA MS /
N "사서함 액세스" MS 무아 (✘) POP3 110& STARTTLS
(✘) POP3S 995& 암시적 TLS
(✘) IMAP 143& STARTTLS
(✔) IMAPS 993& 암시적 TLS

계속하기 전에 다음 두 가지 가정에 동의할지, 동의하지 않을지 묻고 싶습니다.

가정 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"보내는 이메일".

문제:

/etc/postfix/main.cf내가 내부에 설정한 개별 서비스에 대한 내 설정을 전역 설정이 엉망으로 만드는 것을 원하지 않았기 때문에 도중에 Postfix를 구성할 때 내부의 전체 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위에서는 구성 매개변수가 TLS -o smtpd_tls_protocols=!SSLv2,!SSLv3,!TLSv1,!TLSv1.11.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_옵션 도 사용해야 합니까 ? 이것들은 어디에 넣어야 하나요?

보시다시피 혼란스러워요 ...

관련 정보