ทดสอบการเชื่อมต่อ SMTP โดยใช้เซสชัน Telnet ด้วยตนเอง

เผยแพร่แล้ว: 2022-04-04

ผู้ให้บริการเซิร์ฟเวอร์ เช่น DigitalOcean, AWS, Vultr และอื่นๆ บล็อกพอร์ตขาออก 25 ของอีเมลของคุณเพื่อหยุดไม่ให้สแปมผ่านเข้ามา อย่างไรก็ตาม คุณสามารถขอให้พวกเขาเลิกบล็อกได้ตลอดเวลา หากคุณต้องการทราบว่าพอร์ต 25 ของคุณถูกบล็อกหรือไม่ คุณสามารถใช้เซสชัน telnet แบบแมนนวลเพื่อทดสอบการเชื่อมต่อ SMTP

ข้อผิดพลาดในการเชื่อมต่อ SMTP สามารถแก้ไขได้หลายวิธี แต่บรรทัดคำสั่งสามารถตรวจพบได้โดยตรง โดยทั่วไปแล้ว Telnet จะใช้เพื่อทดสอบความล้มเหลวในการเชื่อมต่อ SMTP ในขั้นตอนต่อไป เราจะใช้ Telnet เพื่อทดสอบเซิร์ฟเวอร์อีเมล ส่วนสำคัญของการตั้งค่าเซิร์ฟเวอร์อีเมลคือการทำให้แน่ใจว่า SMTP ทำงานจากบรรทัดคำสั่ง (Linux)

Telnet เป็นวิธีที่ใช้บ่อยที่สุดในการตรวจสอบ SMTP จาก Command Line นอกจากนี้ยังเป็นวิธีที่ใช้กันทั่วไปในการทดสอบ SMTP Relay

สารบัญ

SMTP คืออะไร?

SMTP เป็นโปรโตคอลแบบข้อความที่เน้นการเชื่อมต่อ ซึ่งผู้ส่งเมลเชื่อมต่อกับตัวรับเมลโดยส่งสตริงคำสั่งและให้ข้อมูลที่จำเป็นผ่านช่องทางสตรีมข้อมูลที่ได้รับคำสั่งที่เชื่อถือได้ ซึ่งมักจะเป็นการเชื่อมต่อ Transmission Control Protocol (TCP)

เซสชัน SMTP ประกอบด้วยคำสั่งจากไคลเอนต์ SMTP (เอเจนต์เริ่มต้น ผู้ส่ง หรือตัวส่งสัญญาณ) และการตอบสนองจากเซิร์ฟเวอร์ SMTP (เอเจนต์การรับฟัง หรือผู้รับ) ที่เริ่มต้นเซสชันและแลกเปลี่ยนพารามิเตอร์เซสชัน อาจมีธุรกรรม SMTP เป็นศูนย์หรือมากกว่าในเซสชัน ลำดับคำสั่ง/ตอบกลับสามรายการประกอบขึ้นเป็นธุรกรรม SMTP:

  1. คำสั่ง MAIL หรือที่เรียกว่า return-path, reverse-path, bounce address, mfrom หรือผู้ส่งซองจดหมาย เพื่อตั้งค่าที่อยู่ผู้ส่ง
  2. ในการสร้างผู้รับข้อความ ให้ใช้คำสั่ง RCPT คำสั่งนี้สามารถทำซ้ำได้หลายครั้งตามความจำเป็น หนึ่งคำสั่งสำหรับผู้รับแต่ละคน ซองจดหมายยังมีที่อยู่เหล่านี้
  3. DATA เพื่อระบุจุดเริ่มต้นของข้อความ เนื้อหาของข้อความ ตรงข้ามกับซองจดหมาย ประกอบด้วยบรรทัดว่างระหว่างส่วนหัวของข้อความและเนื้อหาของข้อความ เซิร์ฟเวอร์ตอบสนองสองครั้ง: ครั้งแรกกับคำสั่ง DATA เอง ยอมรับว่าพร้อมรับข้อความ และอีกครั้งหลังจากลำดับการสิ้นสุดข้อมูล ยอมรับหรือปฏิเสธข้อความทั้งหมด

เซสชัน Telnet คืออะไร

Telnet เป็นโปรโตคอลเครือข่ายสำหรับการเข้าถึงคอมพิวเตอร์จากระยะไกลและสร้างช่องทางการสื่อสารแบบข้อความสองทางที่ทำงานร่วมกันระหว่างคอมพิวเตอร์สองเครื่อง

มันสร้างเซสชันระยะไกลโดยใช้โปรโตคอลเครือข่าย Transmission Control Protocol/Internet Protocol (TCP/IP) ซึ่งควบคุมโดยผู้ใช้ Hypertext Transfer Protocol (HTTP) และ File Transfer Protocol (FTP) บนเว็บทำให้ผู้ใช้สามารถขอไฟล์เฉพาะจากคอมพิวเตอร์ที่อยู่ห่างไกลได้ ในขณะที่ Telnet อนุญาตให้ผู้ใช้เข้าสู่ระบบในฐานะผู้ใช้ทั่วไปด้วยสิทธิพิเศษที่กำหนดให้กับแอปพลิเคชันและข้อมูลดังกล่าว คอมพิวเตอร์.

