ส่งอีเมลไม่ไปจะทำอย่างไร

สอบสัมภาษณ์เข้ารับราชการ
สอบสัมภาษณ์เข้ารับราชการ
23 มีนาคม 2559 อ.อนุชิต ชวนผมจัดการความรู้ส่วนบุคคล (PKM)
มี K มากมายที่ท่านฝากไว้ ก็จะค่อย ๆ ถอดบทเรียนมาแบ่งปันทีละเรื่อง
โดยท่าน share ให้ฟัง ที่ถือเป็นการถอดบทเรียน ที่เล่าให้นักศึกษาฟังได้
ประสบการณ์ที่ท่านไปรับการสัมภาษณ์เข้ารับราชการที่กรมฯ
เล่าว่ามีคำถามมากมายเกี่ยวกับทัศนคติของคนทำงาน
เช่น ถ้าเจ้านายให้ทำผิด เราจะทำผิดตามที่ถูกสั่งไหม
แต่มีคำถามสำคัญเกี่ยวกับไอทีเพียงคำถามเดียว
คือ “ถ้าทำเครื่องบริการอีเมล แล้วส่งอีเมลไม่ออกจะทำอย่างไร
ผมก็คิดว่าจะทำ check list ให้นักศึกษาได้เรียนรู้
เผื่อว่านักศึกษาต้องไปเข้ารับการสัมภาษณ์ในอนาคต
1. ตรวจยืนยันว่าปัญหานั้นเกิดขึ้นจริง ให้เห็นกับตา
2. ตรวจ email client program ติดต่อกับ email server ได้ปกติ
3. ตรวจ junk mail ใน receiver ของผู้รับว่ามีหรือไม่
4. ตรวจ port 25 + 110 หรือ service start ไว้หรือไม่
5. ตรวจ ip, dns, firewall, network, switch ว่าทำงานกันปกติ
6. ตรวจ mail log ว่ามี error ว่าอย่างไร (มีหลายแบบ)
7. ตรวจ relay sever ที่ใช้งานอยู่ ทำงานปกติ
8. ตรวจ black list ว่าติดร่างแหไปหรือไม่
9. ตรวจ script และ data เพราะ php อาจมีปัญหากับ unicode
10. ตรวจองค์ประกอบอื่น ๆ ที่เกี่ยวข้องทั้งเครือข่าย และระบบปฏิบัติการ
ตรวจพบอะไรก็แก้ไข และทดสอบใหม่จนกว่าจะส่งอีเมลได้สำเร็จ
สอดคล้องกับเพื่อนที่โรงพยาบาล สอบถามเรื่องการออกข้อสอบ
ผมก็แนะนำไปว่าไม่ต้องถามเยอะ ไม่ต้องถามลึก ๆ
หาคำถามที่ใช่สัก 2 – 3 ข้อก็รู้แล้ว
เช่น “เล่าขั้นตอนการวางเครื่องข่ายที่เคยทำมาให้ฟังหน่อย”
แต่เรื่องเครือข่ายนี่เป็นคำถามกว้างไป ตอบได้กว้าง ๆ ตามทฤษฎีได้เลย
ถ้าถามลึกเลยก็ต้องแบบที่ถาม อ.อนุชิต เรื่องส่งอีเมลไม่ออกนี่หละ
เลี้ยงส่งท่านไปรับราชการที่กรมฯ

มีปัญหา 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/

พบปัญหา ส่งอีเมลไม่ออกจาก mail server

maillog
maillog

บันทึกการเข้าไปตรวจสอบ postfix บน redhat5 ดังนี้
1. เริ่มต้นด้วยการเข้าดูข้อมูลใน log
ว่าส่งแล้วมีผลเป็นอย่างไร
#tail -n 50000 maillog |grep delivery
พบว่า ไม่พบรายการที่ส่งได้ในช่วงเวลาไม่นานก่อนหน้านี้

