(注:下文中 IP 192.168.200.101为我的虚拟机IP,涉及上述“192.168.200.101”以及“192.168.200”的内容,请根据实际情况自行修改)
实验目的:
理解电子邮件服务器的工作原理,掌握电子邮件服务器端和客户端的安装、配置和测试。
关键实验步骤(截屏):
实验要求:为了能够实际部署一个的电子邮局系统,需要使用到下面的软件:1)Sendmail:实现邮件的接收和中转,即SMTP;2)Dovecot:实现邮件的收取,即POP3和IMAP;3)Foxmail:客户端收发邮件的工具。硬件上需要两台主机:一台Linux主机,同时安装邮件服务器软件Sendmail、Dovecot和DNS服务器软件bind;一台Windows 10主机(192.168.200.101)作为电子邮件用户端,安装软件Foxmail。
注:本实验中全程使用默认网卡VMnat8(NAT模式),单个IP地址(192.168.200.101)
实验测试设备:一个纯净的CentOS7.2系统的虚拟机(关闭防火墙以及SElinux),正常联网的Windows7/10主机
子任务1 安装并开启sendmail和Dovecot服务
1、安装sendmail服务以及相关组件
[root@chuang ~]# yum -y install sendmail* m4
切换MTA让sendmail随系统启动
CentOS默认已经安装了同功能的postfix,所以需要切换MTA。为了避免和服务冲突,建议直接禁止运行postfix,执行“#systemctl mask postfix.service”。
[root@chuang ~]# alternatives --config mta
There are 2 programs which provide 'mta'.
Selection Command
-----------------------------------------------
1 /usr/sbin/sendmail.postfix
*+ 2 /usr/sbin/sendmail.sendmail
Enter to keep the current selection[+], or type selection number: 2
[root@chuang ~]# systemctl start sendmail
[root@chuang ~]# systemctl enable sendmail
[root@chuang ~]# systemctl mask postfix
Created symlink from /etc/systemd/system/postfix.service to /dev/null.
[root@chuang ~]#
安装与开启Dovecot服务
[root@chuang ~]# yum -y install dovecot
......
[root@chuang ~]# systemctl start dovecot
[root@chuang ~]# systemctl enable dovecot
Created symlink from /etc/systemd/system/multi-user.target.wants/dovecot.service to /usr/lib/systemd/system/dovecot.service.
[root@chuang ~]#
子任务2 配置SMTP邮件服务器Sendmail
实验要求:在部署一台Sendmail服务器,为公司网络内部的客户端计算机提供邮件收发服务,具体参数要求如下:DNS域名为zc.com;DNS服务器IP地址为192.168.200.101;Sendmail服务器IP地址为192.168.200.101;Sendmail服务器MX记录为mail.zc.com;公司网络为192.168.200.0/24;能够给公司全体员工群发邮件。
安装DNS服务工具,并修改配置文件/etc/named.conf
[root@chuang ~]# yum -y install bind*
......
//编辑DNS服务器配置文件,修改以下3处内容
vi /etc/named.conf
listen-on port 53 { 192.168.200.101; }; //此处改为虚拟机IP,即后面的域名服务器;
listen-on-v6 port 53 { any; }; //此处改为any;
allow-query { any; }; //此处改为any;
//保存退出
修改辅助区域文件
[root@chuang ~]# vi /etc/named.rfc1912.zones
......
//末行添加如下内容,域名可自定义
zone "zc.com" IN {
type master;
file "zc.com.zone";
allow-update {none;};
};
编辑DNS正向解析文件并重启named服务
[root@chuang ~]# cd /var/named
[root@chuang named]# cp -p named.localhost zc.com.zone
[root@chuang named]# vi zc.com.zone
$TTL 1D
@ IN SOA dns.zc.com. root.zc.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS dns.zc.com.
dns IN A 192.168.200.101
mail IN A 192.168.200.101
@ IN MX 10 mail.zc.com.
[root@chuang named]# systemctl restart named
[root@chuang named]#
修改网卡配置,设置 DNS1 为虚拟机 IP (192.168.200.101),并重启网络
[root@chuang ~]# vi /etc/sysconfig/network-scripts/ifcfg-eno16777736
......
//重点修改以下内容;
BOOTPROTO=static
IPADDR=192.168.200.101
PREFIX=24
GATEWAY=192.168.200.2
DNS1=192.168.200.101
DNS2=8.8.8.8
ONBOOT=yes
[root@chuang ~]# systemctl restart network
[root@chuang ~]#
验证邮件交换器设置并测试DNS解析服务
//验证邮件交换器设置
[root@chuang ~]# host -t mx zc.com
zc.com mail is handled by 10 mail.zc.com.
//测试DNS解析
[root@chuang ~]# nslookup -q=mx zc.com
Server: 192.168.200.101
Address: 192.168.200.101#53
zc.com mail exchanger = 10 mail.zc.com.
[root@chuang ~]# nslookup dns.zc.com
Server: 192.168.200.101
Address: 192.168.200.101#53
Name: dns.zc.com
Address: 192.168.200.101
[root@chuang ~]#
修改sendmail.mc并重新生成sendmail.cf,修改/etc/mail/sendmail.mc,
[root@chuang ~]# vi /etc/mail/sendmail.mc
......
//第118行
DAEMON_OPTIONS(`Port=smtp,Addr=192.168.200.101, Name=MTA')dnl
//第157行
LOCAL_DOMAIN(`zc.com')dnl
[root@chuang ~]# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
[root@chuang ~]#
//修改access文件设置邮件中继
[root@chuang ~]# vi /etc/mail/access
......
末行添加
zc.com RELAY
mail.zc.com RELAY
192.168.200.0/24 RELAY
------------------------------------------------------------
//将文件写入access.db
//将文件写入access.db
[root@chuang ~]# makemap -r hash /etc/mail/access.db < /etc/mail/access
[root@chuang ~]#
//修改local-host-names文件
[root@chuang ~]# vi /etc/mail/local-host-names
# local-host-names - include all aliases for your machine here.
zc.com
mail.zc.com
-------------------------------------------------------------
//修改host文件
//修改host文件
[root@chuang ~]# vi /etc/hosts
......
//末行添加,(特别注意!!!这里chuang为主机名,默认为localhost,修改主机名见下方)
192.168.200.101 chuang mail.zc.com
-------------------------------------------
//修改主机名(选择性无视)
//修改主机名(选择性无视)
[root@localhost ~]# hostnamectl set-hostname chuang
[root@localhost ~]# bash
[root@chuang ~]#
------------------------------------------
//修改/etc/aliases设置群发别名
//修改/etc/aliases设置群发别名
[root@chuang ~]# vi /etc/aliases
......
//末行添加(自定义,test为用户组,zc、zcpro为后面要新建两个用户名)
test:zc,zcpro
//使用newaliases命令在使用一个在 /etc/aliases 中的档案做使用者名称转换的动作
//使用newaliases命令在使用一个在 /etc/aliases 中的档案做使用者名称转换的动作
[root@chuang ~]# newaliases
/etc/aliases: 77 aliases, longest 10 bytes, 783 bytes total
[root@chuang ~]#
//重启sendmail服务进行生效
[root@chuang ~]# systemctl restart sendmail
[root@chuang ~]#
//创建邮件用户zc、zcpro,此处使用密码均为 123456
[root@chuang ~]# groupadd test
[root@chuang ~]# useradd zc -g test -s /sbin/nologin
[root@chuang ~]# useradd zcpro -g test -s /sbin/nologin
[root@chuang ~]# passwd zc
Changing password for user zc.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@chuang ~]# passwd zcpro
Changing password for user zcpro.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@chuang ~]#
安装telnet,并测试发送Sendmail邮件
[root@chuang ~]# yum -y install telnet
......
-------------------------------------------
//强烈建议以下步骤在记事本中先写好,因为无法退格!!!
键入如下内容:
#helo mail.zc.com
#mail from:"test"root@zc.com //设置邮件主题是test,发件人是root@zc.com
#rcpt to:zcpro@zc.com //设置收件人地址是zcpro@zc.com
#data //data表示开始写邮件的内容。
#This is a test mail. //邮件内容的正文。
#. //这里的点号表示邮件正文结束。
//强烈建议以下步骤在记事本中先写好,因为无法退格!!!
[root@chuang named]# telnet 192.168.200.101 25
Trying 192.168.200.101...
Connected to 192.168.200.101.
Escape character is '^]'.
220 mail.zc.com ESMTP Sendmail 8.14.7/8.14.7; Thu, 20 Jun 2019 02:53:25 -0400
helo mail.zc.com
250 mail.zc.com Hello chuang [192.168.200.101], pleased to meet you
mail from:"test"root@zc.com
250 2.1.0 "test"root@zc.com... Sender ok
rcpt to:zcpro@zc.com
250 2.1.5 zcpro@zc.com... Recipient ok
data
354 Enter mail, end with "." on a line by itself
This is a test mail.
.
250 2.0.0 x5K6rPtX017592 Message accepted for delivery
quit
221 2.0.0 mail.zc.com closing connection
Connection closed by foreign host.
[root@chuang named]#
//检查所传送的电子邮件是否送出或滞留在邮件服务器中
[root@chuang ~]# mailq
/var/spool/mqueue is empty
Total requests: 0
[root@chuang ~]#
//修改Dovecot程序主配置文件
[root@chuang ~]# vi /etc/dovecot/dovecot.conf
//修改第24行,30行,33行,48行
protocols = imap pop3 lmtp //支持的邮局协议,第24行
listen = 192.168.200.101, :: //设置dovecot监听的邮件服务器IP地址,默认为所有地址,第30行。
base_dir = /var/run/dovecot/ //设置存储dovecot运行时数据的目录,第33行。
login_trusted_networks = 192.168.200.0/24 //允许登录的网段地址,0.0.0.0/0为全部允许,第48行
//修改配置邮件的格式与存储路径
[root@chuang ~]# vi /etc/dovecot/conf.d/10-mail.conf
......
第25行
mail_location = mbox:~/mail:INBOX=/var/mail/%u //去掉前面注释,并顶格
/var/mail/文件夹下的文件默认权限为0660,需要修改为0600
[root@chuang ~]# chmod 0600 /var/mail/*
[root@chuang ~]#
systemctl restart dovecot //重启dovecot服务
[root@chuang ~]# systemctl restart dovecot
[root@chuang ~]#
配置邮件客户端并收发邮件
//安装 mailx
[root@chuang ~]# yum -y install mailx
......
编辑mail配置文件
[root@chuang ~]# vi /etc/mail.rc
添加如下内容
set from=zc@zc.com
set smtp=mail.zc.com
set smtp-auth-user=zc@zc.com
set smtp-auth-password=123456
使用mail命令给用户发送邮件
[root@chuang ~]# mail zcpro@zc.com
Subject: hello
test
@@@@@@@
EOT
EOT
[root@chuang ~]# smtp-server: 504 5.3.3 AUTH mechanism LOGIN not available
"/root/dead.letter" 13/286
. . . message not sent.
此处发送失败,仍待解决,如能解决请留言
//使用mail -u 接收邮件
[root@chuang ~]# mail -u zcpro
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/mail/zcpro": 1 message 1 new
>N 1 "test"root@zc.com Thu Jun 20 02:54 11/386
& t 1
Message 1:
From "test"root@zc.com Thu Jun 20 02:54:24 2019
Return-Path: <"test"root@zc.com>
Date: Thu, 20 Jun 2019 02:53:25 -0400
From: "test"root@zc.com
Status: R
This is a test mail.
&
配置Windows邮件客户端并收发邮件
修改windows上网的网卡IPV4的DNS1与虚拟机IP相同,如图所示
//修改配置文件 /etc/dovecot/conf.d/10-auth.conf
去掉disable_plaintext_auth前面#,修改为: disable_plaintext_auth = no
[root@chuang ~]# vi /etc/dovecot/conf.d/10-auth.conf
......
去掉disable_plaintext_auth前面#,修改为: disable_plaintext_auth = no
修改配置文件/etc/dovecot/conf.d/10-ssl.conf,修改: ssl = no
[root@chuang ~]# vi /etc/dovecot/conf.d/10-ssl.conf
......
修改为: ssl = no
//重启dovecot服务:
service dovecot restart
[root@chuang ~]# service dovecot restart
Redirecting to /bin/systemctl restart dovecot.service
[root@chuang ~]#
进入foxmail官网下载foxmail
https://www.foxmail.com/
应用并确定
接收到虚拟机中发出的邮件
我们再来测试以下两个邮箱互相发送邮件
右键单击收件箱,选择收件
收件成功
若两个邮箱都创建完成,仍无法互相发送邮件,且报错信息空白,尝试如下修改:
两个邮箱发送服务器验证都改为:不需要验证
再尝试重新发送