CentOS8 邮件系统部署

邮件系统简介

电子邮件系统是基于邮件协议来完成电子邮件的传输。

常见的邮件协议:

  1. 简单邮件传输协议(Simple Mail Transfer Protocol ,SMTP): 用于发送和中专发出的电子邮件,占用服务器的25/TCP端口
  2. 邮局协议版本3(Post Office Protocol 3 ,POP3): 用于将电子邮件存储到本地主机,占用服务器的110/TCP端口
  3. Internet消息访问协议版本4(Internet Message Access Protocol 4, IMAP4): 用于在本地主机上访问邮件,占用服务器的143/TCP端口

在部署邮件系统时,邮件系统中会存在多种邮件服务器。

  • 邮件用户代理服务器(Mail User Agent , MUA): 为用户收发邮件的服务器
  • 邮件投递代理(Mail Delivery Agent ,MDA ): 保存用户邮件的信箱服务器
  • 邮件传输代理服务器(Mail Transfer Agent ,MTA): 将邮件保存在本地的收件箱中

邮件系统工作流程如下所示:
在这里插入图片描述
用户的主机连接远程邮件系统(比如说QQ邮箱),在远程邮件系统中同时存在邮件投递代理服务器,邮件用户代理服务器。当用户写好邮件后,通过使用QQ邮箱服务器将邮件发送给QQ邮箱电子邮局,如果要发送给其他的邮局服务器域名,则使用SMTP协议将邮件传输给网易163电子邮局。我们使用QQ邮箱并不是说我们的电脑上也有邮件系统服务器,比如说我们使用浏览器登入到QQ邮箱,我们只是使用HTTP协议连接到腾讯QQ邮箱服务器(类似于SSH),QQ邮箱服务器中保存有我们的账户名和密码所以我们才可以连接到QQ邮箱服务器。腾讯相当于Linux系统中的root用户,我们相当于该服务器中只有使用邮箱模块的普通用户。

邮件系统部署实践

在部署邮件系统时,我们需要部署两种服务程序,一种是用来发邮件的服务程序,一种是用来受邮件的服务程序。

前期工作,每次在部署某一种服务种都要考虑linux防火墙和SElinux安全上下文可能带来的部署失败可能。所以首先先开启防火墙相关服务,放行相关端口号,如下所示。