2. ใช้ nslookup ตรวจสอบ domain name
พบว่าตัวแรกไม่ตอบ ตอบแต่ตัวที่สอง
ตัวที่ work อยู่คือ xxx.xxx.199.32
และตัวที่ไม่ work คือ xxx.xxx.55.55
สามารถใช้ http://cqcounter.com/whois/
ตรวจสอบได้ว่าอยู่ที่ใด และใครดูแลอยู่

3. เข้าไปแก้ไข resolv.conf ให้เหลือเฉพาะที่ใช้งานได้
แล้ว restart เครือข่ายใหม่
ด้วย #/etc/init.d/network restart

4. ทดสอบส่งอีเมลด้วย #mail xxx@xxx.com
เมื่อค้น delivery ด้วยคำสั่งที่ 1 ก็พบว่ามาปกติ
และที่มาก็มากันหลายฉบับ เพราะคั้งค้างระหว่างการทดสอบก่อนหน้านี้

5. สรุปว่า dns ที่เราใช้อาจตื่นบ้าง หลับบ้าง ต้องหมั่นตรวจสอบ

มองไม่เห็น host ทำให้ postfix ปฏิบัติการไม่ลุล่วง

nslookup และ host not found
nslookup และ host not found

เล่าสู่กันฟัง
วันนี้เพื่อนแจ้งปัญหา
ว่า postfix บน linux server
ซึ่งให้บริการ smtp สำหรับส่งอีเมลจากระบบ web page
ไม่ทำงานตามปกติ เหมือนเช่นเคย ๆ มาหลายวันแล้ว

จึงตรวจจาก /var/log/maillog
พบว่าเครื่องบริการไม่สามารถติดต่อ relay.cat.net.th
จึงใช้ nslookup เข้าไปตรวจดู
ก็ไม่รู้จักจริง ๆ ทั้ง www.cat.net.th และ relay.cat.net.th
แต่ใน pc ใช้งานได้ปกติ
ใช้ nslookup ตรวจ www.facebook.com พบเฉยเลย

เข้าไปเปลี่ยนใน /etc/postfix/main.cf
ให้ relay ชี้ไปที่ ip แทนชื่อ host name ก็ไม่เกิดผล
และไม่น่าใช่ทางแก้ปัญหาด้วย

ลอง restart service 2 ตัวคือ named และ network
ปรากฎว่า nslookup และ postfix ทำงานได้ปกติ

แล้ว restart เครื่อง พบว่ามีปัญหาเดิม
แต่ restart service 2 ตัว อีกครั้ง ก็ใช้ nslookup ได้ปกติ
และระบบ postfix ทำงานได้ปกติ

สรุปว่า การทำงานของ service 2 ตัว
มีตัวใดตัวหนึ่งมีปัญหา แต่ผมยังไม่ได้เข้าไปแกะต่อครับ

ตรวจสอบเครื่องบริการ SMTP

postfix for SMTP service
postfix for SMTP service

26 ก.ย.56 เล่าสู่กันฟัง
หนึ่งในกิจกรรมของการทำงานกับเครื่องบริการ คือ Monitor
1. เข้าตรวจสอบ ติดตามเครื่องบริการเกี่ยวกับ SMTP
ว่าบริการถูกเรียกใช้ตามปกติหรือไม่
#netstat -na |grep 25 ก็พบว่า port นี้เปิดบริการอยู่
#netstat -na |grep LISTEN ก็พบว่าเปิดบริการอยู่
#cat /etc/redhat-release ดูรุ่นที่ใช้อยู่ พบว่าเก่าอยู่สักหน่อย ปัจจุบันสิบกว่าแล้ว
Fedora Core release 4 (Stentz)
#ps -aux|grep postfix พบว่า postfix เปิดบริการ smtp อยู่
#/etc/init.d/postfix status พบว่า running
#/etc/init.d/postfix stop เมื่อต้องการปิดบริการ

