1、 简介 1). 电子邮件服务器的主要功能 a. 接收用户投递的邮件(smtp) b. 将用户投递进来的邮件转发给目标邮件服务器(smtp) c. 接收其他邮件服务器转发来的邮件并把邮件存储到其管理的用户存储目录下(smtp) d. 为前来读取邮件的用户提供读取服务(pop3)
2). 按协议划分为两种类型 a. SMTP服务器 b. POP3/IMAP服务器
3). 说明 SMTP服务器 :用户替用户发送邮件和接收外面发送给本地用户的邮件,它相当于现实生活中的邮局的邮件接收部门(可接收普通客户要投出的邮件和其他邮局投递进来的邮件) POP3/IMAP服务器: 用于帮助用户读取SMTP服务器接收进来的该用户的邮件,它相当于专门为前来取包裹的用户提供服务的部门
2、 cmd访问smtp和pop3服务器 (需要确保telnet服务已经开启) 1). 连接访问smtp服务器
进入cmd telnet smtp服务器地址 smtp服务器端口: telnet smtp.sina.com 25 ; telnet 10.0.8.8 25 ehlo njnj //邮箱账户的用户名 auth login //认证方式 用户名 //经过base64转码 密码 //经过base64转码 //此时会提示登陆成功 mail from: <aaa@aaa.com> //发送者 rcpt to: <bbb@bbb.com> //接收者 data //必须输入data from: <ccc@ccc.com> //邮件的展示中的发送者 subject: hahah //头部信息 //换行必须存在 test!!!! //正文部分 . //结尾符.号必须存在 quit //退出2). 连接访问POP3服务器
进入cmd telnet POP3/IMAP服务器 POP3/IMAP服务器端口: telnet pop.sohu.com 110; telnet 10.0.8.8 110 user aaa@aaa.com //用户名最好为full address pass 123456 //密码 stat //展示当前服务器中有多少邮件,及其所占磁盘大小 list //列出所有的邮件 list 1 //列出编号为1的邮件统计信息 retr 1 //展示编号为1的邮件详细信息 dele 1 //将编号1标记为删除,只有在退出后才会正式删除 rset //将所有标记为删除的恢复注意: 命令的输入必须一次成功,不可以修改,否则提示错误
附件: base64
import sun.misc.BASE64Encoder; import sun.misc.BASE64Decoder; public static void main (String[] args) { BASE64Encoder encoder = new BASE64Encoder(); System.out.println("please input username: ") String username = new BufferedReader(new InputStreamReader(System.in)).readLine(); System.out.println(encoder.encode(username)); System.out.println("please input password"); String password = new BufferedReader(new InputStreamReader(System.in)).readLine(); System.out.println(encoder.encode(password)); // base64反转码 BASE64Decoder decoder = new BASE64Decoder(); String str = "VXNLcm5hbWU6"; System.out.println(new String(decoder.decodeBuffer(str))); }3、 协议总结: SMTP协议: 全称为Simple Mail Transfer Protocol (简单邮件传输协议), 定义了邮件客户端软件与smtp服务器之间、以及两台smtp服务器之间的通讯规则 POP3协议: 全称为Post Office Protocol (邮局协议), 定义了邮件客户端软件与pop3服务器的通讯规则 IMAP协议: 全称为Internet Message Access Protocol (Internet消息访问协议), 是对pop3协议的一种扩展,定义了邮件客户端软件与pop3服务器的通讯规则
4、 smtp服务器之间是如何发送信息的 (如sina服务器和sohu服务器)
a. 服务器是如何知道对方是普通的客户端还是服务器? 1. 查看本机地址: ipconfig /all 例如: 10.0.0.0 2. 尝试连接服务器: telnet AAAA 25 3. 输入ip地址: ehlo 10.0.0.0 -> 根据输入的邮件服务器名称,通过dns反向解析,解析后判断ip是否与本机相同:如果相同,则是客户端,需要进行登陆校验;否则是服务器;本机存在一个服务器 4. nsloopup => set type=mx => sina.com => 能够查看服务器的部署情况 5. telnet sina服务器 25 => ehlo 10.0.0.0 => 此时不需要验证可以直接发送消息