电子邮件系统是我们在日常工作、生活中最常用的一个网络服务,后面会结合BIND服务程序提供的DNS域名解析服务来验证客户端主机与服务器之间的邮件收发功能。
电子邮件系统基于邮件协议来完成电子邮件的传输,常见的邮件协议:
简单邮件传输协议(SMTP):用于发送和中转发出的电子邮件,占用服务器的25/TCP端口。
邮局协议版本3(POP3):用于将电子邮件存储到本地主机,占用服务器的110/TCP端口。
Internet消息访问协议版本4(IMAP4):用于在本地主机上访问邮件,占用服务器的143/TCP端口。
配置服务器主机名称
[root@localhost ~]# vim /etc/hostname
[root@localhost ~]# hostname
mail.chuid.com
为电子邮件系统提供域名解析
[root@localhost ~]# yum install bind* -y # 安装bind相关软件
[root@localhost ~]# vim /etc/named.conf # 编辑主配置文件
[root@localhost ~]# vim /etc/named.rfc1912.zones #编辑区域配置文件
[root@localhost ~]# cd /var/named #切换到数据配置文件目录
[root@localhost named]# ls -la named.localhost named.loopback #查看正向和反向解析模板文件的所有者、所属组、权限属性等信息
-rw-r-----. 1 root named 152 6月 21 2007 named.localhost
-rw-r-----. 1 root named 168 12月 15 2009 named.loopback
[root@localhost named]# cp -a named.localhost chuid.com.zone #从/var/named目录中复制named.localhost模板文件做为正向解析文件
[root@localhost named]# vim chuid.com.zone #编辑正向解析文件
[root@localhost named]# cp -a named.loopback chuid.com.arpa #从/var/named目录中复制named.loopback模板文件做为反向解析文件
[root@localhost named]# vim chuid.com.arpa #编辑反向解析文件
[root@localhost named]# systemctl restart named #重启named服务程序
安装Postfix服务程序
[root@localhost ~]# yum install postfix
已加载插件:langpacks, product-id, search-disabled-repos,
: subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
mysql-connectors-community | 2.5 kB 00:00
mysql-tools-community | 2.5 kB 00:00
mysql57-community | 2.5 kB 00:00
yum | 4.1 kB 00:00
软件包 2:postfix-2.10.1-6.el7.x86_64 已安装并且是最新版本
无须任何处理
[root@localhost ~]#
[root@localhost ~]# systemctl disable iptables #禁用iptables防火墙
配置Postfix服务程序
[root@localhost ~]# vim /etc/postfix/main.cf
myhostname变量,用来保存服务器的主机名称
mydomain变量,用来保存邮件域的名称
mydomain变量,用来定义发出邮件的域
定义网卡监听地址,可以指定要使用服务器的哪些IP地址对外提供电子邮件服务
定义可接收邮件的主机名或域名列表,这里可以直接调用前面定义好的myhostname和mydomain变量
创建电子邮件系统的登录账户
[root@localhost ~]# useradd chuid
[root@localhost ~]# echo "123456" | passwd --stdin chuid
更改用户 chuid 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]#
重启Postfix服务程序
[root@localhost ~]# systemctl restart postfix
[root@localhost ~]# systemctl enable postfix
[root@localhost ~]#
配置Dovecot服务程序
Dovecot是一款能够为Linux系统提供IMAP和POP3电子邮件服务的开源服务程序,安全性极高,配置简单,执行速度快,而且占用的服务器硬件资源也较少,因此是一款值得推荐的收件服务程序。
安装Dovecot服务程序软件包
[root@localhost ~]# yum install dovecot
已加载插件:langpacks, product-id, search-disabled-repos,
: subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
正在解决依赖关系
--> 正在检查事务
---> 软件包 dovecot.x86_64.1.2.2.10-5.el7 将被 安装
--> 正在处理依赖关系 libclucene-core.so.1()(64bit),它被软件包 1:dovecot-2.2.10-5.el7.x86_64 需要
--> 正在处理依赖关系 libclucene-shared.so.1()(64bit),它被软件包 1:dovecot-2.2.10-5.el7.x86_64 需要
--> 正在检查事务
---> 软件包 clucene-core.x86_64.0.2.3.3.4-11.el7 将被 安装
--> 解决依赖关系完成
依赖关系解决
=============================================================
Package 架构 版本 源 大小
=============================================================
正在安装:
dovecot x86_64 1:2.2.10-5.el7 yum 3.2 M
为依赖而安装:
clucene-core x86_64 2.3.3.4-11.el7 yum 528 k
事务概要
=============================================================
安装 1 软件包 (+1 依赖软件包)
总下载量:3.7 M
安装大小:12 M
Is this ok [y/d/N]: y
Downloading packages:
-------------------------------------------------------------
总计 30 MB/s | 3.7 MB 00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : clucene-core-2.3.3.4-11.el7.x86_64 1/2
正在安装 : 1:dovecot-2.2.10-5.el7.x86_64 2/2
验证中 : clucene-core-2.3.3.4-11.el7.x86_64 1/2
验证中 : 1:dovecot-2.2.10-5.el7.x86_64 2/2
已安装:
dovecot.x86_64 1:2.2.10-5.el7
作为依赖被安装:
clucene-core.x86_64 0:2.3.3.4-11.el7
完毕!
[root@localhost ~]#
配置Dovecot服务程序的主配置文件
[root@localhost ~]# vim /etc/dovecot/dovecot.conf
启用protocols = imap pop3 lmtp参数,然后在这一行下面添加一行参数,允许用户使用明文进行密码验证
设置允许登录的网段地址,可以在这里限制只有来自于某个网段的用户才能使用电子邮件系统
配置邮件格式与存储路径
[root@localhost ~]# vim /etc/dovecot/conf.d/10-mail.conf
在Dovecot服务程序单独的子配置文件中,定义一个路径,用于指定要将收到的邮件存放到服务器本地的哪个位置。这个路径默认已经定义好了,我们只需要将该配置文件中前面的井号(#)删除即可
切换到配置Postfix服务程序时创建的chuid账户,并在家目录中建立用于保存邮件的目录。重启Dovecot服务程序
[root@localhost ~]# su - chuid
[chuid@localhost ~]$ mkdir -p mail/.imap/INBOX
[chuid@localhost ~]$ exit
登出
[root@localhost ~]# systemctl restart dovecot
[root@localhost ~]# systemctl enable dovecot
[root@localhost ~]#
windows 7 客户端使用电子邮件系统
在windows 7 系统中运行Outlook软件程序
使用非加密的方式进行电子邮件服务验证登录
向其他信箱发送邮件
当使用Outlook软件成功发送邮件后,就可以在电子邮件服务器上使用mail命令查看到新邮件提醒了。如果想查看邮件的完整内容,只需输入收件人姓名前面的编号即可!
[root@localhost ~]#
您在 /var/spool/mail/root 中有邮件
[root@localhost ~]# mail
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/spool/mail/root": 1 message 1 new
>N 1 chuid Mon Jun 29 18:32 94/3071 "Te"
&
Message 1:
From chuid@chuid.com Mon Jun 29 18:32:44 2020
Return-Path: <chuid@chuid.com>
X-Original-To: root@chuid.com
Delivered-To: root@chuid.com
From: "chuid" <chuid@chuid.com>
To: <root@chuid.com>
Subject: Test mail
Date: Mon, 29 Jun 2020 18:32:43 +0800
Content-Type: multipart/alternative;
boundary="----=_NextPart_000_0010_01D64E43.AD877780"
X-Mailer: Microsoft Outlook 16.0
Thread-Index: AdZOAFYaBvJAStlgTr2+KrdvyHuPQA==
Content-Language: zh-cn
Status: R
Content-Type: text/plain;
charset="gb2312"
当你收到这封邮件时,证明我的邮件系统实验已经成功!
&
At EOF
& quit
Held 1 message in /var/spool/mail/root
[root@localhost ~]#
设置用户别名邮箱
用户别名功能是一项简单实用的邮件账户伪装技术,可以用来设置多个虚拟信箱的账户以接受发送的邮件,从而保证自身的邮件地址不被泄露,还可以用来接收自己的多个信箱中的邮件
在邮件发送后登录到服务器,然后尝试以bin账户的身份登录。由于bin账户在Linux系统中是系统账户,默认的Shell终端是/sbin/nologin,因此在以bin账户登录时,系统会提示当前账户不可用。但是,在电子邮件服务器上使用mail命令后,却看到这封原本要发送给bin账户的邮件已经被存放到了root账户的信箱中
[root@localhost ~]#
您在 /var/spool/mail/root 中有新邮件
[root@localhost ~]# su - bin
This account is currently not available.
[root@localhost ~]# mail
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/spool/mail/root": 2 messages 1 new
1 chuid Mon Jun 29 18:32 95/3082 "Te"
>N 2 chuid Mon Jun 29 18:41 93/3011 "你"
&
Message 2:
From chuid@chuid.com Mon Jun 29 18:41:41 2020
Return-Path: <chuid@chuid.com>
X-Original-To: bin@chuid.com
Delivered-To: bin@chuid.com
From: "chuid" <chuid@chuid.com>
To: <bin@chuid.com>
Subject: 你好,我是用户chuid
Date: Mon, 29 Jun 2020 18:41:39 +0800
Content-Type: multipart/alternative;
boundary="----=_NextPart_000_001D_01D64E44.ED47D9E0"
X-Mailer: Microsoft Outlook 16.0
Thread-Index: AdZOAdOcXkF6SIsWSRy3eZUVsyKL9g==
Content-Language: zh-cn
Status: R
Content-Type: text/plain;
charset="gb2312"
这是一封发给用户bin的文件!
& quit
Held 2 messages in /var/spool/mail/root
[root@localhost ~]#
在aliases邮件别名服务的配置文件中可以看到,里面定义了大量的用户别名,这些用户别名大多数是Linux系统本地的系统账户,而在冒号(:)间隔符后面的root账户则是用来接收这些账户邮件的人。用户别名可以是Linux系统内的本地用户,也可以是完全虚构的用户名字
[root@localhost ~]# cat /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
sync: root
shutdown: root
halt: root
mail: root
news: root
uucp: root
operator: root
games: root
gopher: root
ftp: root
nobody: root
radiusd: root
nut: root
dbus: root
vcsa: root
canna: root
wnn: root
rpm: root
nscd: root
pcap: root
apache: root
webalizer: root
dovecot: root
fax: root
quagga: root
radvd: root
pvm: root
amandabackup: root
privoxy: root
ident: root
named: root
xfs: root
gdm: root
mailnull: root
postgres: root
sshd: root
smmsp: root
postfix: root
netdump: root
ldap: root
squid: root
ntp: root
mysql: root
desktop: root
rpcuser: root
rpc: root
nfsnobody: root
ingres: root
system: root
toor: root
manager: root
dumper: root
abuse: root
newsadm: news
newsadmin: news
usenet: news
ftpadm: ftp
ftpadmin: ftp
ftp-adm: ftp
ftp-admin: ftp
www: webmaster
webmaster: root
noc: root
security: root
hostmaster: root
info: postmaster
marketing: postmaster
sales: postmaster
support: postmaster
# trap decode to catch security attacks
decode: root
# Person who should get root's mail
#root: marc
[root@localhost ~]#
aliases邮件别名服务的配置文件是专门用来定义用户别名与邮件接收人的映射。除了使用本地系统中系统账户的名称外,我们还可以自行定义一些别名来接收邮件,而真正接收该账户邮件的应该是root账户。