Linuxword Global
当前位置: 通信协议 > postfix&dovecot搭建邮件服务器

一个电子邮件系统应具有的三个主要组成构件,这就是用户代理、邮件服务器 ,以及邮件发送协议(如SMTP)和邮件读取协议(如POP3)。POP3是邮局协议 (Post Office Protocol)版本3

e4ee34d8b0a2fb806f8ed34b205a861c

用户代理 UA(User Agent)就是用户与电子邮件系统的接口,在大多数情况下它就是运行在用户电脑中的一个程序。因此用户代理又称为电子邮件客户端软件 。用户代理向用户提供一个很友好的接口(目前主要是窗口界面)来发送和接收邮件。现在可供大家选择的用户代理有很多种。例如,微软公司的Outlook Express和我国张小龙制作的Foxmail,都是很受欢迎的电子邮件用户代理。

邮件传输过程

➊发件人调用计算机中的用户代理撰写和编辑要发送的邮件。

➋ 发件人点击屏幕上的“发送邮件”按钮,把发送邮件的工作全都交给用户代理来完成。用户代理把邮件用SMTP协议发给发送方邮件服务器,用户代理充当SMTP客户,而发送方邮件服务器充当SMTP服务器。用户代理所进行的这些工作,用户是看不到的。有的用户代理可以让用户在屏幕上看见邮件发送的进度显示。用户所使用的邮件服务器究竟在什么地方,用户并不知道,也不必要知道。实际上,用户在把写好的信件交付给用户代理后,就什么都不用管了。

➌ SMTP服务器收到用户代理发来的邮件后,就把邮件临时存放在邮件缓存队列中,等待发送到接收方的邮件服务器(等待时间的长短取决于邮件服务器的处理能力和队列中待发送的信件的数量。但这种等待时间一般都远远大于分组在路由器中等待转发的排队时间)。

➍ 发送方邮件服务器的SMTP客户与接收方邮件服务器的SMTP服务器建立TCP连接,然后就把邮件缓存队列中的邮件依次发送出去。邮件不会在互联网中的某个中间邮件服务器落地 。如果SMTP客户还有一些邮件要发送到同一个邮件服务器,那么可以在原来已建立的TCP连接上重复发送。如果SMTP客户无法和SMTP服务器建立TCP连接(例如,接收方服务器过负荷或出了故障),那么要发送的邮件就会继续保存在发送方的邮件服务器中,并在稍后一段时间再进行新的尝试。如果SMTP客户超过了规定的时间还不能把邮件发送出去,那么发送邮件服务器就把这种情况通知用户代理。

➎ 运行在接收方邮件服务器中的SMTP服务器进程收到邮件后,把邮件放入收件人的用户邮箱中,等待收件人进行读取。

➏ 收件人在打算收信时,就运行计算机中的用户代理,使用POP3(或IMAP)协议读取发送给自己的邮件。

以上摘录于《计算机网络》

邮件服务器的搭建

centos7下使用postfix+dovecot搭建邮件服务器(防火墙关闭,SELinux关闭下)


DNS服务器搭建

yum install bind bind-utils

查看是否安装成功

[root@localhost ~]# rpm -qa|grep bind

52475c7a7ecd682e8f4287622980026c

编辑主配置文件

[root@localhost ~]# vim /etc/named.conf

799fabcb175792240191b0364cadedf4

e958835969931aa2827d04907db41151

新建区域配置文件,新建的文件名要与include包含的文件名一至,且权限一至

6a34a1183b3b11ed936cad8e69ae04f2

编辑配置文件

1a61ae73931ad075a77ab63f43539501

配置正向查找区域,配置文件/var/named/named.mail.com,复制后的权限必须一至

93304e350bddeffe39616ad6d8ba6039

112328dff151a6dc2afbdb3a812e87ec

配置反向查询文件

c0cedc7590d31a3b4dc29b1777f4bbe1

开启服务

2cee7ffd1390f82f93d8ead3dc8f58ba

如果报错请检查配置文件及权限

测试DNS

设置域名解析服务器为自己

b158a52b987ea997405e097f3eae13fe

0210105d1e1686c920a202f15ec58b95

搭建邮件服务器

配置服务器主机名称,需要保证服务器主机名称与发信域名保持一致

f57cd6284027964b38c1a6d39ddc507a

重启生效,记得重启域名服务及关闭防火墙

postfix

介绍:postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件

安装

yum install postfix

配置配置文件

vim /etc/postfix/main.cf

第83行,修改保存邮件的域名称

cdd2fec187ec8bb3a4c473506a370168

第99行,修改寄出邮件的域名称

9525a5a9dfcc39ac410e83c176085c8e

第116、119行,修改定义的网卡监听地址

1d126fb9f5975bf54428e7dd5a477ecf

第164行,修改定义的可接收邮件的主机名或域名列表

633a5b0d88fd38218521d69e717c1f86

新建两个用户用于测试

