2010年10月27日

在 Windows 透過 SSH Tunnel 收發郵件

緣起: 某 Yahoo! 付費郵箱使用者無法在某社區網路發送郵件 (SMTP 連線失敗)
方案: 透過 SSH Tunnel 收發郵件
環境:

  • SSHD Host: Fedora Linux
  • Windows Client: Windows 7, Windows Live Mail

SSHD Host

useradd -s /bin/bash myaccount
passwd myaccount
su - myaccount
mkdir ~/.ssh
chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 600 $_

註: $_ 取得前次指令的最後一個參數

Windows Client

下載並安裝 Windows Live Mail

PuTTY Download Page 下載: putty.exe, pscp.exe, plink.exe, puttygen.exe, 儲存到 %HOMEPATH% (如: C:\Users\your_account\ )

執行 puttygen.exe, 產生金鑰:

  • 按下 Generate 按鈕後, 隨意移動滑鼠游標產生金鑰
  • 按 Save private key 按鈕, 將 Private Key 存入 %HOMEPATH%\private_key.ppk
  • 複製畫面上的 Public Key, 貼入 myaccount@my.sshd.host:.ssh/authorized_keys

啟動 "記事本", 編輯以下內容, 儲存到 %HOMEPATH%\mail.bat (如: C:\Users\your_account\mail.bat )

1@echo off
2start /min plink.exe -N -L 25:smtp.mail.yahoo.com.tw:25 -L 110:pop.mail.yahoo.com.tw:110 -i private_key.ppk -P 22 myaccount@my.sshd.host
3"c:\program files\windows live\mail\wlmail.exe"
4taskkill /f /im plink.exe > nul

註: start = 背景執行指令; taskkill = 刪除執行中的程序 (process)

將 %HOMEPATH%\mail.bat 傳送到桌面 (建立捷徑), 將捷徑更名為 "Windows Live Mail", 按右鍵調整內容:

  • 執行: 最小化
  • 變更圖示: 以 C:\Program Files\Windows Live\Mail\wlmail.exe 為圖示

執行桌面上的 mail.bat 捷徑, 建立郵件帳號, 手動設定伺服器設定:

  • 內送郵件伺服器: POP, localhost, 110
  • 外送郵件伺服器: localhost, 25, 需要驗證(打勾)

以後只要點擊桌面上的 Windows Live Mail 圖示, 就會執行 %HOMEPATH%\mail.bat, 自動建立 SSH Tunnel 並啟動 Windows Live Mail, 透過 SSH Tunnel 收發郵件.

SSHD 安全須知

因為 SSH2 連線使用 -N 參數不會啟動 shell, 若無 shell 操作需求, 可將該帳號的 shell 改成 /bin/false (sudo chsh -s /bin/false myaccount)

或是為這些帳號 建立 ssh chroot 環境

由於 shell=/bin/false 的帳號能藉由 -N 參數的 SSH2 連線產生 SSH Tunnel, 因此最好在 /etc/ssh/sshd_config 加上 AllowUsers 限制 sshd 只允許某些帳號的連入, 如: AllowUsers myaccount vipaccount otheraccount (帳號以空白隔開)


http://cha.homeip.net/blog/2010/10/2767.html

沒有留言:

發佈留言