緣起: 某 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
2
start
/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"
4
taskkill /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 (帳號以空白隔開)
沒有留言:
發佈留言