linux学习之旅(二十四)& SMTP

简单邮件传输协议SMTP

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。
SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。
SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。它使用由TCP提供的可靠的数据传输服务把邮件消息从发信人的邮件服务器传送到收信人的邮件服务器。
跟大多数应用层协议一样,SMTP也存在两个 端:在发信人的邮件服务器上执行的客户端和在收信人的邮件服务器上执行的服务器端。SMTP的客户端和服务器端同时运行在每个邮件服务器上。当一个邮件服务器在向其他邮件服务器发送邮件消息时,它是作为SMTP客户在运行。
SMTP协议与人们用于面对面交互的礼仪之间有许多相似之处。首先,运行在发送端邮件服务器主机上的SMTP客户,发起建立一个到运行在接收端邮件服务 器主机上的SMTP服务器端口号25之间的TCP连接。如果接收邮件服务器当前不在工作,SMTP客户就等待一段时间后再尝试建立该连接。SMTP客户和服务器先执行一些应用层握手操作。就像人们在转手东西之前往往先自我介绍那样,SMTP客户和服务器也在传送信息之前先自我介绍一下。在这个SMTP握手阶段,SMTP客户向服务器分别指出发信人和收信人的电子邮件地址。彼此自我介绍完毕之后,客户发出邮件消息。

下图是SMTP的使用模型:

接发收邮件的过程

当你的一个朋友向你发送邮件时,他的邮件服务器和你的邮件服务器通过SMTP协议通信,将邮件传递给你邮件地址所指示的邮件服务器上(这里假设你的本地邮件服务器是Linux系统),若你通过telnet协议直接登录到邮件服务器上,则可以使用mail等客户软件直接阅读邮件,但是若你希望使用本MUA(MailUserAgent,如outlookexpress等客户软件)来阅读邮件,则本地客户端通过POP3或IMAP协议与邮件服务器交互,将邮件信息传递到客户端(如:win98系统)。

而如果你向你的朋友回复一封信件时,你所使用的MUA也是通过SMTP协议与邮件服务(一般为发送邮件地址对应的email地址)器通信,指示其希望邮件服务器帮助转发一封邮件到你朋友的邮件地址指定的邮件服务器中。若本地邮件服务器允许你通过它转发邮件,则服务器通过SMTP协议发送邮件到对方的邮件服务器。这就是接受和发送邮件的全部过程。


配置邮件服务的基本环境

配置主机 mailqq.qq.com(server端)
      IP为:172.25.254.109
      yum install bind -y
      systemctl start bind
      systemctl enable bind 
      systemctl stop firewalld
      systemctl disable firewalld
      设置dns为:172.25.254.109   ##/etc/resolve.conf

配置另一台 mailwestos.westos.com(client端)
      IP为:172.25.254.209
      systemctl stop firewalld
      systemctl disable firewalld
      设置dns为:172.25.254.109   ##/etc/resolve.conf

##还需要dns,因为要解析[email protected]中的qq.com

搭建dns环境

下载bind 软件
yum install bind -y

基本的配置/etc/named.conf ,注释的部分

编辑/etc/named.rfc1912.zones

编写qq.com.zone , westos.com.zone 
//其中,MX是邮件交换记录,1 表示的是邮件的等级 后面的ip需要加点'
qq.com. MX 1    172.25.254.109. 
westos.com. MX 1        172.25.254.209.


  • systemctl restart named
  • 配置好之后注意将两台主机的dns设置为server端的172.25.254.109

测试:

 dig -t mx { westos.com | qq.com }
 参数 : t query-type        
 //指定查询类型.可以指定为一个将包含在类型字段中的整数值,也可以使用 上面讨论的缩写助记符(即 mx = T_MX).

SMTP的工作机制:

SMTP通常有两种工作模式:发送SMTP和接收SMTP。

