CentOS7.2电子邮件服务器的应用与管理(sendmail)


(注:下文中 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/

 

 

 

 

应用并确定

接收到虚拟机中发出的邮件

我们再来测试以下两个邮箱互相发送邮件

右键单击收件箱,选择收件

收件成功


若两个邮箱都创建完成,仍无法互相发送邮件,且报错信息空白,尝试如下修改:

两个邮箱发送服务器验证都改为:不需要验证

再尝试重新发送


 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值