这项技术依赖于 ssh 的一个基本特性:端口转发
这个主题有很多变体,这取决于您期望的邮件设置。它们都要求 ssh,可以从 http://www.ssh.fi/ 及其镜像站点获取。RPM 包可以在 ftp://ftp.replay.com/pub/crypto/ 获取,Debian 包可以在 ftp://non-us.debian.org/debian-non-US/ (以及它们各自的镜像站点) 获取。
要启动端口转发,请运行以下命令
ssh -C -f popserver -L 11110:popserver:110 sleep 5
让我们仔细看看这个命令
ssh
ssh 二进制文件本身,完成所有工作的神奇程序。
-C
这启用了数据流的压缩。它是可选的,但通常很有用,特别是对于拨号用户。
-f
一旦 ssh 完成身份验证并建立端口转发,就 fork 到后台,以便可以运行其他程序。由于我们只使用 ssh 的端口转发功能,因此我们不需要附加到它的 tty。
popserver
我们要连接的 POP 服务器。
-L 11110:popserver:110
将本地端口 11110 转发到远程服务器 popserver
上的端口 110。我们使用一个较高的本地端口 (11110),以便任何用户都可以创建转发。
sleep 5
在 ssh 将自身 fork 到后台后,它会运行一个命令。我们使用 sleep
是为了让连接保持足够长的时间,以便我们的邮件客户端可以建立与服务器的连接。5 秒通常足以完成此操作。
您可以根据需要使用 ssh 的大多数其他选项。一个常见的设置可能是用户名,因为它在 POP 服务器上可能不同。
这需要在远程服务器 popserver
上运行 sshd。但是,您不需要在那里拥有活动的 shell 帐户。打印消息“You cannot telnet here”所需的时间足以建立连接。
一旦您弄清楚了运行以建立端口转发的详细命令,您就可以尝试一下。例如
$ ssh -C -f msingh@popserver -L 11110:popserver:110 sleep 1000
popserver
是旧的 POP 服务器。我在本地机器上的用户名是 manish
,所以我需要显式指定用户名 msingh
。(如果您的本地和远程用户名相同,则 msingh@
部分是不必要的。)
然后它打印
msingh@popserver's password:
然后我输入我的 POP 密码(您可能具有不同的 shell 和 POP 密码,因此请使用您的 shell 密码)。现在我们完成了!所以我们可以尝试
$ telnet localhost 11110
这应该打印出类似这样的内容
QUALCOMM POP v3.33 ready.
哇呼!它工作了!数据通过网络加密发送,因此唯一的明文是在我的本地计算机和 POP 服务器的回环接口上。