Score:1

Postfix - การแก้ไขปัญหาการหมดเวลาการเชื่อมต่อสำหรับเซิร์ฟเวอร์ทั้งหมดยกเว้นเซิร์ฟเวอร์เดียว

ธง lr
Cos

ฉันได้สืบทอดเซิร์ฟเวอร์ postfix ที่ทำงานบน RedHat มันเป็นงานสร้างที่ไม่มีเอกสาร แต่มีความสำคัญต่อการดำเนินธุรกิจ (เราทุกคนไม่ชอบสิ่งเหล่านี้เหรอ?)

ได้พัฒนาปัญหาเกี่ยวกับการจัดส่งจดหมายล่าช้าและค้าง ปัญหาได้รับการรายงานครั้งแรกเมื่อไม่กี่สัปดาห์ก่อน แต่สามารถย้อนกลับไปได้ไม่จำกัดเวลา

ประสบการณ์ *nix ของฉันคือสนิม แต่ฉันสามารถสะกิดระบบมากพอที่จะระบุได้ว่าเมื่อเซิร์ฟเวอร์ประสบปัญหางานค้าง ระบบจะรายงานการหมดเวลาการเชื่อมต่อไปยังรีเลย์ SMTP อัพสตรีมที่องค์กรของฉัน

ตัวอย่างข้อผิดพลาด:

*3D27412A016
4187 อ. 19 เม.ย. 17:04:26 น
[email protected]

(หยุดส่งชั่วคราว: เชื่อมต่อกับ UpstreamRelayA4.doi.net[10.xx.xx.206]:25: หมดเวลาการเชื่อมต่อ)

[email protected]*

อย่างไรก็ตาม เจ้าของการถ่ายทอดอัปสตรีมรายงานว่าไม่มีข้อผิดพลาดที่ตรงกันในบันทึกจากเซิร์ฟเวอร์ SMTP นี้ สำหรับองค์กรของฉัน มีระเบียน MX เดียวที่มีเซิร์ฟเวอร์รีเลย์ 4 เครื่องรวมอยู่ด้วย สามารถเข้าถึงได้ทั้ง 4 รายการจากเซิร์ฟเวอร์ SMTP ของฉันผ่านทาง telnet บนพอร์ต 25 อย่างไรก็ตาม 3 ใน 4 รายการหมดเวลาในบันทึกของโปรแกรมแก้ไขภายหลัง

มีคำแนะนำเกี่ยวกับวิธีติดตามว่าทำไม postfix ถึงคิดว่าหมดเวลา

เพิ่ม 4/20/22 - เอาต์พุต postconf -n

    [USERNAME@mailer ~]$ postconf -n

alias_database = แฮช:/etc/aliases

alias_maps = แฮช:/etc/aliases

Broken_sasl_auth_clients = ใช่

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 & สลีป 5

ปิดการใช้งาน_vrfy_command = ใช่

html_directory = ไม่

inet_interfaces = ทั้งหมด

inet_protocols = ipv4

local_recipient_maps =

mail_owner = โปรแกรมแก้ไขภายหลัง

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

ชื่อโฮสต์ของฉัน = mailer.domain.org.com

เครือข่ายของฉัน = 

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 = $โดเมนของฉัน

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 = เลื่อนลง

smtp_tls_note_starttls_offer = ใช่

smtp_use_tls = ใช่

smtpd_delay_reject = ใช่

smtpd_helo_required = ใช่

smtpd_helo_restrictions = 
permit_mynetworks,reject_non_fqdn_helo_hostname,reject_invalid_helo_hostname,อนุญาต

smtpd_policy_service_max_idle = 5 วินาที

smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination

smtpd_sasl_auth_enable = ใช่

smtpd_sasl_authenticated_header = ใช่

smtpd_sasl_local_domain =

smtpd_sasl_security_options = ไม่ระบุตัวตน

smtpd_sender_restrictions = permit_mynetworks,reject_non_fqdn_sender,อนุญาต

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

smtpd_tls_auth_only = ไม่

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 = พฤษภาคม

smtpd_use_tls = ใช่

tls_random_source = dev:/dev/urandom

transport_maps = แฮช:/etc/postfix/transport

[USERNAME@mailer ~]$

เพิ่ม 4/20/22 - เอาต์พุต postconf -M

