Category: Email


หากเราใช้ Android เชื่อมต่อกับเมล์เซิร์ฟเวอร์แล้วได้ error message ว่า “ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ (500 #5.5.1 command not recognized)”

เมื่อทดสอบด้วยคำสั่ง EHLO จะไม่ผ่าน แต่หากใช้ HELO สามารถทำงานได้

S: 220 ************************
C: EHLO www.google.com
S: 500 #5.5.1 command not recognized
C: HELO www.google.com
S: 250 smtp01.modplusplus.com

ขออธิบายดังนี้ การทำงานของ SMTP จะทำงานได้อยู่ 2 โหมดคือ
1) โหมดดังเดิม (HELO)
2) โหมดเพื่อประสิทธิภาพ (EHLO หรือ Enhanced HELO) โดยโหมดนี้จะเพิ่มความสามารถในเรื่องการเข้ารหัสลับ TLS, การพิสูจน์ตน, และอื่นๆ

ปัญหานี้เกิดจาก 2 ปัจจัยคือ
1) มีอุปกรณ์เน็ตเวิร์คบางตัวไม่ยอมให้ใช้ EHLO เพราะจะไม่สามารถตรวจสอบข้อมูลได้หากเปิดการใช้งานเข้ารหัสลับ TLS ซึ่งอุปกรณ์เน็ตเวิร์คดังกล่าวคือยี่ห้อ Cisco ไม่ว่าจะเป็น PIX, ASA, หรือแม้แต่ firewall service module หากเปิดใช้งานฟีเจอร์ inspect esmtp มันจะแก้ return code ปกติที่เป็น 250 จากเมล์เซิร์ฟเวอร์เป็น 5xx แทนครับ
2) mail client เจ้าอื่นๆ หากใช้ EHLO ไม่ได้มันยอมกลับไปใช้ HELO แต่ว่า Android มันไม่ยอม ต้องใช้ EHLO เท่านั้น

ดังนั้นวิธีแก้ง่ายมากครับ ปิดฟีเจอร์นี้ที่อุปกรณ์ Cisco วิธีการสามารถอ่านเพิ่มเติมจากคู่มือของ Cisco หน้า 14-10 http://www.cisco.com/en/US/docs/security/asa/asa83/command/reference/cmdref.pdf

หมายเหตุ: ในบางอุปกรณ์ Cisco บางเวอร์ชั่นจะสามารถใช้ EHLO ได้ แต่เมื่อมีการใช้งานคำสั่ง STARTTLS อุปกรณ์ Cisco ที่เปิดฟีเจอร์ดังกล่าว จะแก้ไข STARTTLS เป็น ******** เพื่อไม่ให้ใช้งานเข้ารหัสลับ TLS ได้เหมือนกันครับ

Advertisement

หากเราต้องการให้ทุกอีเมล์ที่ส่งออกจาก Microsoft Outlook มีลายเซ็นหรือข้อมูลติดต่อของเราอยู่ทุกฉบับ เราสามารถสร้างลายเซ็นได้ และเวลาเขียนอีเมล์ทุกครั้งตัวโปรแกรม Microsoft Outlook จะเติมลายเซ็นให้อัตโนมัติ ทำได้โดย

1) เลือก File แล้วเลือก Option

2) เลือก Mail แล้วเลือก Signature

3) ในหน้านี้เราสามารถเลือก New สร้างลายเซ็นได้ เมื่อทำเสร็จแล้วอย่าลืม save นะครับ รวมถึงเราสามารถสร้างได้หลายๆ ลายเซ็น แล้วกำหนดให้ถ้าเขียนเมล์ใหม่ให้ใช้ลายเซ็นแบบหนึ่ง แต่ถ้า reply ใช้ลายเซ็นอีกแบบก็ทำได้เช่นกัน

หากที่ออฟฟิสมีเมล์เกตเวย์ไว้กรองสแปมอยู่แล้ว และเราต้องการปิดการใช้งาน junk mail filter ใน Outlook สามารถทำได้โดย
1) ไปที่ริบบอน Home
2) เลือก Junk
3) เลือก Junk E-Mail Options…
Outlook Junk Mail 01

4) ในแทป Option เราสามารถเลือกระดับได้ตามใจชอบครับ ถ้าต้องการปิดฟีเจอร์นี้ก็เลือก No Automatic Filtering ได้ครับ
Outlook Junk Mail 02

