RHCE-Day15-Email
1.电子邮件系统
电子邮件系统基于邮件协议来完成电子邮件的传输,常见的邮件协议有下面这些。
简单邮件传输协议(Simple Mail Transfer Protocol,SMTP):用于发送和中转发出的电子邮件,占用服务器的25/TCP端口。
邮局协议版本3(Post Office Protocol 3):用于将电子邮件存储到本地主机,占用服务器的110/TCP端口。
Internet消息访问协议版本4(Internet Message Access Protocol 4):用于在本地主机上访问邮件,占用服务器的143/TCP端口。
大家在生产环境中部署企业级的电子邮件系统时,有4个注意事项请留意。
- 添加反垃圾与反病毒模块:它能够很有效地阻止垃圾邮件或病毒邮件对企业信箱的干扰。
- 对邮件加密:可有效保护邮件内容不被黑客盗取和篡改。
- 添加邮件监控审核模块:可有效地监控企业全体员工的邮件中是否有敏感词、是否有透露企业资料等违规行为。
- 保障稳定性:电子邮件系统的稳定性至关重要,运维人员应做到保证电子邮件系统的稳定运行,并及时做好防范分布式拒绝服务(Distributed Denial of Service,DDoS)攻击的准备。
2.部署基础的电子邮件系统
电子邮件系统的工作流程
需要先部署bind服务程序,为电子邮件服务器和客户端提供DNS域名解析服务。
第1步:配置服务器主机名称,需要保证服务器主机名称与发信域名保持一致:
[root@linuxprobe ~]# vim /etc/hostname
mail.linuxprobe.com
[root@linuxprobe ~]# hostname
mail.linuxprobe.com
第2步:清空iptables防火墙默认策略,并保存策略状态,避免因防火墙中默认存在的策略阻止了客户端DNS解析域名及收发邮件:
[root@localhost ~]# iptables -F
[root@localhost ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
第3步:为电子邮件系统提供域名解析。
[root@linuxprobe ~]# cat /etc/named.conf
10 options {
11 listen-on port 53 { any; };
12 listen-on-v6 port 53 { ::1; };
13 directory "/var/named";
14 dump-file "/var/named/data/cache_dump.db";
15 statistics-file "/var/named/data/named_stats.txt";
16 memstatistics-file "/var/named/data/named_mem_stats.txt";
17 allow-query { any; };
18
………………省略部分输出信息………………
[root@linuxprobe ~]# cat /etc/named.rfc1912.zones
zone "linuxprobe.com" IN {
type master;
file "linuxprobe.com.zone";
allow-update {none;};
};
[root@linuxprobe ~]# cat /var/named/linuxprobe.com.zone
$TTL 1D | ||||
---|---|---|---|---|
@ | IN SOA | linuxprobe.com. | root.linuxprobe.com. | ( |
0;serial | ||||
1D;refresh | ||||
1H;retry | ||||
1W;expire | ||||
3H);minimum | ||||
NS | ns.linuxprobe.com. | |||
ns | IN A | 192.168.10.10 | ||
@ | IN MX 10 | mail.linuxprobe.com. | ||
IN A | 192.168.10.10 |
[root@linuxprobe ~]# systemctl restart named
[root@linuxprobe ~]# systemctl enable named
ln -s '/usr/lib/systemd/system/named.service'
'/etc/systemd/system/multi-user.target.wants/named.service'
配置Postfix服务程序
Postfix服务程序的邮件收发能力强于Sendmail服务,而且能自动增加、减少进程的数量来保证电子邮件系统的高性能与稳定性。Postfix服务程序由许多小模块组成,每个小模块都可以完成特定的功能,因此可在生产工作环境中根据需求灵活搭配它们。
第1步:安装Postfix服务程序。
[root@linuxprobe ~]# yum install postfix
第2步:配置Postfix服务程序
Postfix服务程序主配置文件中的重要参数
参数 | 作用 |
---|---|
myhostname | 邮局系统的主机名 |
mydomain | 邮局系统的域名 |
myorigin | 从本机发出邮件的域名名称 |
inet_interfaces | 监听的网卡接口 |
mydestination | 可接收邮件的主机名或域名 |
mynetworks | 设置可转发哪些主机的邮件 |
relay_domains | 设置可转发哪些网域的邮件 |
在第76行定义一个名为myhostname的变量,用来保存服务器的主机名称
在第83行定义一个名为mydomain的变量,用来保存邮件域的名称
在第99行调用前面的mydomain变量,用来定义发出邮件的域。
在第116行定义网卡监听地址。可以指定要使用服务器的哪些IP地址对外提供电子邮件服务;也可以干脆写成all,代表所有IP地址都能提供电子邮件服务
在第164行定义可接收邮件的主机名或域名列表
[root@linuxprobe ~]# vim /etc/postfix/main.cf
76 myhostname = mail.linuxprobe.com
83 mydomain = linuxprobe.com
99 myorigin = $mydomain
116 inet_interfaces = all
164 mydestination = $myhostname , $mydomain
第3步:创建电子邮件系统的登录账户。
Postfix与vsftpd服务程序一样,都可以调用本地系统的账户和密码,因此在本地系统创建常规账户即可。
[root@linuxprobe ~]# useradd boss
[root@linuxprobe ~]# echo "linuxprobe" | passwd --stdin boss
Changing password for user boss. passwd: all authentication tokens updated successfully.
[root@linuxprobe ~]# systemctl restart postfix
[root@linuxprobe ~]# systemctl enable postfix
ln -s '/usr/lib/systemd/system/postfix.service' '/etc/systemd/system/multi-user.target.wants/postfix.service'
配置Dovecot服务程序
Dovecot是一款能够为Linux系统提供IMAP和POP3电子邮件服务的开源服务程序,安全性极高,配置简单,执行速度快,而且占用的服务器硬件资源也较少,因此是一款值得推荐的收件服务程序。
第1步:安装Dovecot服务程序软件包。
[root@linuxprobe ~]# yum install dovecot
第2步:配置部署Dovecot服务程序。
第24行,把Dovecot服务程序支持的电子邮件协议修改为imap、pop3和lmtp。
在这一行下面添加一行参数,允许用户使用明文进行密码验证。
##Dovecot服务程序默认强制用户使用加密方式进行登录
第48行,设置允许登录的网段地址
[root@linuxprobe ~]# vim /etc/dovecot/dovecot.conf
………………省略部分输出信息………………
23 # Protocols we want to be serving.
24 protocols = imap pop3 lmtp
25 disable_plaintext_auth = no
48 login_trusted_networks = 192.168.10.0/24
第3步:配置邮件格式与存储路径。
在Dovecot服务程序单独的子配置文件中,定义一个路径,用于指定要将收到的邮件存放到服务器本地的哪个位置。
[root@linuxprobe ~]# vim /etc/dovecot/conf.d/10-mail.conf
23 # mail_location = maildir:~/Maildir
24 mail_location = mbox:~/mail:INBOX=/var/mail/%u
………………省略部分输出信息………………
切换到配置Postfix服务程序时创建的boss账户,并在家目录中建立用于保存邮件的目录。
[root@linuxprobe ~]# su - boss
Last login: Sat Aug 15 16:15:58 CST 2017 on pts/1
[boss@mail ~]$ mkdir -p mail/.imap/INBOX
[boss@mail ~]$ exit
[root@linuxprobe ~]# systemctl restart dovecot
[root@linuxprobe ~]# systemctl enable dovecot
可以在电子邮件服务器上使用mail查看到新邮件提醒了。如果想查看邮件的完整内容,只需输入收件人姓名前面的编号即可。
[root@linuxprobe ~]# mail
Heirloom Mail version 12.5 7/5/10.Type ? for help.
"/var/mail/root": 3 messages 3 unread >
U 1 user@localhost.com Fri Jul 10 09:58 1631/123113 "[abrt] full crash r"
U 2 Anacron Sat Aug 15 13:33 18/624 "Anacron job 'cron.dai"
U 3 boss Sat Aug 15 19:02 118/3604 "Hello~"
&> 3
Message 3:
From boss@linuxprobe.com Sat Aug 15 19:02:06 2017
Return-Path:
X-Original-To: root@linuxprobe.com
Delivered-To: root@linuxprobe.com
From: "boss"
To:
Subject: Hello~
Date: Sat, 15 Aug 2017 19:02:06 +0800
Content-Type: text/plain; charset="gb2312"
………………省略部分输出信息………………
当您收到这封邮件时,证明我的邮局系统实验已经成功!
> quit
Held 3 messages in /var/mail/root
3.设置用户别名邮箱
用户别名功能是一项简单实用的邮件账户伪装技术,可以用来设置多个虚拟信箱的账户以接受发送的邮件,从而保证自身的邮件地址不被泄露,还可以用来接收自己的多个信箱中的邮件。
在aliases邮件别名服务的配置文件中可以看到,里面定义了大量的用户别名,这些用户别名大多数是Linux系统本地的系统账户,而在冒号(:)间隔符后面的root账户则是用来接收这些账户邮件的人。用户别名可以是Linux系统内的本地用户,也可以是完全虚构的用户名字。
[root@linuxprobe ~]# 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
aliases邮件别名服务的配置文件是专门用来定义用户别名与邮件接收人的映射。
除了使用本地系统中系统账户的名称外,我们还可以自行定义一些别名来接收邮件。
[root@linuxprobe ~]# 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.
xxoo: root
bin: root
daemon: root
adm: root
lp: root
………………省略部分输出信息………………
需要再执行一下newaliases命令,其目的是让新的用户别名配置文件立即生效。