[USERNAME@mailer ~]$ postconf -M
smtp inet n - n - - smtpd
รถกระบะ fifo n - n 60 1 รถกระบะ
การล้างข้อมูลยูนิกซ์ n - n - 0 การล้างข้อมูล
qmgr fifo n - n 300 1 qmgr
tlsmgr ยูนิกซ์ - - n 1,000? 1 tlsmgr
เขียนซ้ำยูนิกซ์ - - n - - เขียนใหม่เล็กน้อย
เด้งยูนิกซ์ - - n - 0 เด้ง
เลื่อนยูนิกซ์ - - n - 0 เด้ง
ติดตามยูนิกซ์ - - n - 0 ตีกลับ
ตรวจสอบยูนิกซ์ - - n - 1 ตรวจสอบ
ล้างยูนิกซ์ n - n 1,000? 0 ล้าง
พร็อกซีแมปยูนิกซ์ - - n - - พร็อกซีแมป
smtp ยูนิกซ์ - - n - - smtp
รีเลย์ยูนิกซ์ - - n - - smtp -o fallback_relay=
showq ยูนิกซ์ n - n - - showq
ข้อผิดพลาดยูนิกซ์ - - n - - ข้อผิดพลาด
ทิ้งยูนิกซ์ - - n - - ทิ้ง
ยูนิกซ์ท้องถิ่น - n n - - ท้องถิ่น
ยูนิกซ์เสมือน - n n - - เสมือน
lmtp ยูนิกซ์ - - n - - lmtp
ทั่งยูนิกซ์ - - n - 1 ทั่ง
Scache ยูนิกซ์ - - n - 1 Scache
maildrop unix - n n - - ไปป์แฟล็ก=ผู้ใช้ DRhu=vmail argv=/usr/local/bin/maildrop -d ${recipient}
old-cyrus unix - n n - - ไปป์แฟล็ก=R user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -m ${extension} ${user}
cyrus unix - n n - - ผู้ใช้ไพพ์=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -r ${sender} -m ${extension} ${user}
uucp unix - n n - - ไปป์แฟล็ก = Fqhu ผู้ใช้ = uucp argv = uux -r -n -z -a$sender - $nexthop!rmail (ผู้รับ $)
ifmail unix - n n - - ไปป์แฟล็ก=F ผู้ใช้=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop (ผู้รับ $)
bsmtp ยูนิกซ์ - n n - - ไปป์แฟล็ก=Fq ผู้ใช้=foo argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient
ลองใหม่ยูนิกซ์ - - n - - ข้อผิดพลาด
proxywrite unix - - n - 1 พร็อกซีแมป
[USERNAME@mailer ~]$

เพิ่ม 4/20/22 - อุปกรณ์ระหว่างเมลรีเลย์

เราไม่สามารถมองเห็นเครือข่ายหรืออุปกรณ์รักษาความปลอดภัยระหว่างรีเลย์ Traceroute ระบุเพียง 3 hops ซึ่งทั้งหมดน่าจะเป็นเราเตอร์มาตรฐานตามที่อยู่ IP ในรูปแบบเครือข่ายของเรา

เพิ่ม 4/20/22 - เวอร์ชัน Postfix

Postfix ดูเหมือนจะเป็นเวอร์ชัน 2.10.1 ซึ่งจะทำการติดตั้งประมาณปี 2013 ตามหน้า Postfix Releases

เพิ่ม 4/22/22 - การทดสอบการเชื่อมต่อ openssl

[USERNAME@mailer ~]$ openssl s_client -เชื่อมต่อ UPSTREAM_RELAY.ORG.net:25 -starttls smtp -crlf
เชื่อมต่อแล้ว(00000003)
ความลึก=1 DC = สุทธิ, DC = ORG, CN = CA_Server
ตรวจสอบข้อผิดพลาด: num=20: ไม่สามารถรับใบรับรองผู้ออกในท้องถิ่น
---
ห่วงโซ่ใบรับรอง
 0 วินาที:/C=US/ST=STATE/L=CITY/O=PARENT_ORG/OU=PARENT_ORG/CN=UPSTREAM_RELAY.ORG.net
   ผม:/DC=net/DC=ORG/CN=CA_Server
 1 วินาที:/DC=net/DC=ORG/CN=CA_Server
   ผม:/CN=ORGRootCA2
---
ใบรับรองเซิร์ฟเวอร์
-----เริ่มต้นใบรับรอง-----

[ลบเนื้อหาใบรับรอง]