[root@MyCentOS ~]# firewall-cmd --list-all
internal (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: cockpit dhcpv6-client ftp mdns mountd nfs rpc-bind samba samba-client ssh tftp
  ports: 69/udp 2049/tcp 2049/udp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	
[root@MyCentOS ~]# firewall-cmd --permanent --add-service=smtp
success
[root@MyCentOS ~]# firewall-cmd --permanent --add-port=25/tcp
success
[root@MyCentOS ~]# firewall-cmd --permanent --add-service=pop3
success
[root@MyCentOS ~]# firewall-cmd --permanent --add-port=110/tcp
success
[root@MyCentOS ~]# firewall-cmd --permanent --add-service=imap
success
[root@MyCentOS ~]# firewall-cmd --permanent --add-port=143/tcp
success
[root@MyCentOS ~]# firewall-cmd --reload

在设置防火墙时记得每次都要加入permanent参数,同时reload 刷新防火墙配置

因为是实验,无法通过公共的DNS服务器找到本地域名和IP地址的对应关系。所以在设置好防火墙之后还应当设置DNS服务器。让mail程序能够通过域名找到服务器IP地址。DNS服务器具体部署步骤详见之前的博客。DNS部署结果如下所示DNS服务器部署完成之后还需要将linux系统的DNS地址设置为本地IP地址

[root@MyCentOS ~]# nmtui
[root@MyCentOS ~]# nmcli n on ens33
[root@MyCentOS ~]# systemctl restart NetworkManager
[root@MyCentOS ~]# systemctl restart network-online.target 
[root@MyCentOS ~]# nslookup
> www.chrisgoudan.com
Server:		192.168.127.201
Address:	192.168.127.201#53

Name:	www.chrisgoudan.com
Address: 192.168.127.201
> Mail.chrisgoudan.com
Server:		192.168.127.201
Address:	192.168.127.201#53

Name:	mail.chrisgoudan.com
Address: 192.168.127.201
> exit

Postfix部署 发件功能

早期linux邮件系统使用的是SendMail服务程序提供发件服务,当下使用的是Postfix服务程序。

Postfix服务程序优势: 简化配置步骤,稳定性、并发性有很大改进,兼容Sendmail,能自动增加减少进程数量保证电子邮件系统的高性能和稳定性。程序由多个小模块组成,可在实际环境中灵活搭配。

---------------------------------------Postfix服务程序主配置文件重要参数-------------------------------------------------

参数作用
myhostname邮局系统的主机名
mydomain邮局系统的域名
myorigin从本机发出邮件的域名名称
inet_interfaces监听的网卡接口
mydestination可接收邮件的主机名或域名
mynetworks设置可转发哪些主机的邮件
relay_domains设置可转发哪些网域的邮件

Postfix编辑主配置文件

Postfix主配置文件在/etc/postfix/main.cf路径下。

  1. 根据上面表格所说的,我们需要将上述参数修改。如下所示
[root@MyCentOS ~]# vim /etc/postfix/main.cf

myhostname = Mail.chrisgoudan.com  <<<设置邮局系统主机名
mydomain = chrisgoudan.com		   <<<<设置邮局系统域名
myorigin = $mydomain				<<<设置本机发出邮件的域名名称,比如我们在使用qq邮箱时,后缀都会带有@qq.com
inet_interfaces = all  <<<<<设置网卡监听地址,指定使用服务器哪些IP地址对外提供电子邮件服务
mydestination = $myhostname, $mydomain   <<<<<设置可接收邮件的主机名或域名列表
  1. 完成设置后,添加一个用户账户和密码
[root@MyCentOS ~]# useradd chrisgoudan
[root@MyCentOS ~]# echo "chrisgoudan" | passwd --stdin chrisgoudan
更改用户 chrisgoudan 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@MyCentOS ~]# systemctl start postfix.service 

postfix配置完成。

Dovecot部署 收件功能

Dovecot是一款能够为Linux系统提供IMAP和POP3电子邮件服务的开源服务程序。
优点: 安全性高,配置简单,执行速度快,占用服务器资源少

安装Dovecot服务程序

[root@MyCentOS ~]# yum install dovecot

编辑dovecot主配置文件

[root@MyCentOS ~]# vim /etc/dovecot/dovecot.conf 

protocols = imap pop3 lmtp submission  <<<<去除该行的注释,添加dovecot支持的邮件协议
disable_plaintext_auth=no         <<<<<<添加该行参数,允许用户明文密码登入

配置邮件格式和存储路径

# There are a few special variables you can use, eg.:
#
#   %u - username
#   %n - user part in user@domain, same as %u if there's no domain
#   %d - domain part in user@domain, empty if there's no domain
#   %h - home directory
#
# See doc/wiki/Variables.txt for full list. Some examples:
#
#   mail_location = maildir:~/Maildir
   mail_location = mbox:~/mail:INBOX=/var/mail/%u  <<<<<去除该行注释,设置邮件存储路径
#   mail_location = mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%n
#
# <doc/wiki/MailLocation.txt>

创建保存邮箱的目录

在完成以上设置后,切换至之前创建的邮箱用户,在用户家目录下创建接收保存邮件的目录。

[chrisgoudan@Mail ~]$ mkdir -p mail/INBOX

测试一下是否创建成功

[chrisgoudan@Mail ~]$ cd /home/chrisgoudan/mail/INBOX
[chrisgoudan@Mail INBOX]$ 

测试邮件系统

在实机win10平台上进行测试,打开控制面板,在网络中设置DNS服务器地址为之前虚拟机部署的DNS服务器地址。

使用win10自带的邮件程序,对部署的邮箱系统进行测试。