Telnet มักใช้โดยผู้เขียนโค้ดและใครก็ตามที่ต้องการเข้าถึงแอปหรือข้อมูลบางอย่างบนคอมพิวเตอร์ระยะไกล

Telnet ทำงานอย่างไร?

Telnet เป็นโปรโตคอลไคลเอนต์ - เซิร์ฟเวอร์สำหรับการเปิดบรรทัดคำสั่งบนคอมพิวเตอร์ที่อยู่ห่างไกล ซึ่งมักจะเป็นเซิร์ฟเวอร์ ยูทิลิตีนี้สามารถใช้เพื่อ ping พอร์ตและตรวจสอบว่าเปิดอยู่หรือไม่ Telnet ใช้โปรแกรมจำลองการเชื่อมต่อเทอร์มินัลเสมือน ซึ่งเป็นตัวอย่างนามธรรมของการเชื่อมต่อคอมพิวเตอร์ที่ใช้โปรโตคอลมาตรฐานเพื่อทำหน้าที่เหมือนเทอร์มินัลจริงที่ต่ออยู่กับระบบ สำหรับผู้ใช้ที่ต้องการสื่อสารไฟล์ข้อมูล สามารถใช้ FTP และ Telnet ร่วมกันได้

Telnet อนุญาตให้ผู้ใช้เชื่อมต่อกับเครื่องจากระยะไกล มักเรียกว่า Telnetting เข้าสู่ระบบ พวกเขาต้องจัดเตรียมชุดข้อมูลรับรองผู้ใช้เพื่อเข้าถึงคอมพิวเตอร์ระยะไกล ซึ่งช่วยให้พวกเขาเรียกใช้บรรทัดคำสั่งได้เสมือนว่ามีอยู่จริงที่คอมพิวเตอร์ ที่อยู่ IP ของผู้ใช้จะตรงกับคอมพิวเตอร์ที่ลงชื่อเข้าใช้ แทนที่จะเป็นเครื่องที่ใช้ในการเข้าสู่ระบบ โดยไม่คำนึงถึงตำแหน่งทางกายภาพ

การใช้ Telnet คืออะไร?

Telnet สามารถใช้ทำงานต่างๆ บนเซิร์ฟเวอร์ รวมถึงการแก้ไขไฟล์ การทำงานของโปรแกรม และการตรวจสอบอีเมล

เซิร์ฟเวอร์บางแห่งอนุญาตให้เชื่อมต่อระยะไกลผ่าน Telnet กับข้อมูลสาธารณะเพื่อเล่นเกมง่ายๆ หรือค้นหาพยากรณ์อากาศ ฟีเจอร์เหล่านี้มีอยู่มากมายเนื่องจากเป็นคุณลักษณะที่ชวนให้นึกถึงอดีตหรือเพราะยังคงใช้งานได้กับระบบก่อนหน้านี้ซึ่งต้องการข้อมูลบางอย่าง

Telnet ยังอนุญาตให้ผู้ใช้เชื่อมต่อกับซอฟต์แวร์ใดๆ ที่ใช้โปรโตคอลแบบข้อความและไม่ได้เข้ารหัส เช่น เว็บเซิร์ฟเวอร์และพอร์ต ผู้ใช้สามารถเปิด cmd บนเครื่องระยะไกลและพิมพ์ telnet ตามด้วยชื่อหรือที่อยู่ IP ของเครื่องระยะไกล และเซสชัน telnet จะ ping พอร์ตเพื่อดูว่าเปิดอยู่หรือไม่ หน้าจอว่างแสดงว่าพอร์ตเปิดอยู่ แต่ข้อความแสดงข้อผิดพลาดที่ระบุว่าพอร์ตเชื่อมต่ออยู่แสดงว่าพอร์ตปิดอยู่

ความปลอดภัยใน Telnet

Telnet เป็นโปรโตคอลที่ไม่ปลอดภัยและไม่เข้ารหัส ทุกคนสามารถดูชื่อผู้ใช้ รหัสผ่าน และข้อมูลลับอื่นๆ ของผู้ใช้ที่พิมพ์เป็นข้อความธรรมดาระหว่างเซสชัน Telnet โดยการตรวจสอบการเชื่อมต่อของผู้ใช้ ข้อมูลนี้สามารถใช้เพื่อเข้าถึงคอมพิวเตอร์เป้าหมายได้

ทดสอบการเชื่อมต่อ SMTP โดยใช้ Telnet

ก่อนอื่นเราจะทำการทดสอบเพื่อดูว่าพอร์ตขาออก 25 ของคุณเปิดอยู่หรือไม่ ในกรณีแรกเราจะสาธิตพอร์ต SMTP ที่ถูกบล็อก 25 ในกรณีที่สอง เราจะดำเนินการโดยการส่งอีเมลโดยใช้เทลเน็ต

กรณีที่ 1: พอร์ต 25 ถูกบล็อก

