Postfix - Solução de problemas de tempo limite de conexão para todos os servidores, exceto um

Postfix - Solução de problemas de tempo limite de conexão para todos os servidores, exceto um

Herdei um servidor postfix rodando no RedHat. É uma construção não documentada, mas crítica para as operações de negócios (todos nós não amamos isso?)

Ele desenvolveu problemas com entrega de correspondência atrasada e acumulada. Os problemas foram relatados pela primeira vez há algumas semanas, mas podem ocorrer por um período indefinido.

Minha experiência *nix está enferrujada, mas consegui vasculhar o sistema o suficiente para determinar que, quando o servidor está enfrentando backlog, ele relata tempos limite de conexão para as retransmissões SMTP upstream em minha organização.

Exemplo de erro:

*3D27412A016
4187 Terça, 19 de abril, 17:04:26
[e-mail protegido]

(entrega temporariamente suspensa: conecte-se a UpstreamRelayA4.doi.net[10.xx.xx.206]:25: Tempo limite de conexão esgotado)

[e-mail protegido]*

No entanto, os proprietários da retransmissão upstream relatam que não há erros correspondentes em seus logs deste servidor SMTP. Para minha organização, há um único registro MX com 4 servidores de retransmissão incluídos. Todos os 4 podem ser acessados ​​do meu servidor SMTP via telnet na porta 25, no entanto, 3 dos 4 estão expirando nos logs do postfix.

Alguma dica sobre como rastrear por que o postfix acha que está expirando?

Adicionado 20/04/22 - saída postconf -n

    [USERNAME@mailer ~]$ postconf -n

alias_database = hash:/etc/aliases

alias_maps = hash:/etc/aliases

broken_sasl_auth_clients = yes

command_directory = /usr/sbin

config_directory = /etc/postfix

daemon_directory = /usr/libexec/postfix

debug_peer_level = 2

debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin xxgdb
 
$daemon_directory/$process_name $process_id & sleep 5

disable_vrfy_command = yes

html_directory = no

inet_interfaces = all

inet_protocols = ipv4

local_recipient_maps =

mail_owner = postfix

mail_spool_directory = /var/mail

mailbox_size_limit = 0

mailq_path = /usr/bin/mailq.postfix

manpage_directory = /usr/share/man

maximal_queue_lifetime = 1d

message_size_limit = 30720000

mydestination = $myhostname, localhost.$mydomain, localhost

myhostname = mailer.domain.org.com

mynetworks = 

127.0.0.0/8,165.83.0.0/16,10.0.0.0/8,64.241.25.0/24,172.16.0.0/12

myorigin = $mydomain

newaliases_path = /usr/bin/newaliases.postfix

queue_directory = /var/spool/postfix

readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES

relayhost = relayLOCATION.parentorg.com

sample_directory = /usr/share/doc/postfix-2.10.1/samples

sendmail_path = /usr/sbin/sendmail.postfix

setgid_group = postdrop

smtp_tls_note_starttls_offer = yes

smtp_use_tls = yes

smtpd_delay_reject = yes

smtpd_helo_required = yes

smtpd_helo_restrictions = 
permit_mynetworks,reject_non_fqdn_helo_hostname,reject_invalid_helo_hostname,permit

smtpd_policy_service_max_idle = 5s

smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination

smtpd_sasl_auth_enable = yes

smtpd_sasl_authenticated_header = yes

smtpd_sasl_local_domain =

smtpd_sasl_security_options = noanonymous

smtpd_sender_restrictions = permit_mynetworks,reject_non_fqdn_sender,permit

smtpd_tls_CAfile = /etc/postfix/ssl/mailer_DOMAIN_ORG_COM.pem

smtpd_tls_auth_only = no

smtpd_tls_cert_file = /etc/postfix/ssl/mailer_DOMAIN_ORG_COM.crt

smtpd_tls_key_file = /etc/postfix/ssl/mailer_DOMAIN_ORG_COM.key

smtpd_tls_loglevel = 1

smtpd_tls_security_level = may

smtpd_use_tls = yes

tls_random_source = dev:/dev/urandom

transport_maps = hash:/etc/postfix/transport

[USERNAME@mailer ~]$

Adicionado 20/04/22 - saída postconf -M

