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.