Telnet 測試 SMTP 寄信功能

..

使用 telnet 連線 SMTP server 來測試發送 Email

Telnet 測試 SMTP 寄信功能

於 Linux CLI 使用 telnet 想要從寄信:

  • 從 user@example.com 寄送到 user@gmail.com
  • 標題:test subject
  • 內容:test content

SMTP 寄信詳細操作 (這些都是要輸入的字串)

  • $ telnet localhost 25
    1. EHLO example.com
    2. MAIL FROM:user@example.com
    3. RCPT TO:user@gmail.com
    4. DATA
    5. Subject:test subject
    6. test content
    7. .
    8. quit

上述幾個參數:

  • RCPT TO 收件者 Email
  • quit 上面的 「.」,是內容結束的訊號,直接 . ENTER 結束
  • EHLO 的意義,下述取自:RFC 5321 - Simple Mail Transfer Protocol
    • Extended HELLO (EHLO):ehlo ="EHLO" SP ( Domain / address-literal ) CRLF
    • HELLO (HELO):helo ="HELO" SP Domain CRLF

HELO 和 EHLO 的差異

下述摘錄自此篇:SMTP server/command/port

  • HELO:開始與 SMTP Server 送出的第一個指令,通常為 MUA 或 MTA 與伺服器打招呼用,通常使用 HELO 表示客戶端使用 SMTP 協議,而指令後跟隨的網域名稱,常被利用在反垃圾信的用途之上,所以該網域名稱必須能解析為 IP位址並且與目前連線的客戶端 IP位址相同
  • EHLO:開始與 eSMTP Server 送出的第一個指令,通常為 MUA 或 MTA 與伺服器打招呼用,通常使用 EHLO 表示客戶端使用 eSMTP 協議,而指令後跟隨的網域名稱,常被利用在反垃圾信的用途之上,所以該網域名稱必須能解析為 IP位址並且與目前連線的客戶端 IP位址相同,除此之外,SMTP伺服器端還會送出目前伺服器支援的 eSMTP 功能列表,例如 STARTTLS

簡單說:

  • HELO 是 SMTP:不需身份驗證也可以繼續 MAIL FROM 做下去,直到成功發送 Email,也就是可以偽造Email 發送
  • EHLO 是 ESMTP:需要身份驗證,所以沒辦法偽造

SMTP vs eSMTP 的差異

下述摘錄自此篇:SMTP vs eSMTP 的區別

  • 它與傳統的 SMTP 方式相比,只是多了一道用戶身份的驗證手續,驗證之後的郵件發送過程與傳統的SMTP方式一致
  • eSMTP 是要經過認證的郵件傳輸方式
想在手機閱讀更多Linux資訊?下載【香港矽谷】Android應用
分享到Facebook