pop3,imap,smtp
SMTP管'发', POP3/IMAP管'收'
=======================================================================
登陆POP3
telnet pop3.163.com 110 或telnet 202.108.5.100 110 远程登录163邮件服务器
telnet pop3.sina.com.cn 110 或telnet 202.108.3.231 110 远程登录sina邮件服务器
1.登录邮箱
接下来输入用户名和密码
命令格式:
1.1 user username 提供用户名
1.2 pass password 提供用户密码
如:user test_pop3_2007
回车后显示"+OK",再输入密码
pass 123456789
若用户名正确,回车后显示“+OK”
2.获取邮件信息
2.1 Stat
请求服务器发回关于邮箱的统计资料,显示邮件数量和全部邮件大小(单位是字节)
命令格式:stat
2.2 List
返回邮件数量和每个邮件的大小
命令格式:list
3.检查邮件
3.1 Top
命令格式:top n
服务器将返回由参数标识的邮件前n行内容,n必须是正整数
3.2 Retr
返回由参数标识的邮件的全部文本
命令格式:retr n
3.3 Dele
服务器将由参数标识的邮件标记为删除,由quit命令执行
命令格式:dele 邮件编号
3.4 Rset
恢复标记为删除的邮件,用于撤消DELE命令
命令格式:rset
4. quit
退出(更新)
命令格式:quit
===================================================================
登陆SMTP
Linux下用base64命令加解密字符串
加密:
$ echo Hello World | base64
SGVsbG8gV29ybGQK
解密:
$ echo SGVsbG8gV29ybGQK | base64 -d
Hello World
说明:
通过telnet登录到smtp发邮件,可以实现更改发件人信息!!!
本机测试
# telnet smtp.163.com 25 //登陆 smtp.163.com 端口号为 25 Trying 202.108.44.205... Connected to smtp.163.com (202.108.44.205). Escape character is '^]'. 220 163.com Coremail SMTP(Anti Spam) System HELO localhost // 与服务器打招呼,并告知客户端使用的机器名字,可以随便填写 250 OK AUTH LOGIN //使用身份认证登陆指令 334 dXNlcm5hbWU6 cmVkc29zMw== //输入已经base64_encode()过的用户名. 334 UGFzc3dvcmQ6 MbM2MDQ3NQ== //输入已经base64_encode()过的密码 235 Authentication successful MAIL FROM:<redsos3@163.com> //告诉服务器发信人的地址 250 Mail OK RCPT TO:<yourframe@21cn.com> //告诉服务器收信人的地址 250 Mail OK DATA //正面开始传输信件的内容,且最后要以只含有 . 的特殊行结束。 354 End data with . From:redsos3@163.com To:yourframe@21cn.com Subject:test mail test body . //结束传输信件 250 Mail OK queued as smtp14,F0CPBFsuzUOvoDwE.41582S2 QUIT //断开连接 221 Bye Connection closed by foreign host.附录:
==================================================================
登陆IMAP
IMAP 协议收信与POP收信有很大的不同,最明显的一点就是发送的每条命令(命令是不区分大小写的),前面都要带有一个标签/标志,发送一条命令后可以紧接着发送另一条命令,服务器端返回命令处理结果的顺序是未知的,取决于各条命令的执行时间。所以返回的结果中,将带有所发送命令的标签。
实践:
$ telnet 192.168.0.1 143 #telnet登录IMAP协议的143端口
Trying 192.168.0.1...
Connected to xxxxxx
Escape character is '^]'.
* OK xxxxxxx System IMap Server Ready
A01 LOGIN abc 123 #用户登录
A01 OK LOGIN completed
A02 LIST "" * #列出所有信箱列表
* LIST () "/" "INBOX"
* LIST () "/" "Drafts"
* LIST () "/" "Sent Items"
* LIST () "/" "Trash"
* LIST () "/" "Junk E-mail"
* LIST () "/" "Virus Items"
* LIST () "/" "&XfJT0ZABkK5O9g-"
* LIST () "/" "&g0l6Pw-"
* LIST () "/" "&XfJT0ZABkK5O9g-/DailyReport"
* LIST () "/" "Jira"
* LIST () "/" "Admin"
* LIST () "/" "&V4NXPpCuTvY-"
A02 OK LIST Completed
A03 Select INBOX #选择收件箱
* 37 EXISTS
* 0 RECENT
* OK [UIDVALIDITY 1] UIDs valid
* FLAGS (\Answered \Seen \Deleted \Draft)
* OK [PERMANENTFLAGS (\Answered \Seen \Deleted \Draft)] Limited
A03 OK [READ-WRITE] SELECT completed
A04 Search ALL #查询收件箱所有邮件
* OK X-SEARCH in progress
* OK X-SEARCH in progress
* OK X-SEARCH in progress
* SEARCH 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
A04 OK SEARCH completed # 列出符合条件的邮件序号(ALL表示列出当前信箱INBOX中的所有邮件)
A05 Search new #查询收件箱所有新邮件
* OK X-SEARCH in progress
* OK X-SEARCH in progress
* OK X-SEARCH in progress
* SEARCH
A05 OK SEARCH completed #找不到任何新邮件
A06 Fetch 5 full #获取第5封邮件的邮件头
* 5 FETCH (INTERNALDATE "27-Jun-2006 14:00:27 +0800" FLAGS (\Seen) ENVELOPE ("Tue, 27 Jun 2006 13:56:51 +0800" "test " (("xxxxxx" NIL "xxxx" "xxxxxx")) (("xxxxxx" NIL "xxxx" "xxxxxx")) (("xxxxxx" NIL "xxxx" "xxxxxx")) ((NIL NIL "xxx" "xxxxx")) NIL NIL NIL "<[email protected]>") BODY (("text" "plain" ("charset" "gb2312") NIL NIL "base64" 14 2) ("text" "html" ("charset" "gb2312") NIL NIL "base64" 420 7) "alternative") RFC822.SIZE 1396)
A06 OK Fetch completed
A07 Fetch 5 rfc822 #获取第5封邮件的完整内容
* 5 FETCH (RFC822 {1396}
[这里是邮件内容,太长,略...]
A07 OK Fetch completed
A08 Fetch 5 flags #查询第5封邮件的标志位
A08 OK Fetch completed
A09 Store 5 +flags.silent (\deleted)