一、筑基期之邮件服务简介

邮件服务通过以下几个协议来实现
简单邮件传输协议(SMTP),用来发送或中转发出的电子邮件,占用tcp 25端口。
邮局协议 第三版(POP3),用于把服务器上的邮件存储到本地主机,占用tcp 110端口。
互联网信息访问协议 第四版(IMAP4),用于在本地主机上访问邮件,占用tcp 143端口。
了解了三种协议,现在再来看看邮件服务的基本概念
邮件传输:MT 邮件传输代理:MTA
邮件投递:MD 邮件投递代理:MDA
邮件用户:MU 邮件用户代理:MUA
在一台邮件服务器上,用户要写一封邮件,是通过MUA(邮件用户代理)来写邮件的;写好邮件后将邮件提交本地SMTPD服务(MTA);SMTPD服务对邮件进行分类,本地的邮件直接通过lmtp(本地邮件传输协议)放在本地;需要远程发送的邮件通过smtp客户端发送远程SMTP主机的服务端;远程SMTPD将邮件通过MDA发送到本地邮局,接收方通过MUA将邮件接收到自己的家目录

邮件服务的修真之旅_第1张图片

实现SMTP协议使用postfix,实现pop3和imap4协议使用dovecot,同时部署用于实现域名解析的bind服务器

邮件服务的修真之旅_第2张图片

二、开光期之部署named服务

2.1、环境准备

关闭防火墙

systemctl stop firewalld.service 

2.2、配置bind服务以提供域名解析

模拟内网环境:使用系统光盘作yum源

2.2.1、挂载镜像至/media目录下

mkdir /media/cdrom
mount /dev/cdrom /media/cdrom

2.2.2、启用c7-media源

yum-config-manager --enable c7-media

2.2.3、使用c7-media源安装bind

yum -y install bind bind-libs bind-libs-lite bind-license bind-utils

2.2.4、配置bind

备份配置文件:cp /etc/named.conf{,.bak}
修改全局配置中的监听地址,加上本机可与外网通信的地址

options {
        listen-on port 53 { any; };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { any; };
        recursion yes;
    dnssec-enable yes;
dnssec-validation yes;
};

2.2.5、配置bind解析邮件服务

添加正反向区域(根据实际情况配置)
vim /etc/named.rfc1912.zones

zone "zhongdianjizhi.com" IN {
        type master;
        file "zhongdianjizhi.com.zone";
        allow-update { none; };
};
zone "118.168.192.in-addr.arpa" {
        type master;
        file "zhongdianjizhi.com.local";
        allow-update { none; };
};

定义区域解析库文件(配置A记录与MX记录)
cd /var/named

cp -p named.localhost zhongdianjizhi.com.zone
cp -p named.localhost zhongdianjizhi.com.local 

zhongdianjizhi.com.zone

