CentOS8.5.2111(10)基于域名访问的邮件服务配置与管理
兰生幽谷,不为莫服而不芳;
君子行义,不为莫知而止休。
1.实验目标
1.掌握邮件服务的工作原理
2.掌握各配置文件作用及其参数意义
3.具备postfix和POP3服务器配置能力
4.具备对客户端用户身份验证配置能力
5.具备客户端验证测试正常收发邮件的能力
6.具备邮件服务器故障排除能力
2. 实训原理
2.1项目背景
你是某企业的网络技术员,需发布搭建邮件服务为公司每位员工设置邮箱。本次实验任务是实现基于Centos环境下postfix服务、dovecot服务及对客户端用户身份验证设置。在LINUX客户端或Outlook客户端进行收发邮件。
图10- 1 email系统拓扑
表 10-1 主机规划
主 机 名 称 | 操作系统 | IP地址 |
dns | CentOS8 | 192.168.学号.66(自己定) |
| CentOS8 | 192.168.学号.75(自己定)与DNS server同网段 |
client1 | CentOS8 | 192.168.学号.73(自己定)与DNS server同网段 |
client2 | WINDOWS12 | 192.168.学号.25(自己定)与DNS server同网段 |
2.2任务要求
1. 安装postfix服务器;
2. 安装dovecot服务器;
3. 对客户端用户身份验证设置;
4. 两种不同的客户端验证测试。
3.实验流程
重要提示:请确保虚拟机能正常连接到互联网!!!测试虚拟机是否连接互联网
Ping www.baidu.com
[root@client1 ~]# ping www.baidu.com -c 1 PING www.a.shifen.com (183.2.172.185) 56(84) bytes of data. 64 bytes from 183.2.172.185 (183.2.172.185): icmp_seq=1 ttl=128 time=54.10 ms |
以上代表虚拟机能够正常连接互联网,其他主机测试略。
3.1 配置一个完整的收发邮件服务器并测试
1)检查DNS服务的是否正常运行,并能正常解析mail.学生姓名.Com的域名。
[root@DNS ~]# systemctl status named |
图10- 2
测试域名
服务器端检查
[root@DNS ~]# nslookup mail.wzz.cqie Server: 192.168.100.66 Address: 192.168.100.66#53 Name: mail.wzz.cqie Address: 192.168.100.75 |
客户端检查
[root@client1 ~]# nslookup mail.wzz.cqie Server: 192.168.100.66 Address: 192.168.100.66#53 Name: mail.wzz.cqie Address: 192.168.100.75 |
图10- 3
图10- 4
如果正常,则执行如下操作,如果不能正常解析,请参见DNS服务器配置先完善DNS服务。
2)服务器端
服务器端需安装postfix、dovecot和telnet服务,防火墙放行相关服务及端口
(1)安装postfix、dovecot和telnet服务
[root@mail ~]#yum install postfix dovecot telnet-server telnet -y …… [root@mail ~]# rpm -qa|grep postfix postfix-3.5.8-2.el8.x86_64 [root@mail ~]# rpm -qa|grep dovecot dovecot-2.3.8-9.el8.x86_64 [root@mail ~]# rpm -qa|grep telnet telnet-server-0.17-76.el8.x86_64 telnet-0.17-76.el8.x86_64 |
图10- 5
(2)打开SELinux有关的布尔值,在防火墙中开放dns、smtp服务。
[root@mail ~]#setsebool -P allow_postfix_local_write_mail_spool on |
查看设置是否行效
[root@mail ~]# getsebool -a|grep postfix postfix_local_write_mail_spool --> on |
图10- 6
防火墙放开
[root@mail ~]#firewall-cmd --permanent --add-service=dns [root@mail ~]#firewall-cmd --permanent --add-service=smtp [root@mail ~]#firewall-cmd --permanent --add-service=telnet [root@mail ~]#firewall-cmd --reload |
(3) 启动POP3服务,同时开放pop3和imap对应的TCP端口110和143。
[root@mail ~]#firewall-cmd --permanent --add-port=110/tcp [root@mail ~]#firewall-cmd --permanent --add-port=25/tcp [root@mail ~]#firewall-cmd --permanent --add-port=143/tcp [root@mail ~]#firewall-cmd --permanent --add-port=23/tcp [root@mail ~]#firewall-cmd --reload |
检查端口是否开启
[root@mail ~]# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens33 ens36 ens37 ens38 sources: services: cockpit dhcpv6-client dns smtp ssh telnet ports: 110/tcp 25/tcp 143/tcp 23/tcp protocols: forward: no masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: |
3)配置邮件服务器主配置文件 (域名以wzz.cqie为例,学生自己对应自已域名)
先配置/etc/ postfix/main.cf,再配置Dovecot服务程序。
(1) 配置/etc/ postfix/main.cf。
[root@mail ~]#vi /etc/postfix/main.cf myhostname = mail.wzz.cqie mydomain = wzz.cqie myorigin = $mydomain inet_interfaces = all mydestination = $myhostname,$mydomain,localhost |
图10- 7
图10- 8
图10- 9
图10- 10
图10- 11
图10- 12
图10- 13
(2)配置dovecot.conf
[root@mail ~]#vi /etc/dovecot/dovecot.conf protocols = imap pop3 lmtp #可以删除lmtp协议 login_trusted_networks = 0.0.0.0/0 |
图10- 14
10- 15
(3)配置邮件格式和路径,建立邮件目录(极易出错)。
[root@mail ~]#vi /etc/dovecot/conf.d/10-mail.conf mail_location = mbox:~/mail:INBOX=/var/mail/%u |
图10- 16
[root@mail ~]#useradd user3 [root@mail ~]#useradd user4 [root@mail ~]#passwd user3 [root@mail ~]#passwd user4 [root@mail ~]#mkdir -p /home/user3/mail/.imap/INBOX [root@mail ~]#mkdir -p /home/user4/mail/.imap/INBOX |
(4)启动各种服务,配置防火墙,允许布尔值等。
[root@mail ~]#systemctl start postfix [root@mail ~]#systemctl start named [root@mail ~]#systemctl start dovecot [root@mail ~]#systemctl enable postfix [root@mail ~]#systemctl enable dovecot [root@mail ~]#systemctl enable named [root@mail ~]#setsebool -P allow_postfix_local_write_mail_spool on |
(5)检查各服务状态是否正常
图10- 17
图10- 18
检查各服务对应的端口是否正常监听状态
图10- 19
注意:如果不能识别netstat命令,则需安装
[root@mail ~]#yum install net-tools -y |
3.2 在client上使用telnet发送邮件
1)使用telnet发送邮件(在Client1客户端测试,确保DNS服务器设为邮件服务器指向的DNS,教师的DNS地址与邮件服务器地址均为192.168.100.66和192.168.100.75)。
[root@client1 ~]# nslookup mail.wzz.cqie Server: 192.168.100.66 Address: 192.168.100.66#53 Name: mail.wzz.cqie Address: 192.168.100.75 |
图10- 20
或者ping通
图10- 21
如果不能测试正常,检查。
在Client1上测试DNS是否正常,这一步至关重要。
[root@client1 ~]# cat /etc/resolv.conf # Generated by NetworkManager search localdomain nameserver 192.168.100.66 nameserver 114.114.114.114 nameserver 192.168.137.2 |
查看一下
[root@client1 ~]# nslookup > set type=MX > wzz.cqie Server: 192.168.100.66 Address: 192.168.100.66#53 wzz.cqie mail exchanger = 10 mail.wzz.cqie. > exit |
注意:如果nslookup命令不识别,请安装DNS(bind-utils包)
yum install bind-utils -y
图10- 22
2)在Client上依次安装telnet所需的软件包。
[root@Client ~]# yum install telnet-server telnet –y |
3)在Client1客户端测试。(以下红色部分为输入内容,黑色部分为注释或系统自动提示)
[root@Client ~]#telnet mail.wzz.cqie 25 //利用telnet命令连接邮件服务器的25端口 |
图10- 23
Helo wzz.cqie //利用helo命令向邮件服务器表明身份,不是hello 250 mail.wzz.cqie mail from:"test"<user3@wzz.cqie> //设置信件标题以及发信人地址。其中信件标题为“test”,发信人地址为client1@smile.com 250 2.1.0 Ok Rcpt to:user4@wzz.cqie //利用rcpt to命令输入收件人的邮件地址 250 2.1.5 Ok data // data表示要求开始写信件内容了。354 End data with <CR><LF>.<CR><LF> dear user2: //信件内容 how are you? . //“.”表示结束信件内容。千万不要忘记输入“.” 250 2.0.0 Ok: queued as 456EF25F quit //退出telnet命令 221 2.0.0 Bye Connection closed by foreign host. |
图10- 24
3.3 利用Telnet命令接收电子邮件
以下红色部分为输入内容,黑色部分为注释或系统自动提示
[root@Client ~]#telnet mail.wzz.cqie 110 //利用telnet连接邮件服务器110端口 |
图10- 25
[root@client1 ~]# telnet mail.wzz.cqie 110 Trying 192.168.100.75... Connected to mail.wzz.cqie. Escape character is '^]'. +OK [XCLIENT] Dovecot ready. user user4 +OK pass user4 +OK Logged in. list +OK 1 messages: 1 295 . retr 1 +OK 295 octets Return-Path: <user3@wzz.cqie> X-Original-To: user4@wzz.cqie Delivered-To: user4@wzz.cqie Received: from wzz.cqie (squid.wzz.cqie [192.168.100.73]) by mail.wzz.cqie (Postfix) with SMTP id 2E55F99B98 for <user4@wzz.cqie>; Sat, 7 Dec 2024 10:21:53 -0500 (EST) dear user2: how are you? . quit +OK Logging out. Connection closed by foreign host. |
图10- 26
查看用户邮件目录
Postfix在/var/spool/mail目录中为每个用户分别建立单独的文件用于存放每个用户的邮件,这些文件的名字和用户名是相同的
[root@mail ~]# ll /var/spool/mail 总用量 4 -rw-rw----. 1 rpc mail 0 10月 21 02:31 rpc -rw-rw----. 1 user3 mail 0 12月 7 07:58 user3 -rw-rw----. 1 user4 mail 437 12月 7 10:30 user4 |
3.4利用outlook收、发电子邮件(略)
3.5使用Cyrus-SASL实现SMTP认证
为了避免邮件服务器成为各类广告与垃圾信件的中转站和集结地,对转发邮件的客户端进行身份认证(用户名和密码验证)是非常必要的。SMTP认证机制是通过Cryus-SASL包来实现的。
1)编辑认证配置文件
(1)安装cyrus-sasl软件
[root@mail ~]# yum install cyrus-sasl -y |
图10- 27
检查sasl安装包是否完整,共3 个。
图10- 28
(2)查看、选择、启动和测试所选的密码验证方式
[root@mail ~]# saslauthd -v //查看支持的密码验证方法 saslauthd 2.1.27 authentication mechanisms: getpwent kerberos5 pam rimap shadow ldap httpform |
[root@mail ~]#vi /etc/sysconfig/saslauthd //将密码认证机制修改为shadow …… MECH=shadow //指定对用户及密码的验证方式,由pam改为shadow,本地用户认证 …… |
图10- 29
保存退出!
[root@mail ~]# ps aux | grep saslauthd //查看saslauthd进程是否已经运行 root 15901 0.0 0.2 221928 1144 pts/0 S+ 10:43 0:00 grep --color=auto saslauthd |
//开启SELinux布尔值允许saslauthd程序读取/etc/shadow文件
[root@MAIL ~]#setsebool -P allow_saslauthd_read_shadow on |
图10- 30
[root@mail ~]# systemctl start saslauthd [root@mail ~]# systemctl enable saslauthd Created symlink /etc/systemd/system/multi-user.target.wants/saslauthd.service → /usr/lib/systemd/system/saslauthd.service. |
图10- 31
测试saslauthd的认证功能
[root@mail ~]# testsaslauthd -u user4 -p 'user4' 0: OK "Success." |
图10- 32
(3)编辑smtpd.conf文件,使Cyrus-SASL支持SMTP认证。
[root@mail~]#vi /etc/sasl2/smtpd.conf pwcheck_method:saslauthd mech_list:plain login log_level: 3 //记录log的模式 saslauthd_path:/run/saslauthd/mux //设置smtp寻找cyrus-sasl的路径 |
图10- 33
2)编辑main.cf文件,使Postfix支持SMTP认证
(1)在默认情况下,Postfix并没有启用SMTP认证机制。要让Postfix启用SMTP认证,就必须在main.cf文件中添加如下配置行。
[root@mail~]#vi /etc/postfix/main.cf smtpd_sasl_auth_enable = yes //启用SASL作为SMTP认证 smtpd_sasl_security_options = noanonymous //禁止采用匿名登录方式 broken_sasl_auth_clients = yes //兼容早期非标准的SMTP认证协议(如OE4.x) smtpd_recipient_restrictions = permit_sasl_authenticated, reject_unauth_destination //认证网络允许,没有认证的拒绝 |
最后一句设置基于收件人地址的过滤规则,允许通过SASL认证的用户向外发送邮件,拒绝不是发往默认转发和默认接收的连接。
(2)重新载入Postfix服务,使配置文件生效(防火墙、端口、SELinux的设置同前面内容)。
[root@MAIL ~]#postfix check [root@MAIL ~]#postfix reload [root@MAIL ~]#systemctl restart saslauthd [root@MAIL ~]#systemctl enable saslauthd |
3)利用foxmail验证测试
(1)首先确保服务器状态正常
图10- 34
图10- 35
图10- 36
(2)然后在物理机上,仅保留NAT模式用到VMnet8可用,其余禁用掉(以免解析公网上的相关域名形成干扰)。并配置该网卡DNS为邮件服务器的ip。
测试物理机上能正常解析邮件服务器中的域名。如mail.wzz.cqie
图10- 37
(3)在windows客户端收邮件
添加telnet服务
图10- 38
启用cmd或powershell,用telnet收发邮件
图10- 39
当然,也可以安装foxmail,并设置user3、user4账户、服务器相关信息,记得勾选认证选项。
测试邮件的正常收发,并可以带附件文件。(步骤略)。