2. เหตุที่สนใจเรื่องนี้
เพราะเป็นการเฝ้าตรวจการทำงานของเครื่องบริการตามปกติ
#ls /var/log/maillog* -al ดูปริมาณของแต่ละแฟ้ม
#tail /var/log/maillog –lines=300 ดูรายการ 300 บรรทัดล่างสุด
#cat /etc/postfix/main.cf |grep relayhost กำหนดไว้แล้ว
สรุปว่ามีการกำหนด relay ใน main.cf ซึ่งสัมพันธ์กับ maillog ที่บันทึกไว้

แก้ปัญหา forward mail ไม่ถึง gmail.com

9 ก.ย.53 วันนี้คุณแบงค์บ่นว่าไม่ได้รับ forword mail จากเครื่องบริการที่ส่งไปถึง gmail.com มานานแล้ว ผมเข้าไปตรวจใน aliases ก็พบว่ากำหนดไว้ปกติ และอัพเดทแล้ว เข้าไปตรวจใน maillog พบว่า message ว่า  Name service error for name=spamassassin type=A เมื่อตรวจสอบ ก็พบว่าปัญหาคือ ในแฟ้ม /etc/postfix/master.cf ได้กำหนด relayhost = spamassassin นั้นผิด เมื่อเปลี่ยนเป็น relay.cat.net.th ก็ไม่พบปัญหา forward mail ไม่ไปอีก

รายงานความพยายามหยุดยิงเมลจาก server

14 ส.ค.53 สังเกตอาการครึ่งวันที่ผ่านมา ผลเป็นที่น่าพอใจกรณีหยุดยิงออก คือ 1) ผลการรับ และส่งระหว่าง hotmail.com และ gmail.com ได้ระดับหนึ่ง หลังย้าย smtp ของ webmail กลับมาที่เครื่อง it เพราะพบว่าเครื่อง cat ปฏิเสธให้บริการ อาจเป็นเพราะเรายิงมากไป จนเขากรองไม่ไหวเรื่อง black list (ไว้ว่ากันภาคต่อไป) สรุปว่าการติดต่อกับ gmail มีปัญหาทั้งส่งไม่ออกและรับไม่ได้ ส่วน hotmail พบว่าส่งไปหา hotmail แล้วหายไป แต่รับจาก hotmail ได้ เครื่องบริการรับส่งในเครือข่ายได้ รับจาก hotmail และที่อื่นได้ ยกเว้นที่ gmail เป็นต้น (ปัญหา hotmail กับ gmail มีแนวทางแก้ไข จะว่ากันภาำคต่อไป ถ้าเครื่องเราสะอาดแล้ว ย่อมแก้ไขได้) 2) การแก้ไขอาการส่งอีเมลจากเครื่องบริการเป็น junk ไปหาคนอื่น หรือที่เรียกว่าถูกใช้ยิงเมล ซึ่งเป็นปัญหาที่พยายามแก้มา 2 สัปดาห์หายไปแล้ว เพราะใช้ spamassassin จับ postfix ใน master.cf สำหรับขาใน คือ unix 3) การยิงผ่าน squirrelmail ถูกหยุดได้แล้ว โดยใช้ deny from 41.0.0.0/32 กับ virtual host:ssl พบว่าไม่มีการยิงผ่าน compose.php อีก ใช้วิธีการ block ผ่าน apache แทนการ upgrade application 4) สรุปว่าอาจเป็นการพักรบ .. จึงต้อง monitor กันต่อไป ว่า log ตัวใดจะแสดงอาการผิดปกติให้เห็นอีก เพราะที่สังเกตพบ ได้มาจาก maillog และ access_log และ ps -aux และ /var/mail เป็นหลัก
+ http://www.thaiall.com/isinthai

ปัญหาเครื่องบริการไม่รับเมลเข้า และ reset password ของ root

reset fedora root password

