最近遇到一个关于邮件的问题,一直没解决,也趁这个机会学习一下关于邮件的一些知识。
基础知识:
邮件服务器(或电子邮件服务器)是一种发送和接收电子邮件的计算机系统。 邮件服务器使用标准电子邮件协议发送和接收电子邮件。例如,SMTP协议发送消息并处理传出邮件请求。 IMAP和POP3协议接收邮件并用于处理传入邮件。邮件服务器(或电子邮件服务器)是一种发送和接收电子邮件的计算机系统。 邮件服务器使用标准电子邮件协议发送和接收电子邮件。例如,SMTP协议发送消息并处理传出邮件请求。 IMAP和POP3协议接收消息并用于处理传入的邮件。
SMTP 的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。 SMTP 认证,简单地说就是要求必须在提供了账户名和密码之后才可以登录 SMTP 服务器,这就使得那些垃圾邮件的散播者无可乘之机。 增加 SMTP 认证的目的是为了使用户避免受到垃圾邮件的侵扰。
POP3是Post Office Protocol 3的简称,即邮局协议的第3个版本,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。
IMAP全称是Internet Mail Access Protocol,即交互式邮件存取协议,它是跟POP3类似邮件访问标准协议之一。不同的是,开启了IMAP后,您在电子邮件客户端收取的邮件仍然保留在服务器上,同时在客户端上的操作都会反馈到服务器上,如:删除邮件,标记已读等,服务器上的邮件也会做相应的动作。所以无论从浏览器登录邮箱或者客户端软件登录邮箱,看到的邮件以及状态都是一致的。
POP3与IMAP区别:
而
总之,IMAP整体上为用户带来更为便捷和可靠的体验。POP3更易丢失邮件或多次下载相同的邮件,但IMAP通过邮件客户端与webmail 之间的双向同步功能很好地避免了这些问题。
实战部分
由于我没有域名,我是在本地安装并测试邮件服务器的,以下是步骤:
1,安装JDK8,步骤省略。不会的亲,百度下一箩筐。
2,到官网下载Apache James, 目前最新的版本是3.4。由于3.4有好多功能,并且配置不在一个文件里,我用的版本比较旧2.3.2.1
3,我用的mysql做为存储,需提前安装mysql,并且创建了一个新的schema。
4,解压James安装包,可以看到如下目录:
5,打开apps\james\SAR-INF\config.xml,修改如下:找到Postmaster@domainname,如你有域名,用你的域名替换domainname,如果没有,请随意,但只能在本地测试,无法跨域发送。
同样改成你的域名domainname
找到users-store,注掉默认文件方式
使用数据库方式:
file://conf/sqlResources.xml配置数据库连接:
com.mysql.cj.jdbc.Driver
jdbc:mysql://127.0.0.1/maildb?characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true
root
xxxx
true
20
6,启动bin下的run,如看到如下信息,则表示已成功启动:
测试:telnet localhost 4555端口,输入用户密码(config.xml里的root及密码),通过adduser增加两个用户user1和user2
可以使用邮件客户端进行测试,用user1发送给user2。
在这里说明下,我之所以用mysql是因为我一开始用默认的配置,user1能发出去,日志里也没异常,但user2就是收不到邮件。这个问题折腾了我好久,就是搞不定,改成mysql,貌似就好了。有懂的亲,欢迎互相学习。