6677076af166944fc8cfb6e2c9f02cb1

dovecot

介绍:dovecot是一款能够为Linux系统提供IMAP和POP3电子邮件服务的开源软件程序

yum install dovecot

编辑配置文件

vim /etc/dovecot/dovecot.conf

设置dovecot服务程序支持的电子邮件协议

允许用户使用明文进行密码验证

6e58acfdd504800dd64ffce509b5b89b

设置允许登录的网段地址

8e6dbbd45f889903dc9f28125abfe1b6

配置邮件格式和储存路径

vim /etc/dovecot/conf.d/10-mail.conf

2da107ffb4999c12b17bcd91ea840742

开启服务

[root@mail ~]# systemctl start postfix
[root@mail ~]# systemctl start dovecot

可以看到邮件的存放位置,这是未发邮件前

a853453cae1664f75553d759d4d2ac41

发件测试

5b053e19dccfab0987468e15ee6e58cd

[root@mail mail]# telnet mail.com 25
Trying 127.0.0.1...
Connected to mail.com.
Escape character is '^]'.
220 mail.com ESMTP Postfix
helo mail.com             声名本机
250 mail.com
mail from:user1@mail.com  声明发件人
250 2.1.0 Ok
rcpt to:user2@mail.com     声明收件人
250 2.1.5 Ok
data                       写正文
354 End data with <CR><LF>.<CR><LF>
user1
.                           正文结束标记
250 2.0.0 Ok: queued as 12A27206C86E
quit                        退出
221 2.0.0 Bye
Connection closed by foreign host.

发件后,可以看到user2已经收到邮件

084441f5bdb74d2fd92af7bb2fd2bd31

看一下内容

bbedfd98648beb1844c848b5974ea44b

也可以登录查看邮件

deecc0096fb307090e884d72233d1878

[root@mail mail]# telnet mail.com 110
Trying 127.0.0.1...
Connected to mail.com.
Escape character is '^]'.
+OK Dovecot ready.
user user2             用户
+OK
pass 54321             密码
+OK Logged in.
list                   列表查看邮件
+OK 1 messages:
1 380
.
retr 1                  读取编号为1的邮件

遇到的问题

1、账号密码正确因权限问题被拒绝

报错

-ERR [SYS/PERM] Permission denied
Connection closed by foreign host.

844ff59ceff2fd25d5880f58dd02a7ae

解决

[root@mail mail]# chmod 0600 /var/spool/mail/*

端口介绍

SMTP 简单邮件传输协议 TCP 25端口 ,加密时使用TCP 456端口
POP3 第三版邮局协议  TCP  110端口 ,加密时使用955端口
IMAP4 第四版互联网消息访问协议 TCP 143端口 , 加密时使用993端口

防火墙开启情况下允许端口通过

firewall-cmd  -add-port 25/tcp --permanent
firewall-cmd  -add-port 465/tcp --permanent
firewall-cmd  -add-port 110/tcp --permanen
firewall-cmd  -add-port 995/tcp --permanent
firewall-cmd  -add-port 143/tcp --permanent
firewall-cmd  -add-port 993/tcp --permanent
firewall-cmd  --reload 重启防火墙 

SMTP相关命令

helo
客户端为标识自己的身份而发送的命令(通常带域名)
mail from
标识邮件的发件人;以 mail from: 的形式使用
rcpt to 
标识邮件的收件人;以 rcpt to: 的形式使用
data
客户端发送的,用于启动邮件内容传输的命令
turn
允许客户端和服务器交换角色,并在相反的方向发送邮件,而不必建立新的连接

「梦想一旦被付诸行动,就会变得神圣,如果觉得我的文章对您有用,请帮助本站成长」

赞(0) 打赏
一分也是爱

支付宝扫一扫打赏

微信扫一扫打赏

上一篇:

下一篇:

相关推荐

博客简介

本站CDN采用VmShell免费提供离中国大陆最近的香港CMI高速网络做支撑,ToToTel打造全球最快速的边沿网络支撑服务,具体详情请见 :https://vmshell.com/ 以及 https://tototel.com/,网站所有的文件和内容禁止大陆网站搬迁复制,谢谢,VPS营销投稿邮箱: admin@linuxxword.com,我们免费帮大家发布,不收取任何费用,请提供完整测试文稿!

精彩评论

友情链接

他们同样是一群网虫,却不是每天泡在网上游走在淘宝和网游之间、刷着本来就快要透支的信用卡。他们或许没有踏出国门一步,但同学却不局限在一国一校,而是遍及全球!申请交换友链

站点统计

  • 文章总数: 2331 篇
  • 草稿数目: 12 篇
  • 分类数目: 6 个
  • 独立页面: 0 个
  • 评论总数: 2 条
  • 链接总数: 0 个
  • 标签总数: 5981 个
  • 注册用户: 139 人
  • 访问总量: 8,689,754 次
  • 最近更新: 2024年4月25日