-----จบใบรับรอง-----
เรื่อง=/C=US/ST=STATEA/L=CITY/O=PARENT_ORG/OU=PARENT_ORG/CN=UPSTREAM_RELAY.ORG.net
ผู้ออก=/DC=net/DC=ORG/CN=CA_Server
---
ไม่มีการส่งชื่อ CA ของใบรับรองไคลเอ็นต์
สรุปการลงนามเพียร์: SHA1
คีย์อุณหภูมิเซิร์ฟเวอร์: ECDH, P-384, 384 บิต
---
SSL handshake อ่าน 5841 ไบต์และเขียน 538 ไบต์
---
ใหม่, TLSv1/SSLv3, การเข้ารหัสคือ ECDHE-RSA-AES256-SHA384
รหัสสาธารณะของเซิร์ฟเวอร์คือ 2048 บิต
รองรับการเจรจาต่อรองใหม่อย่างปลอดภัย
การบีบอัด: ไม่มี
การขยายตัว: ไม่มี
ไม่มีการเจรจา ALPN
เซสชัน SSL:
    โปรโตคอล : TLSv1.2
    รหัส : ECDHE-RSA-AES256-SHA384
    รหัสเซสชัน: [ถูกลบ]
    เซสชัน-ID-ctx:
    มาสเตอร์คีย์: [ลบ]
    Key-Arg : ไม่มี
    Krb5 อาจารย์ใหญ่: ไม่มี
    ตัวตน PSK: ไม่มี
    คำใบ้ประจำตัว PSK: ไม่มี
    เวลาเริ่มต้น: 1650649689
    หมดเวลา : 300 (วินาที)
    ตรวจสอบรหัสส่งคืน: 20 (ไม่สามารถรับใบรับรองผู้ออกในท้องถิ่น)
---
250 XSHADOWREQUEST
 (คอนโซลการทำงานหลังจากนี้)

เพิ่ม 4/22/22 - Maillog grep สำหรับเซิร์ฟเวอร์ที่ไม่ทำงาน

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

(ระงับการส่งชั่วคราว: การสนทนากับ UPSTREAM_RELAY_103.ORG.net[10.x.x.125] หมดเวลาขณะส่งข้อมูล -- ข้อความอาจถูกส่งมากกว่าหนึ่งครั้ง)

(การสนทนากับ UPSTREAM_RELAY_103.ORG.net[10.x.x.125] หมดเวลาขณะส่งข้อมูล -- ข้อความอาจถูกส่งมากกว่าหนึ่งครั้ง)

[ลบรายการที่ซ้ำกัน รายการทั้งหมดสำหรับเซิร์ฟเวอร์นั้นมีสองข้อความเหมือนกันทุกประการ]

แก้ไขครั้งสุดท้าย 4/27/2022

ในการแก้ไขปัญหาเมื่อสัปดาห์ที่แล้ว เราพบว่า /etc/resolv.conf มีเนมเซิร์ฟเวอร์ที่ไม่มีอยู่อีกต่อไป หลังจากลบสิ่งนี้และรีสตาร์ท postfix ดูเหมือนว่าเราจะไม่ได้รับการหมดเวลาในบันทึกอีกต่อไป และจดหมายจะไหลอย่างรวดเร็ว

ตามที่ @anx กล่าวถึงในความคิดเห็น สิ่งนี้ไม่สมเหตุสมผลเลยเมื่อเทียบกับการหมดเวลาการเชื่อมต่อ แต่ทันทีที่ได้รับการแก้ไขและรีสตาร์ท postfix การส่งขาออกของเรามีความเร็วเพิ่มขึ้นอย่างมาก และเรายังไม่มีเลย ปัญหาความล่าช้าตั้งแต่นั้นมา แม้ว่าจะเพิ่มอีเมลทดสอบขาออกมากกว่า 20,000 ฉบับต่อวัน (เพิ่มขึ้นประมาณ 30% จากปริมาณจดหมายปกติ)