ใครที่ใช้ Outlook คุยกับ Exchange ผ่าน MAPI (ซึ่งปกติก็น่าจะใช้นะครับ เพราะของพร้อมขนาดนี้แล้วจะไปใช้ IMAP อยู่ทำไม) แล้วบังเอิญเกิดปัญหาว่าขึ้นว่า Trying to connect… อยู่บ่อยๆ เราสามารถดูรายละเอียดการเชื่อมต่อได้นะครับ โดยใส่ parameter /rpcdiag เข้าไปแบบนี้

"C:\Program Files\Microsoft Office\Office14\OUTLOOK.EXE" /rpcdiag

Outlook RPCDiag

เท่านี้เราก็รู้แล้วว่าปัญหาเกิดขึ้นที่ไหน จะได้ไปเถียงกับ Exchange Admin ถูก 😀

DNS MX record หรือ Mail Exchanger Record เป็นข้อมูล DNS ชนิดหนึ่ง ซึ่งแทนที่จะใช้แปลงจาก Name เป็น IP เหมือนกับ DNS A record ทั่วไป แต่ MX record จะเป็นตัวบอกว่าเมล์เซิร์ฟเวอร์ของโดเมนของเราอยู่ที่เครื่องไหน เช่นหากต้องการรู้ว่า MX record ของโดเมน microsoft.com คือเครื่องไหนให้ใช้คำสั่ง

nslookup -qt=mx hotmail.com

จะมีผลลัพธ์แบบนี้

microsoft.com MX preference = 10, mail exchanger = mail.messaging.microsoft.com

หมายความว่า อีเมล์ที่ส่งหาโดเมน microsoft.com จะส่งไปที่เครื่องเซิร์ฟเวอร์ mail.messaging.microsoft.com หากอยากดูโดเมนอื่นก็ใส่โดเมนเข้าไปท้ายคำสั่งแทน


ซึ่งหากมี MX หลายๆ ตัวก็จะได้แบบนี้

hotmail.com MX preference = 5, mail exchanger = mx4.hotmail.com
hotmail.com MX preference = 5, mail exchanger = mx1.hotmail.com
hotmail.com MX preference = 5, mail exchanger = mx2.hotmail.com
hotmail.com MX preference = 5, mail exchanger = mx3.hotmail.com



นอกจากนี้ยังสามารถกำหนดลำดับโดยใช้ MX preference ได้ ซึ่งค่าที่น้อยที่สุดจะมีถูกใช้ก่อน ถ้าส่งไม่สำเร็จก็จะพยายามติดต่อไปยังเครื่องที่มี preference สูงขึ้นต่อไป เช่น

nectec.or.th MX preference = 20, mail exchanger = maildr.nectec.or.th
nectec.or.th MX preference = 10, mail exchanger = imail.nectec.or.th

เวลาทำงานเมล์เซิร์ฟเวอร์ต้นทางจะพยายามส่งไป imail ก่อน หากไม่สำเร็จจะส่งต่อไปยัง maildr


ตัวอย่างข้างล่างเป็น combo set หลายๆ MX ที่มี preference เท่ากัน และ preference ต่างกัน

ironport.com MX preference = 10, mail exchanger = soma-c601.ironport.com
ironport.com MX preference = 20, mail exchanger = soma-c602.ironport.com
ironport.com MX preference = 20, mail exchanger = cas1-c604.ironport.com
ironport.com MX preference = 10, mail exchanger = cas1-c603.ironport.com



เราสามารถเอามาประยุกต์ใช้กับการเปลี่ยน IP ของเมล์เกตเวย์หรือย้าย ISP ได้ด้วยนะครับ
สมมุติปัจจุบันเรามี MX เป็น

example.com MX preference = 30, mail exchanger = oldisp.example.com

สิ่งที่ต้องทำคือสร้าง MX เพิ่มล่วงหน้าซัก 1-2 วันก่อนเปลี่ยน และให้ preference น้อยกว่า

example.com MX preference = 30, mail exchanger = oldisp.example.com
example.com MX preference = 20, mail exchanger = newisp.example.com

ซึ่งระหว่างที่ยังใช้ IP เดิม ก็จะพยายามส่งมาที่ newisp.example.com แต่ไม่มีใครตอบ จึงพยายามส่งอีกครั้งไป oldisp.example.com และเมื่อเปลี่ยนมาใช้ IP ใหม่ ก็จะส่งเข้า newisp.example.com ได้เลย
และหลังจากที่เปลี่ยน ISP เรียบร้อยแล้ว มั่นใจว่าจะไม่ย้ายกลับก็ลบของเดิมออกได้ครับ

