1、SMTP协议简介
SMTP称为简单邮件传输协议(Simple Mail Transfer Protocal),目标是向用户提供高效、可靠的邮件传输。它的一个重要特点是它能够在传送中接力传送邮件,即邮件可以通过不同网络上的主机接力式传送。通常它工作在两种情况下:一是邮件从客户机传输到服务器;二是从某一个服务器传输到另一个服务器。SMTP是一个请求/响应协议,它监听25号端口,用于接收用户的Mail请求,并与远端Mail服务器建立SMTP连接。
2、SMTP协议工作机制
SMTP通常有两种工作模式。发送SMTP和接收SMTP。具体工作方式为:发送SMTP在接收到用户的邮件请求后,判断此邮件是否为本地邮件,若是直接投送到用户的邮箱,否则向DNS查询远端邮件服务器的MX记录,并建立与远端接收SMTP之间的一个双向传送通道,此后SMTP命令由发送SMTP发出,由接收SMTP接收,而应答则反方向传送。一旦传送通道建立,SMTP发送者发送MAIL命令指明邮件发送者。如果SMTP接收者可以接收邮件则返回OK应答。SMTP发送者再发出RCPT命令确认邮件是否接收到。如果SMTP接收者接收,则返回OK应答;如果不能接收到,则发出拒绝接收应答(但不中止整个邮件操作),双方将如此反复多次。当接收者收到全部邮件后会接收到特别的序列,入伏哦接收者成功处理了邮件,则返回OK应答。
3、SMTP的连接和发送过程
(a)建立TCP连接
(b)客户端发送HELO命令以标识发件人自己的身份,然后客户端发送MAIL命令;
服务器端正希望以OK作为响应,表明准备接收
(c)客户端发送RCPT命令,以标识该电子邮件的计划接收人,可以有多个RCPT行;
服务器端则表示是否愿意为收件人接收邮件
(d)协商结束,发送邮件,用命令DATA发送
(e)以.表示结束输入内容一起发送出去
(f)结束此次发送,用QUIT命令退出
#在CenrOS搭建:
使用的服务器版本:
[root@zlx ~]# uname -a
Linux zlx 2.6.32-642.6.2.el6.x86_64 #1 SMP Wed Oct 26 06:52:09 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
因为CentOS模式安装了postfix邮件服务,我们先给他关闭
[root@zlx ~]# /etc/init.d/postfix stop
Shutting down postfix: [ OK ]
然后要是用mail命令来发送邮件,所以安装
yum –y install mailx
然后编辑配置文件/etc/mail.rc
vim /etc/mail.rc
#使用qq邮箱来发送邮件
set from=XXXXX@qq.com #你要使用的邮箱地址
set smtp=smtps://smtp.qq.com:465 #使用qq.com的465加密端口
set smtp-auth-user=18163201@qq.com #登录邮箱使用的账号
set smtp-auth-password=dcnhslrkexdbbgbh #qq邮箱开启POP3/SMTP服务时提供的密码,
set smtp-auth=login #用户名和密码登录
set ssl-verify=ignore #使用ssl加密
set nss-config-dir=/etc/pki/nssdb/ #指定ssl证书所在的位置
QQ邮箱开启POP3/SMTP服务,
设置à账户à POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务
点击开启:
然后他会告诉你一个授权码:把这个授权码填到刚才set auth-password=的位置
然后发送测试邮件:
[root@zlx ~]# echo 123 | mail -s "test Email" 18163201@qq.com
接受成功
刚开始做的时候没有选择ssl加密的方式连接,一直卡在
[root@zlx ~]# echo 123 | mail -v -s "test Email" 18163201@qq.com
Resolving host smtp.qq.com . . . done.
Connecting to 14.18.245.164 . . . 连接这一步,然后紧接着就报错,所以我们选择加密连接
原文地址:http://blog.51cto.com/13447608/2115656