Ik heb een postfix-server geërfd die op RedHat draait. Het is een niet-gedocumenteerde build, maar van cruciaal belang voor bedrijfsactiviteiten (Hebben we daar niet allemaal dol op?)

Het heeft problemen ontwikkeld met vertraagde en achtergebleven e-mailbezorging. De problemen werden een paar weken geleden voor het eerst gemeld, maar kunnen voor onbepaalde tijd teruggaan.

Mijn *nix-ervaring is roestig, maar ik heb genoeg in het systeem kunnen rondneuzen om vast te stellen dat wanneer de server een achterstand ervaart, deze verbindingstime-outs meldt aan de stroomopwaartse SMTP-relais in mijn organisatie.

Voorbeeld fout:

*3D27412A016
4187 di 19 apr 17:04:26
[email protected]

(levering tijdelijk opgeschort: verbinding maken met UpstreamRelayA4.doi.net[10.xx.xx.206]:25: Time-out verbinding)

[email protected] *

De eigenaren van de upstream-relay melden echter dat ze geen overeenkomende fouten in hun logboeken van deze SMTP-server hebben. Voor mijn organisatie is er een enkel MX-record met 4 relay-servers inbegrepen. Alle 4 zijn bereikbaar vanaf mijn SMTP-server via telnet op poort 25, maar 3 van de 4 hebben een time-out in de postfix-logboeken.

Tips om op te sporen waarom postfix denkt dat ze een time-out hebben?

Toegevoegd 4/20/22 - postconf -n uitvoer

    [[email protected] ~]$ 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

[[email protected] ~]$

Toegevoegd 4/20/22 - postconf -M output

[[email protected] ~]$ 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
[[email protected] ~]$

Toegevoegd 20-4-22 - Apparaten tussen e-mailrelays

We hebben geen zicht op het netwerk of beveiligingsapparatuur tussen de relais. Traceroute geeft slechts 3 hops aan, die waarschijnlijk allemaal standaardrouters zijn op basis van hun IP-adressen in onze netwerklay-out.

Toegevoegd 20-4-22 - Postfix-versie

Postfix lijkt versie 2.10.1 te zijn, die de installatie rond 2013 zou plaatsen volgens de pagina Postfix Releases

22-04-22 toegevoegd - openssl Verbindingstest

[[email protected] ~]$ 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)

22-04-22 toegevoegd - Maillog grep voor niet-werkende server

[[email protected] ~]$  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)

[Duplicaten verwijderd, Alle vermeldingen voor die server zijn exact dezelfde twee berichten]

Laatste bewerking 27-4-2022

Bij het oplossen van problemen vorige week ontdekten we dat /etc/resolv.conf een naamserver had die niet meer bestaat. Nadat we dit hebben verwijderd en postfix opnieuw hebben opgestart, lijken we geen time-outs meer te krijgen in de logs en e-mail stroomt snel.

Zoals vermeld door @anx in de opmerkingen, is dit niet zo logisch met betrekking tot de verbindingstime-outs, maar zodra het was opgelost en postfix opnieuw was gestart, namen onze uitgaande verzendingen drastisch in snelheid toe, en we hebben er geen gehad vertragingsproblemen sinds, ondanks het toevoegen van meer dan 20.000 extra uitgaande test-e-mails per dag (ongeveer een stijging van 30% ten opzichte van het reguliere postvolume).

answer

Voor zover we konden achterhalen, werd dit probleem veroorzaakt door een ongeldige DNS-invoer in /etc/resolv.conf . Nadat de foutieve invoer was verwijderd, hadden we geen problemen meer met de logboeken en keerde de e-mail terug naar behoren met minimale uitgaande vertraging.