example.com MX preference = 20, mail exchanger = newisp.example.com

นอกจากนี้หากไม่ต้องการรอนานหลักวันอาจลดค่า TTL ของ MX record ให้เหลือเป็นหลักสิบนาที เพื่อให้ DNS server ในอินเทอร์เน็ตลดเวลาที่เก็บใน local cache ทำให้ผู้อื่นเห็นข้อมูลใหม่เร็วขึ้นก็ได้ครับ แต่จะมีโหลดเพิ่มขึ้นที่ DNS server ของเราได้ ทำให้บางครั้ง ISP อาจไม่ยอมคอนฟิกค่า TTL ให้ครับ

Simple Mail Transfer Protocol (SMTP) เป็นโพรโทคอลหรือกฏเกณฑ์ที่ใช้ในการส่งอีเมล์ โดยหากใช้ในอินเทอร์เน็ตจะทำงานอยู่บนพอร์ต TCP 25 และจะใช้ร่วมกับ DNS MX record เพื่อค้นหาเมล์เกตเวย์ของปลายทาง แต่หากใช้ส่งกันระหว่างเซิร์ฟเวอร์ภายในองค์กร อาจเปลี่ยนไปใช้พอร์ตอื่นนอกเหนือจาก TCP 25 ก็ได้เช่นกัน

เมล์เซิร์ฟเวอร์ที่กันในปัจจุบันสนับสนุนโพรโทคอล SMTP กันหมด แม้แต่ของซื้อของขายอย่าง Microsoft Exchange และ IBM Lotus Domino ซึ่งเวลาคุยกันภายในองค์กรจะใช้โพรโทคอลของตัวเอง แต่ถ้าต้องวิ่งออกอินเทอร์เน็ตก็ใช้ SMTP ซึ่งเป็นมาตรฐานกลางได้เหมือนกับค่ายโอเพ่นซอร์ส

เนื่องจากอายุอานามของ SMTP พอๆ กับอินเทอร์เน็ต ซึ่งเลยหลักสี่มานานแล้ว เลยทำให้ SMTP มีปัญหาสำคัญคือเรื่องความปลอดภัยที่ไม่ค่อยจะสู้ดีนัก เพราะข้อมูลที่ส่งกันด้วย SMTP จะเป็นตัวอักษรล้วน (plain text) ใครส่งจดหมายรักถึงใคร คนที่อยู่กลางทางอ่านได้หมด ดังนั้นจึงมีการปรับปรุงเป็น ESMTP โดยตัว E นั้นก็คือ Extended หรือ Enhanced หมายถึง SMTP เวอร์ชั่นปรับปรุงนั่นเอง โดยความสามารถที่เพิ่มเด่นๆ ก็จะเป็นการพิสูจน์ตนก่อนส่ง (user authentication) และการเข้ารหัสลับระหว่างที่ส่ง (SMTP over TLS)

หากใครจะลองส่งเมล์จาก telnet โดยใช้ SMTP ก็สามารถลองทำตามได้นะครับ

Telnet mailgateway.xyz.com 25

รอเซิร์ฟเวอร์ปลายตอบรับ จากนั้นก็ลองทำตามครับ S: หมายถึงเซิร์ฟเวอร์ปลายทาง C: หมายถึงไคลเอนท์ของเรา

S: 220 mailgateway.xyz.com
C: HELO mypc.abc.com
S: 250 Hello mypc.abc.com
C: MAIL FROM: <modplusplus@abc.com>
S: 250 Ok
C: RCPT TO: <somchai@xyz.com>
S: 250 Ok
C: DATA
S: 354 End data with <CR><LF>.<CR><LF>
C: From: "Mod++" <somchai@xyz.com>
C: To: "Somchai Saetung" <somchai@xyz.com>
C: Subject: Test
C:
C: Hello World
C: .
S: 250 Ok: queued as 123
C: QUIT
S: 221 Bye

เพียงเท่านี้เราก็สามารถส่งเมล์ได้โดยไม่ต้องง้อ Outlook แล้วครับ 😀

สมมุติว่าเราเป็นพนักงานของบริษัท abc จะส่งเมล์ไปยังบริษัท xyz การทำงานของระบบอีเมล์จะเริ่มตั้งแต่
1) เราเปิดโปรแกรม Outlook เขียนเมล์ถึง somchai@xyz.co.th โปรแกรมจะส่งเมล์ไปยังเมล์เซิร์ฟเวอร์ของเราก่อน
2) เมล์เซิร์ฟเวอร์ของเราจะส่งอีเมล์ไปให้เมล์เกตเวย์เพื่อตรวจสอบหาไวรัสและสแปม
3) เมล์เกตเวย์จะวิ่งไปถาม DNS server ว่าเมล์เกตเวย์ของผู้รับซึ่งก็คือ xyz.co.th อยู่ที่ไหน
4) เมล์เกตเวย์ของเราจะส่งอีเมล์ไปยังเมล์เกตเวย์ของผู้รับซึ่งก็คือ xyz.co.th
5) เมล์เกตเวย์ของผู้รับจะตรวจสอบไวรัสและสแปม ถ้าผ่านก็จะส่งต่อให้เมล์เซิร์ฟเวอร์ของผู้รับ
6) เพื่อผู้รับเปิดโปรแกรมอีเมล์ เมล์จะถูกโหลดจากเมล์เซิร์ฟเวอร์มาที่เครื่องไคลเอนท์และแสดงผล

Basic Email Flow Diagram

โอกาสหน้าจะมาพูดถึงแล้วถ้าเป็นฟรีอีเมล์อย่าง hotmail หรือ gmail จะต่างจากอีเมล์ของบริษัททั่วไปอย่างไร แล้วเจอกันครับ 😀

หลายๆ คนคงเคยได้รับจดหมายโฆษณาหรือจดหมายขยะ แล้วเราควรจัดการกับจดหมายประเภทนี้อย่างไรดี มีคำแนะนำดังนี้ครับ

กรณี A หากเรามั่นใจว่าผู้ส่งมีตัวตนที่น่าเชื่อถือจริง เช่นเป็นเพื่อนเรา หรือเป็นบริษัทที่เราคุยงานด้วย
คำแนะนำ
1) ไม่ควรคลิ๊กลิงค์ที่แนบมากับจดหมาย โดยเฉพาะอย่างยิ่ง หากก่อนหน้านี้เมล์คุยกันเป็นภาษาไทยทั้งหมด แต่ทำไมรอบนี้ไฮโซส่งมาเป็นภาษาอังกฤษเต็มไปหมดเลย
2) ควรส่งเมล์กลับ หรือแจ้งผู้ส่งด้วยวิธีอื่น ว่าคุณกำลังส่งจดหมายขยะมาหาเรานะ เพราะบางครั้งเครื่องคอมฯผู้ส่งอาจติดไวรัสก็ได้ครับ

กรณี B ผู้ส่งเป็นใครที่ไหนก็ไม่รู้ หรือมาจากบริษัทที่น่าเชื่อถืออย่าง Microsoft หรือ Apple
คำแนะนำ
1) ไม่ควรคลิ๊กลิงค์ที่แนบมากับจดหมาย เพราะลิงค์ที่แสดงผล กับลิงค์ที่วิ่งไปอาจเป็นคนละชื่อ
2) ไม่ควรตอบเมล์กลับ หรือแจ้งว่าส่งผิด เพราะจะเป็นการคอนเฟิร์มว่าเมล์นี้มีคนอ่านจริง และครั้งต่อๆ ไปเค้าก็จะส่งกันมาอีกเยอะกว่าเดิม
3) หากเป็นเมล์แจ้งข่าวสารจากบริษัทที่น่าเชื่อถือ มักจะมีปุ่มหรือวิธีบอกเลิกรับจดหมาย (unsubscribe) อาจทำตามที่บอกก็ได้ แต่หากไม่ได้มาจากผู้ส่งตัวจริงอาจเหมือนข้อที่แล้วได้
4) วิธีที่ดีที่สุด หากเป็น free email เช่น hotmail, gmail, หรือ yahoo แนะนำให้คลิ๊ก mark as spam (หรือชื่อที่ใกล้เคียง) ถ้าทุกคนช่วยกันคลิ๊กเดี๋ยวผู้ให้บริการก็จะบล็อกผู้ส่งให้เอง หรือหากเป็นเมล์บริษัทแนะนำให้ฟอร์เวิร์ดเมล์ไปยัง IT Support ของบริษัทให้จัดการต่อครับ จ่ายค่าจ้างแล้วต้องใช้ให้คุ้ม

ปล. อ่านแล้วอย่าทำตัวเป็นผู้ส่งสแปมเองนะครับ ทั้งสร้างความเดือนร้อนรำคาญให้ผู้อื่นและยังผิดกฏหมายด้วยครับ