[USERNAME@mailer ~]$ postconf -M
smtp       inet  n       -       n       -       -       smtpd
pickup     fifo  n       -       n       60      1       pickup
cleanup    unix  n       -       n       -       0       cleanup
qmgr       fifo  n       -       n       300     1       qmgr
tlsmgr     unix  -       -       n       1000?   1       tlsmgr
rewrite    unix  -       -       n       -       -       trivial-rewrite
bounce     unix  -       -       n       -       0       bounce
defer      unix  -       -       n       -       0       bounce
trace      unix  -       -       n       -       0       bounce
verify     unix  -       -       n       -       1       verify
flush      unix  n       -       n       1000?   0       flush
proxymap   unix  -       -       n       -       -       proxymap
smtp       unix  -       -       n       -       -       smtp
relay      unix  -       -       n       -       -       smtp -o fallback_relay=
showq      unix  n       -       n       -       -       showq
error      unix  -       -       n       -       -       error
discard    unix  -       -       n       -       -       discard
local      unix  -       n       n       -       -       local
virtual    unix  -       n       n       -       -       virtual
lmtp       unix  -       -       n       -       -       lmtp
anvil      unix  -       -       n       -       1       anvil
scache     unix  -       -       n       -       1       scache
maildrop   unix  -       n       n       -       -       pipe flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
old-cyrus  unix  -       n       n       -       -       pipe flags=R user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -m ${extension} ${user}
cyrus      unix  -       n       n       -       -       pipe user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -r ${sender} -m ${extension} ${user}
uucp       unix  -       n       n       -       -       pipe flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
ifmail     unix  -       n       n       -       -       pipe flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp      unix  -       n       n       -       -       pipe flags=Fq. user=foo argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient
retry      unix  -       -       n       -       -       error
proxywrite unix  -       -       n       -       1       proxymap
[USERNAME@mailer ~]$

Adicionado em 20/04/22 - Dispositivos entre retransmissões de correio

Não temos visibilidade da rede ou dos dispositivos de segurança entre os relés. Traceroute indica apenas 3 saltos, todos provavelmente roteadores padrão com base em seus endereços IP em nosso layout de rede.

Adicionado em 20/04/22 - Versão Postfix

O Postfix parece ser a versão 2.10.1, o que colocaria a instalação por volta de 2013 de acordo com a página de lançamentos do Postfix

Adicionado em 22/04/22 - teste de conexão openssl

[USERNAME@mailer ~]$ openssl s_client -connect UPSTREAM_RELAY.ORG.net:25 -starttls smtp -crlf
CONNECTED(00000003)
depth=1 DC = net, DC = ORG, CN = CA_Server
verify error:num=20:unable to get local issuer certificate
---
Certificate chain
 0 s:/C=US/ST=STATE/L=CITY/O=PARENT_ORG/OU=PARENT_ORG/CN=UPSTREAM_RELAY.ORG.net
   i:/DC=net/DC=ORG/CN=CA_Server
 1 s:/DC=net/DC=ORG/CN=CA_Server
   i:/CN=ORGRootCA2
---
Server certificate
-----BEGIN CERTIFICATE-----

[Cert contents removed]

-----END CERTIFICATE-----
subject=/C=US/ST=STATEA/L=CITY/O=PARENT_ORG/OU=PARENT_ORG/CN=UPSTREAM_RELAY.ORG.net
issuer=/DC=net/DC=ORG/CN=CA_Server
---
No client certificate CA names sent
Peer signing digest: SHA1
Server Temp Key: ECDH, P-384, 384 bits
---
SSL handshake has read 5841 bytes and written 538 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES256-SHA384
    Session-ID: [REMOVED]
    Session-ID-ctx:
    Master-Key: [REMOVED]
    Key-Arg   : None
    Krb5 Principal: None
    PSK identity: None
    PSK identity hint: None
    Start Time: 1650649689
    Timeout   : 300 (sec)
    Verify return code: 20 (unable to get local issuer certificate)
---
250 XSHADOWREQUEST
 (Functional console after this)

Adicionado em 22/04/22 - Maillog grep para servidor que não funciona

[USERNAME@mailer ~]$  sudo mailq | grep  UPSTREAM_RELAY_103.ORG.net

(delivery temporarily suspended: conversation with UPSTREAM_RELAY_103.ORG.net[10.x.x.125] timed out while sending end of data -- message may be sent more than once)

(conversation with UPSTREAM_RELAY_103.ORG.net[10.x.x.125] timed out while sending end of data -- message may be sent more than once)

[Duplicatas removidas, todas as entradas desse servidor são exatamente as mesmas duas mensagens]

Edição final 27/04/2022

Na solução de problemas da semana passada, descobrimos que /etc/resolv.conf tinha um servidor de nomes que não existe mais. Depois de remover isso e reiniciar o postfix, parece que não estamos mais obtendo tempos limite nos logs e os e-mails fluem rapidamente.

Conforme mencionado por @anx nos comentários, isso não faz muito sentido em relação aos tempos limite de conexão, mas assim que foi corrigido e o postfix foi reiniciado, nossos envios de saída aumentaram drasticamente em velocidade, e não tivemos nenhum problemas de atraso desde então, apesar de adicionar mais de 20.000 e-mails de teste de saída extras por dia (um aumento de aproximadamente 30% em relação ao volume de correio normal).

Responder1

Pelo que pudemos descobrir, esse problema foi causado por uma entrada DNS inválida em /etc/resolv.conf . Depois que a entrada incorreta foi removida, paramos de ter problemas nos logs e as mensagens voltaram a fluir corretamente com atraso mínimo de saída.

informação relacionada