เชิงเทคนิค · คำตอบพร้อมแหล่งอ้างอิง
วิธีตรวจสอบว่าพอร์ต 587 เปิดอยู่หรือไม่
คุณตรวจสอบว่าพอร์ต 587 เปิดอยู่หรือไม่ได้ด้วยเครื่องมือบรรทัดคำสั่ง เช่น telnet, netcat หรือ PowerShell โดยลองเชื่อมต่อกับเซิร์ฟเวอร์ SMTP หากเชื่อมต่อสำเร็จ เซิร์ฟเวอร์มักตอบกลับด้วยรหัสทักทาย 220 ซึ่งบ่งบอกว่าพอร์ตเปิดอยู่และรับการเชื่อมต่อสำหรับการส่งอีเมล (mail submission)
ใช้ Telnet ทดสอบการเชื่อมต่อ
Telnet เป็นเครื่องมือมาตรฐานสำหรับทดสอบการเชื่อมต่อ TCP รันคำสั่ง telnet smtp.example.com 587 ในเทอร์มินัล หากหน้าจอว่างเปล่าหรือแสดงคำทักทายจากเซิร์ฟเวอร์ แสดงว่าพอร์ตเปิดอยู่ หากได้รับข้อผิดพลาด connection refused หรือ timeout แสดงว่าพอร์ตปิดหรือถูกไฟร์วอลล์บล็อก โปรดทราบว่าอาจต้องเปิดใช้ telnet ใน Windows Features ก่อนใช้งาน
ใช้ Netcat (nc) บน Linux และ macOS
Netcat เป็นยูทิลิตีที่ทรงพลังสำหรับดีบักเครือข่าย ใช้คำสั่ง nc -zv smtp.example.com 587 แฟลก z สั่งให้ netcat สแกนหา daemon ที่กำลังรับฟังโดยไม่ส่งข้อมูล และแฟลก v เปิดผลลัพธ์แบบละเอียด ผลลัพธ์ที่สำเร็จจะระบุชัดเจนว่าการเชื่อมต่อกับพอร์ตสำเร็จ ส่วนความล้มเหลวจะแสดงว่าการเชื่อมต่อ timeout หรือถูกปฏิเสธ
ใช้ PowerShell บน Windows
สำหรับผู้ใช้ Windows ที่ไม่มี telnet PowerShell มี cmdlet Test-NetConnection รันคำสั่ง Test-NetConnection -ComputerName smtp.example.com -Port 587 ผลลัพธ์จะมีค่าบูลีน TcpTestSucceeded หากเป็น True แสดงว่าพอร์ต 587 เปิดอยู่ วิธีนี้เหมาะกับสภาพแวดล้อม Windows สมัยใหม่ เพราะให้ข้อมูลวินิจฉัยโดยละเอียดเกี่ยวกับเส้นทางเครือข่าย
แก้ไขปัญหาพอร์ตถูกบล็อก
หากพอร์ต 587 ปิดอยู่ ให้ตรวจสอบการตั้งค่าไฟร์วอลล์ในเครื่องและข้อจำกัดของ ISP ISP สำหรับที่พักอาศัยจำนวนมากบล็อกพอร์ตอีเมลขาออกเพื่อป้องกันสแปม คุณใช้ SendHQ หรือเครื่องมือฟรี (https://sendhq.cc/tools) ตรวจสอบการตั้งค่าจากภายนอกเพื่อให้แน่ใจว่าเข้าถึงเซิร์ฟเวอร์เมลได้จากอินเทอร์เน็ตสาธารณะ และตรวจสอบให้ security group ของผู้ให้บริการคลาวด์อนุญาตทราฟฟิกขาออกบน TCP 587
ทำความเข้าใจพอร์ต 587 และ STARTTLS
พอร์ต 587 เป็นพอร์ตมาตรฐานสำหรับการส่งอีเมล (mail submission) ต่างจากพอร์ต 465 ที่ใช้ implicit TLS พอร์ต 587 เริ่มเป็นการเชื่อมต่อแบบข้อความธรรมดา แล้วอัปเกรดเป็นการเชื่อมต่อที่ปลอดภัยด้วยคำสั่ง STARTTLS จึงเป็นเหตุผลที่การตรวจสอบ TCP อย่างง่ายยืนยันได้ว่าพอร์ตเปิดอยู่ แต่ต้องทำ SMTP handshake เต็มรูปแบบจึงจะยืนยันได้ว่าการเข้ารหัสทำงานถูกต้อง
คำถามที่ทีมมักถาม
พอร์ต 25 กับ 587 ต่างกันอย่างไร
พอร์ต 25 ใช้เป็นหลักสำหรับการ relay ระหว่างเซิร์ฟเวอร์ ส่วนพอร์ต 587 เป็นพอร์ตที่กำหนดสำหรับการส่งอีเมลจากไคลเอนต์ไปยังเซิร์ฟเวอร์
ทำไมการเชื่อมต่อบนพอร์ต 587 จึง timeout
Timeout มักบ่งชี้ว่าไฟร์วอลล์ทิ้งแพ็กเก็ต ให้ตรวจสอบไฟร์วอลล์ของระบบปฏิบัติการในเครื่อง เราเตอร์เครือข่าย หรือกฎ security group บนคลาวด์
การเชื่อมต่อ telnet สำเร็จหมายความว่าอีเมลจะส่งได้หรือไม่
ไม่ เพียงยืนยันว่าพอร์ต TCP เปิดอยู่ คุณยังต้องมีการยืนยันตัวตนที่ถูกต้องและคำสั่ง SMTP ที่ถูกต้องจึงจะส่งอีเมลสำเร็จ
พอร์ต 587 ปลอดภัยหรือไม่
พอร์ต 587 ปลอดภัยเมื่อใช้กับ STARTTLS ซึ่งเข้ารหัสการสื่อสารหลังจากสร้างการเชื่อมต่อเริ่มต้นแล้ว
แหล่งข้อมูลหลัก
- ทะเบียนชื่อบริการและหมายเลขพอร์ตของโปรโตคอลการรับส่งข้อมูล (Service Name and Transport Protocol Port Number Registry) — IANA
- ข้อกำหนด RFC 3207: SMTP Service Extension for Secure SMTP over Transport Layer Security — RFC Editor
- ข้อกำหนด RFC 8314: Cleartext Considerations for Post-SMTP Email Protocols — RFC Editor