大多数人通过 POP3 协议从邮件服务器获取电子邮件。POP3 协议有很多缺点。
你可以通过将 localhost:110 端口通过压缩连接转发到你的 ISP 的 POP3 套接字来压缩 POP3。之后,你必须告诉你的邮件客户端连接到 localhost:110 才能下载邮件。这可以保护并加速连接,但下载时间仍然会受到 POP3 固有的协议开销的影响。
用更高效的协议替代 POP3 是有意义的。想法是一次性下载整个邮箱,而不会产生协议开销。此外,压缩连接也是有意义的。提供这两种功能的合适工具是 SCP。你可以像这样下载你的邮件文件
scp -C -l loginId:/var/spool/mail/loginid /tmp/newmail
但这里有一个问题:如果在下载邮箱期间服务器收到新邮件会发生什么?新邮件将会丢失。因此,使用以下命令更有意义
ssh -l loginid mailserver -f mv /var/spool/mail/loginid /tmp/loginid_fetchme
scp -C -l loginid:/tmp/loginid_fetchme /tmp/newmail
移动 (mv) 是一个基本操作,因此在命令执行期间收到新邮件也不会遇到问题。但是,如果邮件服务器目录 /tmp/ 和 /var/spool/mail 不在同一个磁盘上,你可能会遇到问题。一个解决方案是在服务器上执行 mv 之前创建一个锁文件:touch /var/spool/mail/loginid.lock
。之后你应该删除它。一个更好的解决方案是在同一目录下移动文件 loginid
ssh -l loginid mailserver -f mv /var/spool/mail/loginid /var/spool/mail/loginid_fetchme
之后,你可以使用 formail 而不是 procmail,以便将 /tmp/newmail 过滤到正确的文件夹中:formail -s procmail < /tmp/newmail
你可以通过压缩和加密的 SSH 连接发送电子邮件,以便
如果你拥有邮件服务器的 SSH 访问权限,你需要以下命令
ssh -C -l loginid mailserver -L2525:mailserver:25
如果你没有邮件服务器的 SSH 访问权限,但可以访问一台允许使用你的邮件服务器作为中继的服务器,则命令是
ssh -C -l loginid other_server -L2525:mailserver:25
之后,你可以配置你的邮件客户端(或邮件服务器:参见 “smarthost”)将邮件发送到 localhost 的 2525 端口。