ในบรรทัดคำสั่งให้เรียกใช้คำสั่งต่อไปนี้ (คุณต้องเรียกใช้คำสั่งนี้บนเซิร์ฟเวอร์ที่คุณมีปัญหาเกี่ยวกับอีเมล):

 telnet <IP_ADDRESS_OF_REMOTE_MAIL_SERVER> 25

หากคุณได้รับข้อความเช่น "TRYING ..." และไม่มีอะไรอื่นใดที่หมายความว่าพอร์ต 25 ขาออกของคุณถูกบล็อก และคุณจะไม่สามารถส่งข้อความอีเมลจากเซิร์ฟเวอร์ของคุณได้

กรณีที่ 2: เมื่อเปิดพอร์ต 25:

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

 nslookup -type=mx DOMAIN_NAME

SMTP ใช้พอร์ตหนึ่งในสามพอร์ต: 25, 465 หรือ 587 ซึ่งมักใช้โดย Microsoft Outlook หากการส่งต่อ SMTP ของคุณใช้พอร์ตอื่นที่ไม่ใช่ 25 คุณจะใช้พอร์ตที่ให้มาในการตอบกลับ nslookup จากเซิร์ฟเวอร์การแลกเปลี่ยนเมล คุณสามารถถามผู้ดูแลระบบของคุณหรือไปที่เซิร์ฟเวอร์แลกเปลี่ยนเมลและดูโปรโตคอลเพื่อดูว่า SMTP ของคุณใช้พอร์ตใด

ในการเข้าสู่ระบบเซิร์ฟเวอร์ SMTP:

 telnet <IP_ADDRESS_OF_MAIL_SERVER> <PORT>

หากเชื่อมต่อแล้ว คุณสามารถส่งอีเมลต่อได้

คำสั่ง EHLO หรือ HELO เป็นคำสั่งแรกที่เราต้องส่งไปยังเซิร์ฟเวอร์เมลสำหรับผู้ทดสอบอีเมล SMTP ของเรา นี่เป็นการต้อนรับอย่างง่ายที่เริ่มต้นการสนทนาของไคลเอ็นต์ telnet กับเซิร์ฟเวอร์ SMTP

 EHLO <DOMAIN_NAME>
ทดสอบการเชื่อมต่อ smtp

คำสั่ง SMTP ที่เซิร์ฟเวอร์ SMTP ยอมรับจะแสดงขึ้นที่นี่

คำสั่ง MAIL FROM เป็นคำสั่งต่อไปที่เราต้องรันจริงๆ ที่อยู่ที่จะส่งการตีกลับจะถูกกำหนดโดยสิ่งนี้

 MAIL FROM: <[ป้องกันอีเมล]>

ขณะนี้เราสามารถส่งคำสั่ง RCPT TO หลังจากที่ออกคำสั่ง MAIL FROM แล้ว คำสั่งนี้สั่งให้เซิร์ฟเวอร์เมล SMTP ส่งข้อความไปยังผู้รับที่ระบุ

 RCPT ถึง: <[email protected]> 

คำสั่ง DATA เป็นคำสั่งสุดท้ายที่จะรันก่อนที่จะเริ่มเนื้อหาของข้อความ คำสั่งนี้แจ้งเซิร์ฟเวอร์เมล SMTP ว่าข้อความที่เหลือจะถูกส่งเป็นเนื้อความของข้อความ

 ข้อมูล 

ป้อน เรื่อง: <SUBJECT> แล้วกด Return

ป้อน < ข้อความทดสอบ > แล้วกด Return

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

.

ข้อความ ตกลง จะปรากฏขึ้น ตามด้วยรหัสประจำตัว ข้อความของคุณถูกส่งแล้ว

กลับไปที่หน้าต่าง Telnet ป้อน quit เพื่อยุติการเชื่อมต่อเซิร์ฟเวอร์ SMTP จากนั้นให้ออกจาก Telnet เพื่อยุติเซสชัน Telnet

 เลิก 

บทสรุป

หากคุณทำการทดสอบเสร็จสิ้น คุณจะมั่นใจได้ว่าเซิร์ฟเวอร์อีเมลของคุณหรือที่อยู่และข้อมูลที่คุณใช้เข้าถึงเซิร์ฟเวอร์นั้นไม่มีข้อผิดพลาด

หากเซิร์ฟเวอร์ SMTP แจ้งให้คุณทราบว่าที่อยู่อีเมลต้นทางไม่ถูกต้อง เป็นไปได้ว่าคุณพิมพ์ไม่ถูกต้อง นอกจากนี้ยังอาจเป็นไปได้ว่ามีบางอย่างผิดปกติกับบัญชีอีเมลของคุณ ซึ่งเป็นสาเหตุที่ทำให้คุณไม่สามารถใช้งานได้ในโปรแกรมรับส่งเมลใหม่ของคุณ

หวังว่าการทดสอบเซิร์ฟเวอร์ SMTP ของคุณผ่าน Telnet ในขณะที่อยู่ห่างจากไคลเอนต์อีเมลใหม่ของคุณ จะช่วยให้คุณจำกัดสาเหตุที่เป็นไปได้ทั้งหมดสำหรับปัญหาอีเมลที่คุณมี