4 เม.ย.53 วันนี้เป็นอีกปีหนึ่งที่ผมไม่สะดวกไปไหว้เจ้าที่สุสานบรรพบุรุษชาวจีน เพราะมีงานสอนตอน 8.30 น. จึงไม่ได้พบปะครอบครัวเหมือนเช่นทุกปี ประกอบกับมีอะไรคาใจทำให้อยากไปทำงานก่อนเวลา เพราะเมื่อคืนนี้ได้ตรวจอีเมลพบว่าคนจาก Intrusion Detection Team @spawar.navy.mil ส่งอีเมลมาแจ้งว่า 1) เครื่องหนึ่งในเครือข่ายของเราได้ scan เครือข่ายของเขา หรือ 2) ผู้ใช้คนหนึ่งในเครือข่ายของเราได้ scan เครือข่ายของเขา โดยใช้ port 22 เข้าไป 129 addresses ในใจก็เชื่อครึ่งไม่เชื่อครึ่ง แต่มาแน่ใจว่าจริงก็เพราะผมเข้า root ของ fedora core 4 ไม่ได้
     มีการดำเนินการกับเครื่องบริการ ดังนี้ 1) เปลี่ยนรหัสผ่านของ root ใหม่ โดยรีบูต แล้วกด esc ขณะอยู่ใน grub แล้วกด a แล้วพิมพ์เลข 1 ต่อท้ายบรรทัดเดิม เช่น ro root=LABEL=/ rhgb quiet 1 เมื่อพบเครื่องหมาย # ก็ใช้ passwd เปลี่ยนรหัสผ่านของ root แล้ว reboot 2) ใช้ last, du, ls -alt, cat passwd, netstat -tap ตรวจว่า account อะไรถูก hack แล้วแก้ไขทีละ account ด้วยเหตุด้วยผล 3) ตรวจว่ามีบริการอะไรเปิด ด้วย service –status-all และ chkconfig –list  ถ้าบริการใดไม่ใช้ก็จะปิดบริการนั้น เช่น service sshd stop และ chkconfig sshd off 4) พบว่าอีเมลไม่เข้า หรือเข้าน้อยมาก มีปัญหานี้อยู่เกือบหนึ่งวันหลังแก้ไขในตอนเช้า จึงตรวจแล้วพบว่า postfix ไม่เปิดบริการ จึงใช้ cat maillog ก็พบว่าข้อกำหนดของ /etc /postfix /main.cf ใน postfix เป็นสาเหตุทำให้ start ไม่ขึ้น เพราะห้าม myhostname และ relayhost เป็นตัวเดียวกัน จึงเข้าไปเปลี่ยนแฟ้ม main.cf เป็นแบบไม่กำหนดคือ relayhost = หลังจากนั้นก็รับอีเมลได้ปกติ
http://fedorasolved.org/Members/realz/reset-root-password/

แก้ postfix ให้รับอีเมลยืนยันจาก thailis

1 ต.ค.52 อ.อัศนีย์ ณ น่าน ประสานโครงการ Thailis แล้วสมัครสมาชิกเป็นผู้ใช้ เพื่อสืบค้น fullpaper research ฉบับเต็ม เพราะการดำเนินการเป็นผู้ให้บริการข้อมูลจำเป็นต้องมีขั้นตอน และใช้เวลา จากนั้นคุณธรณินทร์ สุรินทร์ปันยศ สมัครเป็นผู้ใช้ด้วย e-mail gmail.com ก็ได้รับอีเมลยืนยันการสมัคร และสืบค้นได้ตามปกติ แต่คุณอนุชิต ยอดใจยา และผมสมัครด้วย e-mail ของมหาวิทยาลัย แต่ไม่ได้รับอีเมลยืนยันใดเลย ซึ่งปัญหานี้เป็นไปได้ 2 กรณีคือ 1)thailis server ไม่ส่งเข้ามหาวิทยาลัย 2)server มหาวิทยาลัยมองเป็น bad mail จากข้อสงสัยข้อที่ 2 จึงเข้าไปตรวจ mail log ของคุณอนุชิต ยอดใจยา ก็พบข้อความว่า “Sender address rejected: Domain not found” และพบว่าเครื่องส่ง mail ของ thailis ถูกปฏิเสธ วิธีแก้ไขที่ง่ายคือแก้ที่ตัวเรา ถ้าแก้ที่ต้นเหตุอาจต้องคุยกันยาว
      ดำเนินการแก้ปัญหา 1)เข้าห้อง /etc/postfix ใน mail server 2)เปิดแฟ้ม main.cf ด้วย vi 3)พบค่า config ว่า smtpd_sender_restrictions = reject_unknown_sender_domain 4)ยกเลิกค่าในข้อ 3 5)reboot server ก็จะได้รับ email จาก thailis ตามปกติ ทำตาม 5 ขั้นตอนข้างต้น ผมก็สืบค้นงานวิจัย และ download fullpaper research ได้แล้ว ผลการทดสอบ download พบบทความเรื่อง scorm ของ อ.อิงอร วงษ์ศรีรักษา ซึ่งเป็นงาน scan จากเอกสารขนาด 5 หน้า
