Tôi đã phát hiện ra rằng cấu hình sendmail của tôi không phải lúc nào cũng thử
máy chủ MX phụ nếu MX chính không trả lời. Đôi khi nó làm,
thường thì không.
Tôi nghĩ rằng câu hỏi của tôi là, 1) làm cách nào để sendmail quyết định khi nào nên từ bỏ một MX nhất định và thử cái tiếp theo? Và
2) làm thế nào để gỡ lỗi những gì đang (không) xảy ra?
Để giải quyết vấn đề này, tôi đặt tên mytest.freefriends.org (tên miền của riêng tôi)
với một MX chính 10.x không thể định tuyến và một MX phụ tốt:
mytest IN MX 1 nonesuch.freefriends.org.
mytest IN MX 10 goodmx.freefriends.org.
nonesuch TRONG 10.10.10.10
Trong trường hợp thực tế, MX chính là máy chủ thông thường, có thể truy cập được nhưng
cố ý không trả lời trên cổng 25. Rõ ràng một số quản trị viên hệ thống làm
điều này để ngăn chặn một số kẻ gửi thư rác không bao giờ thử MX thứ hai. (Tôi ngần ngại
xuất bản tên của các miền làm điều này, nhưng có thể cung cấp
riêng tư.) Tôi nhận được kết quả tương tự với thiết lập thử nghiệm của mình như với thực tế
các trường hợp -- đôi khi sendmail của tôi bỏ qua lỗi chính không hợp lệ và chính xác
rơi xuống thứ cấp, nhưng thường thì không.
Tôi đang sử dụng nhị phân sendmail 8.14.7 được phân phối với CentOS 7,
trên x86_64. Tôi đã tùy chỉnh sendmail.cf theo nhiều cách khác nhau, nhưng không có cách nào
dường như có liên quan từ xa ngoại trừ có thể là các giá trị hết thời gian chờ, mà tôi sẽ
nối thêm bên dưới.
Tôi đang gửi thư kiểm tra của mình tới, ví dụ: [email protected]
. Mục /var/log/maillog chỉ hiển thị nonesuch đang được thử lặp đi lặp lại cho đến khi hết 5 ngày và nó bị trả lại:
Ngày 15 tháng 3 18:26:45 tug sendmail[26132]: 22FHPiET026128: to=<[email protected]>, delay=00:01:00, xdelay=00:01:00, mailer=esmtp, pri=293911 , chuyển tiếp=nonesuch.freefriends.org. [10.10.10.10], dsn=4.0.0, stat=Deferred: Đã hết thời gian kết nối với nonesuch.freefriends.org.
Tôi đang cố gắng phân biệt những gì đang thực sự xảy ra với:
rm /tmp/f; sendmail -D/tmp/f -d0-99.99 [email protected]
nhưng đầu ra gỡ lỗi /tmp/f đồ sộ chỉ hiển thị MX không tốt
đang được thử đi thử lại, mặc dù đã tìm thấy goodmx. Đây là một đoạn trích nhỏ cho thấy nỗ lực cuối cùng trong một lần chạy hàng đợi nhất định:
hostsignature(mytest.freefriends.org.) = nonesuch.freefriends.org.:goodmx.freefriends.org.
...
dropenvelope 0x55db2c276ba0: id=<null>, flags=4405046<INQUEUE,NO_BODY_RETN,DELE\
TE_BCC,GLOBALERRS,METOO,IS_MIME,SPLIT>
sendq=0x55db2e364ab0=<[email protected]>:
bưu phẩm 4 (esmtp), máy chủ `mytest.freefriends.org.'
người dùng `[email protected]', kẻ lừa đảo `<null>'
trạng thái=QUEUEUP, tiếp theo=0x0, bí danh 0x0, uid 0, gid 0
flags=80000182<QPRIMARY,QPINGONFAILURE,QPINGONDELAY,QRCPTOK>
chủ sở hữu = (không có), nhà = "(không có)", họ tên = "(không có)"
orcpt="(không có)", statmta=nonesuch.freefriends.org., status=4.4.1
finalrcpt="RFC822; [email protected]"
trạng thái = "(không có)"
statdate=Thứ ba ngày 15 tháng 3 18:28:59 2022
====finis: stat 75 e_id=NOQUEUE e_flags=4405046<INQUEUE,NO_BODY_RETN,DELETE_BCC,GLOBALERS,METOO,IS_MIME,SPLIT>
Tôi đã không thể bắt được một bản ghi với một
thông báo thành công, khi nó rơi trở lại thứ cấp. Bất kỳ cách nào để móc vào đó?
Tôi cho rằng tôi có thể giải quyết vấn đề này với các mục có thể gửi thư (hoặc có thể là bestmx), nhưng tôi không biết tất cả các máy chủ sẽ cần nó. Ngoài ra, việc chuyển sang mx thứ cấp có vẻ như là một hoạt động khá cơ bản (ngày nay) không hoạt động.
Tôi đã tìm kiếm trên mạng, trong cuốn sách dơi, trong các nguồn gửi thư (ví dụ:
domain.c), v.v. nhưng vẫn chưa tìm ra cách xử lý. Nếu bất cứ ai muốn
gửi email cho tôi về điều này thay vì/cũng như trả lời ở đây, địa chỉ của tôi là
karl (at) freefriends (dot) org.
Xin lỗi vì tin nhắn dài. Cảm ơn trước cho bất kỳ manh mối.
# thời gian chờ (nhiều trong số này)
#O Thời gian chờ.initial=5m
O Hết giờ.connect=30s
O Hết giờ.aconnect=30s
O Hết giờ.iconnect=30s
O Hết giờ.helo=4m
O Thời gian chờ.mail=5m
O Hết giờ.rcpt=10m
O Hết giờ.datainit=2m
O Hết giờ.datablock=6m
O Thời gian chờ.datafinal=30m
O Thời gian chờ.rset=1m
O Thời gian chờ.quit=1m
O Hết giờ.misc=1m
O Hết giờ.command=5m
O Thời gian chờ.ident=0s
#O Hết giờ.fileopen=60s
#O Thời gian chờ.control=2m
O Hết giờ.queuereturn=5d
#O Hết giờ.queuereturn.normal=5d
#O Hết giờ.queuereturn.urgent=2d
#O Hết giờ.queuereturn.non-urgent=7d
#O Hết giờ.queuereturn.dsn=5d
O Hết giờ.queuewarn=2d
#O Hết giờ.queuewarn.normal=4h
#O Hết giờ.queuewarn.urgent=1h
#O Hết giờ.queuewarn.non-urgent=12h
#O Hết giờ.queuewarn.dsn=4h
#O Hết giờ.hoststatus=30m
#O Hết giờ.resolver.retrans=5s
#O Hết giờ.resolver.retrans.first=5s
#O Hết giờ.resolver.retrans.normal=5s
#O Hết giờ.resolver.retry=4
#O Hết giờ.resolver.retry.first=4
#O Hết giờ.resolver.retry.normal=4
O Thời gian chờ.lhlo=1m
#O Hết giờ.auth=10m
O Hết giờ.starttls=2m