$TTL 1D
@       IN SOA  @ zhongdianjizhi.com. (
                                        201901  ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       192.168.118.150
        MX 10   mail.zhongdianjizhi.com.
mail    A       192.168.118.150
mail    AAAA    fe80::3f32:be25:88e8:79b1

zhongdianjizhi.com.local

$TTL 1D
@       IN SOA  @ zhongdianjizhi.com. (
                                        201901  ; serial 
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       192.168.118.150
        MX 10   mail.zhongdianjizhi.com.
150     PTR     mail.zhongdianjizhi.com.
        AAAA    fe80::3f32:be25:88e8:79b1

2.2.6、检查配置文件是否有语法错误

named-checkzone "zhongdianjizhi.com.zone" /var/named/zhongdianjizhi.com.zone
named-checkzone "118.168.192.in-addr.arpa" /var/named/zhongdianjizhi.com.local 

2.2.7、修改主机名,指定本机DNS

hostnamectl set-hostname mail.zhongdianjizhi.com

将本机dns解析指向本机dns服务器

vim /etc/resolv.conf 
nameserver 192.168.118.150

2.2.8、启动named服务(bind是包名,服务名为named)

systemctl start named
systemctl enable named

2.2.9、测试解析

dig -t A mail.zhongdianjizhi.com @192.168.118.150
dig -x 192.168.118.150 @192.168.118.150

三、融合期之postfix部署

在centos7系统中postfix已经安装,版本为2.10.1

3.1、配置postfix

备份
cp /etc/postfix/main.cf{,.bak}
配置文件main.cf

#第76行 修改邮局主机名
myhostname = mail.zhongdianjizhi.com
#第83行 修改邮局域名
mydomain = zhongdianjizhi.com
#第99行 修改寄出邮件域名
myorigin = $mydomain
#第114行 修改监听所有网卡
inet_interfaces = all
#第119行 开启同时使用ipv4和ipv6协议
inet_protocols = all
#第164行 修改可接收邮件的主机名和域名
mydestination = $myhostname, $mydomain
mynetworks = 192.168.118.0/24, 127.0.0.0/8
home_mailbox = Maildir/

3.2、编辑/etc/hosts文件

vim /etc/hosts

192.168.118.150 [email protected]

3.3、启动服务,并检查MTA是否运行

systemctl start postfix
systemctl enable postfix
alternatives --display mta

3.4、创建虚拟用户

useradd jym 
echo '123456' |passwd --stdin jym
useradd boss
echo '123456' |passwd --stdin boss

3.5、测试postfix发邮件

[root@mail ~]# telnet mail.zhongdianjizhi.com 25
Trying 192.168.118.150...
Connected to mail.zhongdianjizhi.com.
Escape character is '^]'.
220 mail.zhongdianjizhi.com ESMTP Postfix
mail from:[email protected]
250 2.1.0 Ok
rcpt to:[email protected]
250 2.1.5 Ok
data
354 End data with .
this is test mail.
.
250 2.0.0 Ok: queued as 43A6B2033E0D
quit
221 2.0.0 Bye
Connection closed by foreign host.

四、金丹期之dovecot部署

4.1、安装

yum install dovecot

4.2、配置

备份

cp /etc/dovecot/dovecot.conf{,.bak}

配置dovecot.conf

sed -i '24s/^#//g' /etc/dovecot/dovecot.conf
sed -i '48s/#login_trusted_networks =/login_trusted_networks = 192.168.118.150\/24/g' 

修改子配置文件10-mail.conf

sed -i '24s/^#//g' /etc/dovecot/conf.d/10-mail.conf

4.3、启动

systemctl start dovecot
systemctl enable dovecot

4.4、测试dovecot收邮件

[root@mail named]# telnet mail.zhongdianjizhi.com 110
Trying 192.168.118.150...
Connected to mail.zhongdianjizhi.com.
Escape character is '^]'.
+OK [XCLIENT] Dovecot ready.
user jym
+OK
pass 123456
+OK Logged in.
list
+OK 6 messages:
1 559
2 559
3 559
4 2564
5 2564
6 469
.
retr 6
+OK 469 octets
Return-Path: 
X-Original-To: [email protected]
Delivered-To: [email protected]
Received: from unknown (unknown [192.168.118.150])
    by mail.zhongdianjizhi.com (Postfix) with SMTP id 86CAC2033DFF
    for ; Sun, 30 Jun 2019 10:20:50 -0400 (EDT)
Message-Id: <[email protected]>
Date: Sun, 30 Jun 2019 10:20:50 -0400 (EDT)
From: [email protected]

this is test mail.

.

五、元婴期之继续修行

本次部署的邮件服务适用于内部网络,邮件服务用于消息通知,发件与收件由脚本完成,用于连接互联网的邮件服务建议配置webmail(Extmail与Extman)来收发件,win平台使用LDAP来管理用户认证,linux平台使用Courier-authlib与MySQL来管理用户认证,同时务必关闭开放式中继。

参考文章:

https://blog.51cto.com/12227558/2074095
https://blog.51cto.com/13728740/2141927