Postfix: solución de problemas de tiempos de espera de conexión para todos los servidores excepto uno

Postfix: solución de problemas de tiempos de espera de conexión para todos los servidores excepto uno

Heredé un servidor postfix que se ejecuta en RedHat. Es una construcción no documentada, pero fundamental para las operaciones comerciales (¿no nos encantan a todos?)

Ha desarrollado problemas con la entrega de correo retrasada y atrasada. Los problemas se informaron por primera vez hace unas semanas, pero podrían remontarse a un período de tiempo indefinido.

Mi experiencia con *nix está oxidada, pero he podido hurgar en el sistema lo suficiente como para determinar que cuando el servidor experimenta un retraso, informa tiempos de espera de conexión a los relés SMTP ascendentes de mi organización.

Error de ejemplo:

*3D27412A016
4187 martes 19 de abril 17:04:26
[correo electrónico protegido]

(entrega suspendida temporalmente: conéctese a UpstreamRelayA4.doi.net[10.xx.xx.206]:25: Se agotó el tiempo de conexión)

[correo electrónico protegido]*

Sin embargo, los propietarios de la retransmisión ascendente informan que no tienen errores de coincidencia en sus registros de este servidor SMTP. Para mi organización hay un único registro MX con 4 servidores de retransmisión incluidos. Se puede acceder a los 4 desde mi servidor SMTP a través de telnet en el puerto 25; sin embargo, 3 de los 4 están agotando el tiempo de espera en los registros de postfix.

¿Algún consejo sobre cómo localizar por qué Postfix cree que se está agotando el tiempo de espera?

Agregado el 20/04/22 - salida 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 ~]$

Agregado el 20/04/22 - salida 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 ~]$

Agregado el 20/04/22: dispositivos entre retransmisiones de correo

No tenemos visibilidad de la red ni de dispositivos de seguridad entre los relés. Traceroute solo indica 3 saltos, todos los cuales probablemente sean enrutadores estándar según sus direcciones IP en nuestro diseño de red.

Agregado el 20/04/22 - Versión Postfix

Postfix parece ser la versión 2.10.1, lo que situaría la instalación alrededor de 2013. según la página de lanzamientos de Postfix

Agregado el 22/04/22: prueba de conexión de 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)

Agregado el 22/04/22: Maillog grep para el servidor que no 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)

[Duplicados eliminados. Todas las entradas para ese servidor son exactamente los mismos dos mensajes]

Edición final 27/04/2022

Al solucionar problemas la semana pasada, descubrimos que /etc/resolv.conf tenía un servidor de nombres que ya no existe. Después de eliminar esto y reiniciar postfix, parece que ya no obtenemos tiempos de espera en los registros y el correo fluye rápidamente.

Como lo mencionó @anx en los comentarios, esto no tiene mucho sentido en relación con los tiempos de espera de conexión, pero tan pronto como se solucionó y se reinició postfix, nuestros envíos salientes aumentaron drásticamente en velocidad y no hemos tenido ninguno. problemas de retraso desde entonces, a pesar de agregar más de 20,000 correos electrónicos de prueba salientes adicionales por día (aproximadamente un aumento del 30% con respecto al volumen de correo normal).

Respuesta1

Lo mejor que pudimos descubrir es que este problema se debió a que tenía una entrada DNS no válida en /etc/resolv.conf. Una vez que se eliminó la entrada incorrecta, dejamos de tener problemas en los registros y el correo volvió a fluir correctamente con una demora de salida mínima.

información relacionada