Opções Postfix smtp vs smtpd -o

Opções Postfix smtp vs smtpd -o

A tabela abaixo mostra quais protocolos/portas podem ser usados ​​em cada etapa da transferência de e-mail. A tabela também indica quais protocolos/portas desejo usar na postfixconfiguração do meu servidor marcando-os com ✘ ou ✔.

n Operação remetente receptor possíveis protocolos/portas
1 "envio de correio" MUÁ MSA (✘) SMTP 25
(✘) SMTP 25e STARTTLS
(✘) SMTP 587e STARTTLS
(✔) SMTPS 465e TLS implícito
2 "servidor interno" MSA MTA /
3... "retransmissão de correio" MTA MTA (✘) SMTP 25
(✘) SMTP 25& STARTTLS
(✔) SMTP 25& STARTTLS& DANE
n-2 "servidor interno" MTA MDA /
n - 1 "servidor interno" MDA EM /
n "acesso à caixa de correio" EM MUÁ (✘) POP3 110e STARTTLS
(✘) POP3S 995e TLS implícito
(✘) IMAP 143e STARTTLS
(✔) IMAPS 993e TLS implícito

Antes de continuar, peço que você concorde ou discorde de duas suposições:

SUPOSIÇÃO A:

Eu presumo deesseresposta antiga que Postfixserviço 465foi renomeado para smtpsalgum lugar ao longo do caminho. Portanto estou usandoserviço smtpspara poder ouvir"envio de correio"Porta SMTPS 465.

SUPOSIÇÃO B:

A parte superior do meu /etc/postfix/master.cfarquivo fica assim:

# ==========================================================================
# 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

  ...

Eu leioaquique:

postfix/smtpd- é o processo daemon SMTP para"correspondência recebida"e encaminhá-lo para o local interno apropriado.

postfix/smtp- é o processo daemon SMTP para"correspondência expedida"para o mundo.

Então agora estou assumindo que postfix/smtpdestá escutando na 465porta"e-mail recebido"de usuários locais e na porta 25para"e-mail recebido"de qualquer outro lugar. Também estou assumindo que postfix/smtpestá usando a porta 25para onde envia"e-mail de saída".

PROBLEMA:

Quando eu estava configurando o Postfix em algum lugar ao longo do caminho, desabilitei uma seção TLS inteira /etc/postfix/main.cfporque não queria que as configurações globais atrapalhassem minhas configurações para serviços individuais que eu defini dentro /etc/postfix/master.cf.

Como você pode ver, não usei nenhuma -oopção de serviço smtp, mas usei muitas -oopções de serviço smtps. O que mais me confunde é que na documentação oficial /etc/postfix/main.cfposso encontrar muitas opções quase duplicadas como:

De acordo com o texto citado devo usar:

  • aqueles que começam com smtp_for"correspondência expedida"
  • aqueles que começam com smtpd_for"correio recebido".

Se minha filosofia estiver correta, então minha configuração atual deverá funcionar. Isso acontece parcialmente porque posso obter um handshake TLS 1.3 usando opensslum comando em um computador diferente como este:

┌───┐
│ $ │ 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!"

Acima usei um parâmetro -tls1_3que deve funcionar porque meu parâmetro de configuração -o smtpd_tls_protocols=!SSLv2,!SSLv3,!TLSv1,!TLSv1.1deve proibir qualquer handshake diferente de TLS 1.2 e TLS 1.3. Mas se alterar o parâmetro -tls1_3para -tls1tentar o handshake TLS 1, ele terá sucesso!?

┌───┐
│ $ │ 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!"

Como é que isso deu certo? O que estou fazendo de errado? Atualmente minha configuração só tem -o smtpd_opções. Devo também usar -o smtp_opções? Onde devo colocar isso?

Como você vê, estou confuso...

informação relacionada