发送邮件

## centOS环境,使用shell发送邮件 #### 1.安装依赖 ``` yum -y install sendmail yum -y install mailx ``` #### 2.生产证书 ``` mkdir .certs echo -n | openssl s_client -connect smtp.163.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /root/.certs/163.crt certutil -A -n "GeoTrust SSL CA" -t "C,," -d /root/.certs -i /root/.certs/163.crt certutil -A -n "GeoTrust Global CA" -t "C,," -d /root/.certs -i /root/.certs/163.crt certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d /root/.certs/./ -i /root/.certs/163.crt Notice: Trust flag u is set automatically if the private key is present. ls /root/.certs/ 163.crt cert8.db key3.db secmod.db certutil -L -d /root/.certs Certificate Nickname Trust Attributes SSL,S/MIME,JAR/XPI GeoTrust SSL CA P,P,P ``` 证书安装时可能会因为版本更新,导致证书过旧失效,若失效自行百度。 #### 3.修改配置文件 ``` vim /etc/mail.rc ``` 在配置文件最底部添加下列代码。 ``` #设置ssl验证信息 set ssl-verify=ignore #设置证书路径 set nss-config-dir=/root/.certs #设置第三方smtp服务器地址及端口,如果使用的是云服务,安全组需要开放柜465端口(入口和出口),这里以163邮箱为例 set smtp=smtps://smtp.163.com:465 #设置认证方式 set smtp-auth=login #设置发送邮件的邮箱账号 set smtp-auth-user=bangnimy@163.com #设置上方邮箱的客户端授权码,需要登录邮箱设置一下。 set smtp-auth-password=ZLEKTIHHRPMGXHYO #设置发件人邮箱 set from=bangnimy@163.com ``` 除了自己生产的证书外,系统也提供了默认证书'/etc/pki/nssdb',不过这个证书可能存在太旧失效的问题。这里知道有默认证书这回事就可以了。 #### 4.测试发送 ``` echo "hellow world"[1] | mail -s "first mail"[2] my13884625597@163.com[3] #[1]内容 #[2]标题 #[3]收件人 ``` #### 5.错误 ``` smtp-server: 550 User has no permission #邮箱没有开启POP3 STMP IMAP。 #登录邮箱,设置 => POP3/SMTP/IMAP页面开启服务。 smtp-server: 550 Invalid User #set from 时出错, #需使用完整邮箱地址。 ``` 有关POP3、STMP、IMAP的一些关系和区别 -- >i简单地说,SMTP管‘发’,POP3/IMAP管‘收’。 >s举个例子,你坐在电脑边用mail client写完邮件,点击‘发送’。这时你的mail client会发消息给邮件服务器上的SMTP service。这时有两种情况: 1. 如果邮件的收信人也是处于同一个domain,比如从http://163.com发送给163的邮箱,SMTP service只需要转给local的POP3 Service即可 2. 如果邮件收信人是另外的domain,比如http://163.com发送给http://sina.com, SMTP service需要通过询问DNS,找到属于sina的SMTP service的host >s其实一般每个提供电子邮件服务的网站都有自己的SMTP和POP服务器地址,在你登录你的电子邮件网站时仔细找找肯定能发现它们,如果找不到还可以查看一下网站的“帮助”。如果你想详细的了解一下这其中的知识,就请看看下面的解释吧: >sPOP(Post Office Protocol)邮局通讯协定POP是互联网上的一种通讯协定,主要功能是用在传送电子邮件,当我们寄信给另外一个人时,对方当时多半不会在线上,所以邮件服务器必须为收信者保存这封信,直到收信者来检查这封信件。当收信人收信的时候,必须通过POP通讯协定,才能取得邮件。 >s与POP同时出现的还有SMTP,它也是用来传送网络上的电子邮件,不同的是POP是负责邮件程序和邮件服务器收信的通讯协定,SMTP则是负责邮件服务器与邮件服务器之间的寄信的通讯协定。 >sSMTP(Simple Mail Transfer Protocol)简易邮件传输通讯协议 SMTP是互联网上的一种通讯协议,主要功能是用在传送电子邮件,当我们通过电子邮件程序,寄E-mil给另外一个人时,必须通过SMTP通讯协议,将邮件送到对方的邮件服务器上,等到对方上网的时候,就可以收到你所寄的信。 >s其实简单的说,POP服务器是用来收信的,而且每个E_mail地址一般只有一个。如果你要同时收取多个邮箱的信件,就必须挨个设置每个邮箱的POP3服务器地址,在你申请了免费信箱之后,仔细看看它的帮助文件,一般都能找到。至于SMTP服务器,可以理解为就是用来寄信的,而且大多数SMTP服务器也是免费的,也就是说,不管你有无E-mail信箱,只要想寄信,随便填上一个SMTP服务器,就可以寄信了。如果你用Outlook Express或者其它邮件程序发信,又同时拥有多个免费邮箱,不必设置多个SMTP服务器,只要选择一个填上就行了,比如新浪邮件提供的服务器就是:smtp.sina.com.cn。 ### POP3 POP3是Post Office Protocol 3的简称,即邮局协议的第3个版本,是TCP/IP协议族中的一员(默认端口是110)。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。 ### 与IMAP有什么区别 POP3协议允许电子邮件客户端下载服务器上的邮件,但是在客户端的操作(如移动邮件、标记已读等),不会反馈到服务器上,比如通过客户端收取了邮箱中的3封邮件并移动到其他文件夹,邮箱服务器上的这些邮件是没有同时被移动的 。 而IMAP提供webmail 与电子邮件客户端之间的双向通信,客户端的操作都会反馈到服务器上,对邮件进行的操作,服务器上的邮件也会做相应的动作。 同时,IMAP像POP3那样提供了方便的邮件下载服务,让用户能进行离线阅读。IMAP提供的摘要浏览功能可以让你在阅读完所有的邮件到达时间、主题、发件人、大小等信息后才作出是否下载的决定。此外,IMAP 更好地支持了从多个不同设备中随时访问新邮件。 总之,IMAP 整体上为用户带来更为便捷和可靠的体验。POP3 更易丢失邮件或多次下载相同的邮件,但 IMAP 通过邮件客户端与webmail 之间的双向同步功能很好地避免了这些问题。 ### SMTP SMTP 的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议(25号端口)。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP是一个“推”的协议,它不允许根据需要从远程服务器上“拉”来消息。SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。 SMTP 认证,简单地说就是要求必须在提供了账户名和密码之后才可以登录 SMTP 服务器,这就使得那些垃圾邮件的散播者无可乘之机。 增加 SMTP 认证的目的是为了使用户避免受到垃圾邮件的侵扰。 ### IMAP IMAP全称是Internet Mail Access Protocol,即交互式邮件存取协议,是一个应用层协议(端口是143)。用来从本地邮件客户端(Outlook Express、Foxmail、Mozilla Thunderbird等)访问远程服务器上的邮件。它是跟POP3类似邮件访问标准协议之一。不同的是,开启了IMAP后,您在电子邮件客户端收取的邮件仍然保留在服务器上,同时在客户端上的操作都会反馈到服务器上,如:删除邮件,标记已读等,服务器上的邮件也会做相应的动作。所以无论从浏览器登录邮箱或者客户端软件登录邮箱,看到的邮件以及状态都是一致的。 |服务器名称|服务器地址|SSL协议端口号|非SSL协议端口号| |-|-|-|-| |IMAP|imap.163.com|993|143| |SMTP|smtp.163.com|465/994|25| |POP3|pop.163.com|995|110|