2006年5月20日星期六

使用Telnet删除远程主机的邮件

  今天我在美国的一台虚拟主机出了故障,花了半天才解决。可能是DNS设置的问题,我的某个主机的邮件默认都开通了,今天发现主机上的500M空间竟然全部都被使用完,我感觉很奇怪,我最多应该只使用了200M,怎么会没空间了呢。

  我发邮件给技术支持,对方说是我信箱里占用了大量空间,我使用Outlook接收,果然发现有数千封邮件,一个江苏的IP不断发病毒邮件给我的,导致邮箱被占用了数百M。

  然而在删除垃圾邮件的时候出了问题,不知道什么原因,我收邮件的时候总是提示“您的服务器意外中止了连接”,然后网络中断,一封邮件也收不下来,查了一些资料,我发现了一个删除远端垃圾邮件的方法。

  先Telnet到我的另外一个美国的主机,然后在那个主机上使用telnet myMailServer.com 110的命令连接我的邮件服务器的POP端口。然后输入user myUserName录入用户名,再输入pass *****录入密码,使用list命令可以查看到邮件列表,使用top命令可以看邮件内容,然后我使用程序自动生成了dele 1;dele 2;dele 3....等删除邮件的命令,然后粘贴执行,很快就将远端服务器上的邮件全部删除完成了。

  以上的方法主要用于无法直接连接邮件服务器,而必须要删除远程邮件的情况。如果可以直接连接则不必使用这么麻烦的方法。

  以下对几个常用的POP3命令作一个简单的介绍 :

  命令       参数       状态       描述
  ------------------------------------------
  USER       username   认可       此命令与下面的pass命令若成功,将导致状态转换
  PASS       password   认可
  APOP       Name,Digest 认可       Digest是MD5消息摘要
  ------------------------------------------
  STAT       None       处理       请求服务器发回关于邮箱的统计,如邮件总数和总字节数
  UIDL       [Msg#]     处理       返回邮件的唯一标识符,POP3会话的每个标识符都是唯一的
  LIST       [Msg#]     处理       返回邮件数量和每个邮件的大小
  RETR       [Msg#]     处理       返回由参数标识的邮件的全部文本
  DELE       [Msg#]     处理       服务器将由参数标识的邮件标记为删除,由quit命令执行
  RSET       None       处理       服务器将重置所有标记为删除的邮件,用于撤消DELE命令
  TOP        [Msg#]     处理       服务器将返回由参数标识的邮件前n行内容,n必须是正整数
  NOOP       None       处理       服务器返回一个肯定的响应,不做任何操作。
  ------------------------------------------
  QUIT       None       更新 退出