+ http://tdc.thailis.or.th/tdc/

แก้ไขการส่งเมลจาก hotmail.com ไม่เข้าองค์กร

18 ก.ย.52 คุณเรณู อินทวงศ์ แจ้งว่าส่งต่อ (forward) แฟ้มแนบ 7 MB เข้ามหาวิทยาลัยไม่ได้ คุณอนุชิต ยอดใจยา ได้ทดสอบ พบว่า แฟ้มที่ขนาดไม่ถึง 5 MB ส่งได้ ถ้าสูงกว่า 5 MB จะส่งไม่เข้า และเด้งกลับไป hotmail.com ในเวลาอันสั้น จึงดำเนินการค้นหาข้อมูล และทดสอบในหลายกรณีดังนี้ 1)พบว่า Windows Live Hotmail ไม่ได้รองรับการแนบไฟล์บางประเภท ทำให้ผู้รับอีเมลจะไม่สามารถดาวน์โหลดหรือเปิดสิ่งที่แนบได้ แฟ้มที่อนุญาต เช่น .zip .rar .doc เป็นต้น ส่วนแฟ้มที่ไม่อนุญาต เช่น .asp .bas .bat .mdb .mde .tmp .url .vb .vbe .vbs .exe เป็นต้น ถ้าพยายามแนบแฟ้มจาก  hotmail.com จะพบคำว่า “เพื่อรักษาความปลอดภัยของคุณและความปลอดภัยของบุคคลอื่น คุณไม่สามารถแนบไฟล์ที่มีนามสกุลนี้” 2)ขนาดแฟ้มแนบต่อครั้งมิใช่ต่อแฟ้ม มีขนาดสูงสุดไม่เกิน 10 MB 3)ทดสอบส่งอีเมลขนาด 7 MB จาก hotmail.com ของคุณเรณู  ถึงมหาวิทยาลัย พบข้อความว่า “Delivery Status Notification (Failure)” ตอบมาจาก postmaster@mail.hotmail.com เมื่อค้นหาจาก google.com พบมากกว่า 1 ล้านเว็บเพจ เมื่ออ่านในแฟ้มที่แนบกลับมาคือแฟ้ม ATT00001 พบคำว่า “Size greater than allowed by Remote Host” จึงมั่นใจว่าปัญหาอยู่ที่ Remote Host หรือเครื่องของผมเอง 4)ผมเข้าไปตรวจสอบ postfix ด้วย postconf -n แสดงค่าที่ config และ postconf -d แสดงค่าปริยาย จึงได้ข้อสรุปจากการทดสอบว่า ต้องแก้แฟ้ม /etc/postfix/main.conf   โดยเพิ่ม message_size_limit = 51000000 เพื่อขยายการรับต่อฉบับเป็น 50 MB แม้ค่าปริยายของ message_size_limit = 10240000 ก็ไม่มีผล จึงรับขนาด 7 MB ไม่ได้ในตอนแรก สรุปว่า Forward แฟ้ม 7 MB จาก hotmail.com เข้ามหาวิทยาลัยได้แล้วแต่ผลการทดสอบมี delay นิดหน่อย