使用 telnet 連線 SMTP server 來測試發送 Email
Telnet 測試 SMTP 寄信功能
於 Linux CLI 使用 telnet 想要從寄信:
- 從 user@example.com 寄送到 user@gmail.com
- 標題:test subject
- 內容:test content
SMTP 寄信詳細操作 (這些都是要輸入的字串)
- $ telnet localhost 25
- EHLO example.com
- MAIL FROM:user@example.com
- RCPT TO:user@gmail.com
- DATA
- Subject:test subject
- test content
- .
- 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 是要經過認證的郵件傳輸方式