[筆記]如何用Telnet測試SMTP AUTH

如何利用 Telnet 測試 SMTP AUTH

  1. 首先,要先取得SMTP server授權帳號與密碼的Base64字串
    Linux系統可以使用Perl指令,Windows可以使用Powershell,或是也可以在git bash上使用Perl指令。
  • Perl
    1
    perl -MMIME::Base64 -e 'print encode_base64("username");'

Perl 範例結果

注意!
我犯了個錯
當用雙引號包著‘@’要對‘@’進行跳脫
因此,上方的指令若username是email會變成
perl -MMIME::Base64 -e 'print encode_base64("user\@smtp.com")'
或者改用單引號
perl -MMIME::Base64 -e "print encode_base64('user@smtp.com')"
stackoverflow]

  • Powershell
    1
    powershell "[convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes(\"username\"))"

Powershell 範例結果

  1. 使用Telnet進行連線

Windows系統需先至控制台>程式與功能>開啟關閉Windows功能
將Telnet 客戶端(Client)勾選

指令:telnet [要連線的smtp server位置] PORT

1
telnet mailserver.com 25

  1. 跟server打招呼

(我要來找你了!這樣的意思嗎)

1
EHLO mailserver.com

  1. 告訴server要進行驗證登入
1
AUTH LOGIN

server 會回應334 VXNlcm5hbWU6的內容,後面其實是”Username:”的Base64字串
此時輸入一開始要記下來的帳號Base64字串
接著,server 再回應334 UGFzc3dvcmQ6,這就是”Password:”的Base64字串
便輸入密碼的Base64字串

好奇上面Base64字串內容,Windows系統將Powershell指令倒裝一下就好了
Auth Login Server Response Base64 string

接著你就會看到訊息是驗證成功或失敗了。


參考資料

  1. How to Test SMTP AUTH using Telnet

  2. Base64 Encode “string” - command-line Windows - StackOverflow