步骤如下图所示:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
当第一次使用邮件程序登入虚拟机中的邮件系统时会失败,再试第二次就会出现如下登录界面,按照说明天填写即可。
在这里插入图片描述

登入成功,可以发送一篇邮件给root@chrisgoudan.com用户
在这里插入图片描述
登录邮件系统,查看root用户的邮箱可以看见一封邮件。

[root@Mail home]# mail    <<<<<<,查看root用户邮箱
Heirloom Mail version 12.5 7/5/10.  Type ? for help.
"/var/spool/mail/root": 1 message 1 new
>N  1 chrisgoudan           Fri Aug 21 16:35  80/2939  "你个傻逼!!!!!"
& 

再使用win10邮件程序,以root的身份给chrisgoudan@chrisgoudan.com账户发送一封邮件。进入虚拟机,切换至chrisgoudan用户可以查看到收到的邮件,如下所示

[root@Mail ~]# su - chrisgoudan
[chrisgoudan@Mail ~]$ mail
Heirloom Mail version 12.5 7/5/10.  Type ? for help.
"/var/spool/mail/chrisgoudan": 1 message 1 new
>N  1 root                  Sat Aug 22 08:03  80/2904  "你再骂!!!"
& 

因为是实验,没办法通过win10的邮件程序 查看和发送邮件。猜测可能是域名不是合法域名,同时DNS的IP地址也只是局域网的IP地址。如果将邮件系统部署在云服务器中,同时申请域名进行备案,应该就能使用自己的邮件系统了,同时该邮件系统也能给其他人使用。

在部署过程中,没有关闭防火墙,但是关闭了SELinux安全上下文。为了实验方便需要关闭SELinux安全上下文setenforce 0。但是在实际生产环境中,不可能将SELinux安全上下文关闭。网上查了一遍没有发现应该怎么操作,只在外网中查到一篇博客教程安装postfix-clamav-spamassassin-dovecot-关于Debian squeeze的postfixadmin

在博客中关于587端口的描述如下

一些ISP采取了非常严厉的措施来阻止某些蠕虫和垃圾邮件,他们决定完全阻止家庭用户使用25端口。
对于这些用户,邮件传递将不起作用。因此,我们需要配置Postfix来侦听另一个端口:
Mail Submission端口587。

在中/etc/postfix/master.cf,以“ smtp inet”开头的行的上方,添加以下内容:

submission inet n       -       -       -       -       smtpd
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth
  -o smtpd_sasl_security_options=noanonymous
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o smtpd_sender_login_maps=proxy:mysql:/etc/postfix/virtual/alias_maps.cf
  -o smtpd_sender_restrictions=reject_sender_login_mismatch
  -o smtpd_recipient_restrictions=reject_non_fqdn_recipient,permit_sasl_authenticated,reject

按照博客中说的进行了设置,但是不成功。以后再说

设置用户别名信箱

用户别名功能是一项简单使用的邮件账户伪装技术,可以用来设置多个虚拟信箱账户以接收发送的邮件,从而保证自身的真实邮件地址不被泄露,还可以用来接收自己的多个信箱中的邮件。

用户信箱别名的设置在/etc/aliases文件中。如下所示

#  Aliases in this file will NOT be expanded in the header from
#  Mail, but WILL be visible over networks or from /bin/mail.
#
#       >>>>>>>>>>      The program "newaliases" must be run after
#       >> NOTE >>      this file is updated for any changes to
#       >>>>>>>>>>      show through to sendmail.
#

# Basic system aliases -- these MUST be present.
mailer-daemon:  postmaster
postmaster:     root

# General redirections for pseudo accounts.
bin:            root
daemon:         root
adm:            root
lp:             root

其中冒号前账户名称可以是Linux系统本地用户,也可以是任意设置的名字。也就是说对于邮箱系统来说,冒号前的是可以公开的,冒号后面是真正的邮箱收件账户。设置邮箱别名,只需要在aliases中按照格式添加即可

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值