มีปัญหา mail server หลับ พบข้อความ stat=Deferred: Connection refused

google mail
google mail
เริ่มต้นก็ต้องทดสอบส่งอีเมลด้วย #mail xxx@hotmail.com
แล้วเข้าไปดู log ด้วย #tail /var/log/maillog
พบข้อความน่าสงสัยว่า stat=Deferred: Connection refused by [127.0.0.1]
ค้นจาก net เค้าก็แนะนำให้ไป start sendmail
ซึ่งเครื่องนี้ใช้งานส่งอีเมลมาโดยตลอด ผมก็ไม่เชื่อ จึงเริ่มเข้าไปดูละเอียด
ดังนี้
1. เครื่องนี้ใช้ postfix แทน sendmail มาพักหนึ่งแล้ว
จึงเข้าดูว่า relay ใน /etc/postfix/main.cf
ซึ่งหลายปีก่อนมีปัญหาต้องเปลี่ยน relay จึงเข้าไปตรวจพบ
relayhost = 202.47.249.23 ซึ่งเป็นของ relay2.cat.net.th
ทดสอบปิด relay ก็ยังมีปัญหาเหมือนเดิม
2. ทดสอบ restart postfix แล้วพบว่า postfix ไม่ได้เปิด
ซึ่งเป็นเหตุการณ์ที่แปลก ว่าทำไม postfix ไม่เปิดอัตโนมัติ
สรุปว่าการเปิด postfix อัตโนมัติหายไป
ถ้าเปิดก็จะส่งอีเมลได้ปกติ
3. ตรวจการเปิด postfix อัตโนมัติ
#chkconfig –list ไม่พบว่ามี postfix อยู่ในรายการ
#chkconfig –add postfix เพิ่ม postfix เข้าไปในรายการ
#chkconfig –list postfix
postfix         0:off   1:off   2:off    3:off    4:off    5:off    6:off
#chkconfig postfix on
postfix         0:off   1:off   2:on    3:on    4:on    5:on    6:off
#service postfix start
แล้ว reboot เมื่อทดสอบส่งอีเมลขณะ postfix เปิดก็จะไม่มีปัญหา
4. หลังแก้ปัญหาแล้ว กลับไปตรวจสอบปัญหา DNS ที่สงสัยก่อนหน้านี้
ก็พบว่า DNS ไม่ใช่ปัญหา
ที่เห็นเป็นปัญหาเพราะทดสอบปิด relay แล้วเปิด postfix ก็จะได้ log ที่ต่างออกไป
มีข้อความที่ชวนให้สงสัยว่าเป็นที่ DNS รึเปล่า แต่จริงแล้วเกิดจาก relay=none
แต่ผมไปมองเรื่อง (connect to host.domain.com[x.x.x.x]: Connection refused)
5. ถ้าส่งอีเมลได้สำเร็จจะมีข้อความว่า
Mar  2 19:49:57 ldap postfix/smtp[2514]: 123:
to=<x@x.x.x.x>, relay=202.47.249.23[202.47.249.23], delay=1,
status=sent (250 2.0.0 456 Message accepted for delivery)
6. สมัยนี้โดเมนสามารถผูกบริการกับอีเมลฟรีได้หลายที่
ที่ผมใช้อยู่ก็มี gmail apps กับ everyone.net ใช้ตั้งแต่ตอนที่เขาให้ใช้ฟรี
การผู้เข้ากับระบบอีเมลสาธารณะก็ต้องไปแก้ไข MX ใน DNS
http://www.everyone.net/
https://apps.google.com/

ถูก relay ที่ใช้อยู่ ปฏิเสธซะแล้ว

relay ของ cat
relay ของ cat

ได้รับแจ้งจากคุณเปรม ที่พัฒนาระบบให้คุณแอนได้ใช้
ว่าระบบส่งข้อความไม่ถึง inbox ของเพื่อน ๆ
และคาดว่า mail server ทำงานผิดปกติ

ซึ่ง mail server มีโอกาสใช้ relay ของ CAT
แล้ววันนี้ก็พบว่า postfix ไม่ส่งอีเมลตามปกติ
เมื่อเข้าไปดูใน maillog ก็พบ
คำว่า delivery temporarily suspended:
connect to 122.155.133.2[122.155.133.2]: No route to host
แปลเป็นไทยว่า การส่งครั้งนี้ ถูกแขวนไว้ก่อน
เพราะมีปัญหาเรื่องเส้นทางไปยังโฮส

ถ้าส่งได้ก็จะพบข้อความว่า
Message accepted for delivery
แปลเป็นไทยว่า ข้อความถูกยอมรับให้ส่งไปได้

สรุปการแก้ไขที่ผมใช้
คือ เข้าไปเปลี่ยน relay ใน /etc/postfix/main.cf
ให้ชี้ไปยัง relay ตัวที่สองของ cat

จากการตรวจสอบกับคุณตุ้ย
สรุปว่าไม่ใช่ปัญหาจาก firewall ฝั่งเรา
เพราะ policy เปิดให้กับ mail server ตัวนี้หมด
แล้วคาดว่า relay ได้ปฏิเสธ server ของเรา
จึงแก้ไขโดยหา relay ตัวใหม่มาแทนที่