具体工作方式为:发送SMTP在接到用户的邮件请求后,判断此邮件是否为本地邮件,若是直接投送到用户的邮箱,否则向dns查询远端邮件服务器的MX纪录,并建立与远端接收SMTP之间的一个双向传送通道,此后SMTP命令由发送SMTP发出,由接收SMTP接收,而应答则反方面传送。一旦传送通道建立,SMTP发送者发送MAIL命令指明邮件发送者。
如果SMTP接收者可以接收邮件则返回OK应答。SMTP发送者再发出RCPT命令确认邮件是否接收到。如果SMTP接收者接收,则返回OK应答;如果不能接收到,则发出拒绝接收应答(但不中止整个邮件操作),双方将如此重复多次。当接收者收到全部邮件后会接收到特别的序列,如果接收者成功处理了邮件,则返回OK应答即可。

配置邮件的发送与接收

邮件发送:

postfix提供smtp协议用来投递邮件    ##默认端口25
/var/log/maillog                ##服务的日志文件


mail student            ##给本地用户student发送邮件
mail [email protected]            ##发送邮件给westos.com
Subject:hello                   ##主题
hello world                      ##邮件内容
.                               ##用"."来结束录入内容并发送
mailq                               ##查看邮件队列
postqueue -f                   ##重新处理邮件队列
mail                                ##接收方查看邮件

postsuper -d 邮件标签       ##删除对应邮件

##默认情况下邮件端口只在127.0.0.1上开启

//mailq为空是为发送成功

配置发送服务(发送方和接收方都配置)

[root@mailqq named]# vim /etc/postfix/main.cf 
 75 myhostname = mailqq.qq.com     ##这个是mailqq.qq.com端做的,另一台写mailwestos.westos.com
 83 mydomain = qq.com       ##同样的另一台westos.com 
 99 myorigin = $mydomain
113 inet_interfaces = all       ##25端口开启的网络接口
114 #inet_interfaces = $myhostname        ##连续下三行注释掉
115 #inet_interfaces = $myhostname, localhost
116 #inet_interfaces = localhost
164 mydestination = $myhostname, $mydomain, localhost  ##接收邮件结尾字符的指定

配置好后 ,重启postfix
mailqq.com 向 mailwestos.com成功发送了一封邮件:

  • tips :
  • 远程查看 mail : telnet
  • yum install telnet -y
  • telnat IP port telnet 172.25.254.109 25 ##指定端口25

配置接收服务dovecot (还是两端都配置)

接受pop 110 immp 143 这两个用软件是dovecot
需要password ,username才能成功

yum install dovecot -y

[root@mailwestos ~]# vim /etc/dovecot/dovecot.conf   ##接收的配置文件
 24 protocols = imap pop3 lmtp            ##三个服务打开
 48 login_trusted_networks = 0.0.0.0/0     ##对所有人信任
 49 disable_plaintext_auth = no            ##开启明文身份验证

[root@mailwestos ~]# vim /etc/dovecot/conf.d/10-mail.conf 
 30 mail_location = mbox:~/mail:INBOX=/var/mail/%u     ##规定的语法

systemctl restart dovecot  ##重启生效

图形化的接收邮件软件 mutt

下载mutt软件 : 
  yum install mutt -y

切换到student用户端:
[student@mailwestos ~]$ mkdir mail/.imap -p
[student@mailwestos ~]$ touch mail/.imap/INBOX
//这是配置文件详细说明的,按照要求去创建就好'

[root@foundation9 ~]# mutt -f pop://[email protected]
//注意,不能查看root的因为如果连管理员的也可以查看,那么就是安全性的问题了!
  • 现在在172.25.254.9上 键入 :mutt -f pop://[email protected]
    进入后输入student的密码就可以进入查看了


另外介绍一款界面更加友好的软件 雷鸟(thunderbird)

172.25.254.9上下载雷鸟邮件服务软件
rpm -ivh thunderbird-31.2.0-1.el7.x86_64.rpm 
//这个软件的安装不用考虑依赖性'

thunderbird             //直接进入软件
//完善相应的信息,即可使用邮件软件了
  • 其中,分别配置邮件发送和接受服务器,然后选择无加密,即无密码


//点击继续

配置好认证信息之后就可以进行图形界面的发送接收了

发布了55 篇原创文章 · 获赞 38 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/mon_star/article/details/77461462