前面介绍了企业常用服务 NFS 、 FTP 、 DHCP 、DNS 、Samba 、lsyncd 相关的知识点,今天我将详细的为大家介绍邮件服务 Postfix 相关知识,希望大家能够从中收获多多!如有帮助,请点在看、转发朋友圈支持一波!!!
Postfix 是一种电子邮件服务器,它是由任职于IBM华生研究中心(T.J. Watson Research Center)的荷兰籍研究员Wietse Venema为了改良sendmail邮件服务器而产生的。最早在1990年代晚期出现,是一个开放源代码的软件。
sendmail由于出现的比较早,但是各方面的问题也比较突出,postfix就是为了替代sendmail的缺点而出现的,postfix 邮件服务器的优点很明显:
1)SMTP:Simple Mail Transfer Protocol/简单邮件传送协议,定义邮件传送,基于TCP服务的应用层,明文传送,SMTP协议使用25端口 。两个邮件服务器之间,客户和邮件服务器之间使用。服务器和服务器之间用来传输邮件,客户端将邮件传输到服务器。
2)POP3:Post Office Protocol 3/邮局协议第三版,POP3协议适用于不能实时在线的邮件用户。支持客户在服务器上租用信箱,然后利用POP3协议向服务器请求下载,基于TCP/IP协议与客户端/服务端模型,POP3的认证与邮件传送都采用明文,使用110端口 。客户端和服务器之间使用,用来下载邮件。
3)IMAP:Internet Message Access Protocol/英特网信息存取协议,也叫邮件同步协议,另一种从邮件服务器上获取邮件的协议,与POP3相比,支持在下载邮件前先行下载邮件头以预览邮件的主题来源,基于TCP/IP,明文传送,使用143端口。
postfix由这些还有其他的一些模块来进行服务,各个模块自己完成自己的任务,他们由一个master进程统一调度。
队列管理进程仅仅在内存中保留active队列,并且限制其长度。
当有新的邮件到达的时候,postfix进行初始化,此时postfix同时只接受两个并发连接请求,当邮件投递成功后,可以同时接收的并发连接就会缓慢地增长,一直到可配置的值。
当系统资源消耗已经达到不能承受的负载,就会停止并发连接数量的增长,或者postfix在处理邮件过程中遇到问题,数量也会减少。
当接收到的新邮件的数量,超过它的投递能力时,postfix会停止投递deferred队列中的邮件,去处理新接收到的邮件,因为处理新邮件的延迟小于处理defferred队列中的邮件。
当第一次发送失败,postfix会给该邮件,贴上一个将来的时间有票,在达到这个时间之前,不会再处理该类邮件,到到达这个时间时,进行投递,再次失败,将再次贴上一个双倍与第一次的邮件将来时间的邮票,以此类推,进行多次尝试之后,放弃该邮件,回复用户错误信息。
postfix对于目标不可达的目的邮件的处理,postfix内存之中保存了一个有长度限制的不可达的地址列表,避免想这些地方进行邮件投递。
当接受新邮件时,新的邮件首选在incoming队列停留,并进行处理:
上面的部分结束之后,邮件已经到达incoming的队列了,接下来进行邮件的投递。
root@localhost ~]# systemctl stop firewalld //关闭防火墙
[root@localhost ~]# setenforce 0 //关闭selinux
搭建DNS服务器(可参考前面的文章:)
[root@localhost ~]# vi /etc/named.conf 修改如下内容:
保存退出
[root@localhost ~]# vi /etc/named.rfc1912.zones
保存退出
[root@localhost named\]# vi aa.com.zone //编辑正向区域数据配置文件
//创建反向区域数据配置文件
[root@localhost named]# cp -p named.localhost aa.com.local
[root@localhost named]# vi aa.com.local //编辑反向区域数据配置文件
保存退出
[root@localhost ~]# postconf –a //验证是否支持cyrus dovecot功能
(若postfix已安装好,则会支持这两个功能,若不支持,表示postfix未安装好;CentOS 7开始默认系统自带postfix。)。
[root@localhost ~]# systemctl start postfix 启动服务
------------编辑主配置文件--------------
[root@localhost ~]# vi /etc/postfix/main.cf
root@localhost ~]# postfix check //检查语法错误(与named-check用法一样)
[root@localhost ~]# systemctl restart postfix //重启服务
[root@localhost ~]# postconf –n //查看postfix的非默认并已生效配置
-------------增加邮件测试帐号--------------
[root@localhost ~]# groupadd mailusers //创建组给测试帐号
[root@localhost ~]# useradd -g mailusers -s /sbin/nologin jack
//创建jack帐户只属于mailusers组并不能登录系统,用于测试邮件
[root@localhost ~]# passwd jack //创建jack密码
[root@localhost ~]# useradd -g mailusers -s /sbin/nologin tom
[root@localhost ~]# passwd tom
--------------连接服务器的25端口进行简单发信测试-----------
[root@localhost ~]# telnet mail.aa.com 25
//连接成功,开始写信
helo mail.aa.com //声明本机的主机
mail from:jack@aa.com //声明发件人地址
rcpt to:tom@aa.com //声明收件人地址
data //写正文
i am jack!!
. //正文结束标记
quit // 退出
如图所示:
[root@localhost ~]# cat /home/tom/Maildir/new/1515968168.Vfd00I306d0f0M475089.localhost.localdomain
成功显示:
----------------启动服务--------------
[root@localhost ~]# systemctl start dovecot
[root@localhost ~]# netstat -anpt | grep dovecot
//110,143端口需要监听
---------------收信验证---------------
[root@localhost ~]# telnet mail.aa.com 110
user tom //收件人登录
pass 123 //邮箱密码
list //列表查看邮件
retr 1 //读取编号为1的邮件
quit //退出邮箱
如图所示:
验证成功。
---------安装cyrus-sasl软件-------------
[root@localhost ~]# yum install -y cyrus-sasl* //注意,此处加上“*”,包含安装该软件所包含插件
-------------启动服务--------------
[root@localhost ~]# systemctl start saslauthd
[root@localhost ~]# systemctl enable saslauthd
#编辑postfix主配置文件
[root@localhost ~]# vi /etc/postfix/main.cf
添加以下内容:
smtpd_sasl_auth_enable = yes //开启认证。
smtpd_sasl_security_options = noanonymous //不允许匿名发信。
mynetworks = 127.0.0.0/8 //允许的网段,如果增加本机所在网段就会出现允许不验证也能向外域发信。
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination //允许本地域以及认证成功的发信,拒绝认证失败的发信。
#下载需要的命令
[root@master ~]# yum install -y perl-String-Format.noarch
#账户加密
[root@master ~]# printf "jack" | openssl base64
amFjaw==
[root@master ~]# printf "000000" | openssl base64
MDAwMDAw
[root@master ~]# telnet mail.aa.com 25
Trying 192.168.200.10..
Connected to mail.aa.com.
Escape character is '^]'.
220 mail.aa.com ESMTP Postfix
ehlo mail.aa.com
250-mail.aa.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
auth login //认证登录
334 VXNlcm5hbWU6
amFjaw== //密文用户名
334 UGFzc3dvcmQ6
MDAwMDAw //密文密码
235 2.7.0 Authentication successful
mail from:jack@aa.com
250 2.1.0 Ok
rcpt to:aa@163.com
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
this is test
.
250 2.0.0 Ok: queued as 04F27F31FF
quit
221 2.0.0 Bye
Connection closed by foreign host.
[root@master config]# vim /etc/aliases
#生成新的hash数据库文件
[root@master config]# newaliases
[root@master config]# vim /etc/postfix/main.cf 最后添加
开启磁盘配额
#查看磁盘配额开启状态
[root@master config]# mount
#卸载home目录的挂载
[root@master config]# unmount /home
#重新挂载
[root@localhost ~]# mount –a
#查看挂载状态
[root@localhost ~]# mount
确认home目录磁盘配额已开启
[root@localhost ~]# quotaon -p /home/
由于sda2分区格式为xfs,默认自动开启磁盘配额功能,为jack用户配置磁盘配额限制。
[root@localhost ~]# edquota -u jack
配置jack用户邮箱大小为最大10M。
[root@master home]# vim /etc/postfix/main.cf
#重启服务
[root@localhost ~]# systemctl restart postfix
发出第三封邮件之后,邮箱提示,硬盘配额溢出。
#进入jack用户存放邮件的目录查看接收邮件的大小
[root@localhost ~]# cd /home/jack/Maildir/cur/
系统默认接收到两封邮件后容量已达8.1M,无法再接收第三封3M的邮件,磁盘配额生效,测试成功。
参考链接:https://blog.csdn.net/weixin_43214644/article/details/124582335 https://blog.csdn.net/m0_73966096/article/details/129999670