Cos avatar
lr flag
Cos
@anx เพิ่มข้อมูลที่โพสต์แล้ว ดีที่สุดเท่าที่เราจะบอกได้ การจำแนกชื่อก็โอเค เมื่อเร็ว ๆ นี้ไม่มีการเปลี่ยนแปลงในเอกสารใด ๆ และเราสามารถเข้าถึงรีเลย์ขาออกทั้ง 4 ตัวผ่าน telnet บนพอร์ต 25 ด้วยชื่อโฮสต์และ IP โดยไม่มีปัญหา เรามีการบันทึกจำนวนจดหมายขาออก ไม่มีการเปลี่ยนแปลงล่าสุดในระดับเสียง เราส่งออกเฉลี่ย 50,000-70,000 รายการต่อวัน และยังคงอยู่ในช่วงนั้น หากคุณละทิ้งการส่งจำนวนมากของฉันที่ออกแบบมาเพื่อกระตุ้นให้มีงานค้างสำหรับการแก้ไขปัญหา การรีสตาร์ท postfix จะไม่มีข้อผิดพลาดที่มองเห็นได้ แต่ถ้ามีบันทึก\verbose ให้ตรวจสอบ ฉันยินดีที่จะลองดู
anx avatar
fr flag
anx
(n.b. การตรวจสอบเอาต์พุต `mailq` ไม่เทียบเท่ากับการค้นหาบันทึก: mailq แสดงเหตุผลสำหรับ *ความพยายามครั้งล่าสุด* ต่อไฟล์คิว แต่ไม่จำเป็นต้องมีสิ่งบ่งชี้เพิ่มเติมที่สามารถเขียนลงในบันทึกสำหรับความพยายามส่ง *ก่อนหน้า* ของ ข้อความเดียวกัน)
Cos avatar
lr flag
Cos
@anx เราอาจคิดออกแล้ว ใน /etc/resolv.conf เรามีเนมเซิร์ฟเวอร์ที่ไม่มีอยู่อีกต่อไป หลังจากลบสิ่งนี้แล้ว ดูเหมือนว่าเราจะไม่ได้รับการหมดเวลาในบันทึกอีกต่อไป ฉันจะกลับมาตรวจสอบอีกครั้งในสัปดาห์หน้าเพื่อดูว่าปัญหาได้รับการแก้ไขอย่างสมบูรณ์หรือไม่ คำแนะนำของคุณในการตรวจสอบบันทึกเก่าคือเคล็ดลับที่เราต้องการ ฉันกลับไปตรวจสอบจดหมายเหตุย้อนหลัง พวกเขาระบุว่าปัญหาเริ่มขึ้นเมื่อหลายปีก่อน แต่เห็นได้ชัดว่าไม่มีใครติดตามเซิร์ฟเวอร์มากพอที่จะสังเกตเห็น นั่นอาจสอดคล้องกับเซิร์ฟเวอร์ DNS เก่าที่ออฟไลน์ แต่ไม่มีใครอยู่ได้นานพอที่จะจำได้
anx avatar
fr flag
anx
ขอบคุณสำหรับการอัพเดท.แม้ว่าจะสามารถแก้ปัญหาเฉพาะหน้าของคุณได้ (โปรดใส่รายละเอียดในคำตอบ!) ดูเหมือนว่าจะมีบางอย่างขาดหายไปที่นี่: ปัญหา DNS ทำให้เกิดข้อผิดพลาดได้อย่างไรหลังจากเลิกใช้หลังจากผ่านไป *วินาที* - นำไปสู่ เซิร์ฟเวอร์ไม่ตอบสนอง (อย่างน้อยก็ด้วย "ลองอีกครั้งในภายหลัง") ภายในเวลา * นาที *?
Cos avatar
lr flag
Cos
เพิ่ม @anx Final update ในโพสต์แล้ว เรายังไม่ทราบสาเหตุว่าทำไมเราจึงล้มเหลว แต่เราสามารถสร้างปัญหาซ้ำได้ทันทีโดยการเพิ่ม IP ของเนมเซิร์ฟเวอร์ที่ไม่ถูกต้องใน /etc/resolv.conf หากนี่เป็นงานสร้างสมัยใหม่ ฉันอาจจะลองรายงานว่าเป็นบั๊ก และดูว่าใครก็ตามที่มีความรู้ด้านนักพัฒนาเกี่ยวกับสถานการณ์สามารถติดตามปัญหาดังกล่าวได้ แต่ด้วยอายุของเวอร์ชันที่ติดตั้งและรุ่นระบบปฏิบัติการ เราจะสร้าง แทนที่ตั้งแต่เริ่มต้นด้วย postfix เวอร์ชันใหม่ ขอบคุณสำหรับความช่วยเหลือทั้งหมดของคุณ
Score:1
ธง lr
Cos

ดีที่สุดเท่าที่จะทำได้ ปัญหานี้เกิดจากการมีรายการ DNS ที่ไม่ถูกต้องใน /etc/resolv.conf เมื่อลบรายการที่ไม่ถูกต้องออกแล้ว เราก็เลิกมีปัญหาในบันทึก และจดหมายกลับมาไหลตามปกติโดยมีความล่าช้าขาออกน้อยที่สุด

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา