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

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

S: 220 ************************
C: EHLO http://www.google.com
S: 500 #5.5.1 command not recognized
C: HELO http://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 ได้เหมือนกันครับ

Advertisements