3. 案例实施
3.1 基础配置
(1)修改 mail 节点与 dns 节点主机名
(2)为了方便测试关闭防火墙与安全策略
(3)测试本地 yum 源
3.2 安装与配置 DNS 服务器
(1)使用如下命令安装 DNS 服务器
# yum -y install bind-chroot bind-utils
(2)启动 DNS 服务
# systemctl start named
(3)查看端口是否启动
# netstat -lntp | grep named
(4)修改主服务器 DNS 的配置文件 named.conf(记住修改配置每个分号都不能少)
域名解析服务 Bind 的程序名称叫做 named,服务程序的配置文件如下:
数据配置文件目录 /var/named
主配置文件 /etc/named.conf
区域配置文件 /etc/named.rfc1912.zones
修改 named.conf 以下配置:(从服务器也是一样!)
listen-on port 53 { any; }; // 监听所有的 53 号端口,此处可以根据需要设置需要监听的 IP
also-notify { any;}; // 允许所有的查询
(5)配置正向解析与反向解析
什么叫正向解析和反向解析:
正向解析:根据主机名(域名)查找对应的 IP 地址。
反向解析:根据 IP 地址查找对应的主机名(域名)。( 反向解析的作用是将用户提交的 IP 地址
解析为对应的域名信息,它一般用于对某个 IP 地址上绑定的所有域名进行整体屏蔽,屏蔽
由某些域名发送的垃圾邮件。也可以判断某虚拟主机上运行了多少个网站。)
正向区域:
1
创建转发域:
拷贝模板文件 named.localhost 到 testmail.com.zone,示例代码如下:
# cp -rf /var/named/named.localhost /var/named/testmail.com.zone
2
编辑 testmail.com.zone 文件,示例代码如下:
# vi testmail.com.zone
3
赋予 test.com.zon 所有权限,命令如下:
# chmod 777 testmail.com.zone
4
修改区域配置文件/etc/named.rfc1912.zones
# vi /etc/named.rfc1912.zones
#正向解析
zone "testmail.com" IN {
// 定义 zone 文件,这里是定义的根域的文件位置
type master;
#主 dns 解析
file "testmail.com.zone";
#定义区域解析库文件名字
};
(type:master 指的是主 dns 解析、slave 指的是从 dns 解析、hint 指的是根域名解析(根提
示域)、forward 指的是转发,转发不使用 file;
file :定义区域解析库文件名字(位置默认在/var/named 下面),file 的前缀通常和 zone 的
名字通常对应起来,然后加一个.zone 的后缀。)
5
检查配置,如下所示:
# named-checkzone testmail.com testmail.com.zone
//zone 文件检测工具
zone testmail.com/IN: loaded serial 0
OK
# named-checkconf /etc/named.conf
//named.conf 文件检查工具
反向区域:
6
修改区域配置文件/etc/named.rfc1912.zones
#反向解析
zone "100.168.192.in-addr.arpa" IN {
//区域名称:是网络地址的反写.in-addr.arpa.
type master;
file "60.117.168.192.in-addr.local";
};
7
配置 60.117.168.192.in-addr.local:(不需要 MX、A、AAAA,要有 NS 记录,以 PTR
记录为主。)
# vi 60.117.168.192.in-addr.local
8.检查配置,如下所示:
9
重启生效配置:
10
添加/etc/resolv.conf 域名服务器 IP
# vi /etc/resolv.conf
11
测试 DNS 解析是否正常:
# ping www.testmail.com
3.3 配置主从 DNS 服务
1.配置从节点服务器
yum -y install bind-chroot bind-utils
2.修改配置 named.conf(与主服务器一致)
listen-on port 53 { any; }; // 监听所有的 53 号端口,此处可以根据需要设置需要监听的 IP
also-notify { any;}; // 允许所有的查询
3.修改区配置文件:
vi /etc/named.rfc1912.zones
zone "testmail.com" IN {
type slave;
//master 为主服务;slave 为从服务;
file "slaves/slavertestmail.com.zone";
masters {192.168.100.61;};
//指定主 dns 服务器的 IP
};
zone "117.168.192.in-addr.arpa" IN {
type slave;
file "slaves/60.117.168.192.in-addr.local";
masters {192.168.117.61;};
};
4.修改/etc/reslove.conf
vi /etc/resolv.conf
重启服务:
systemctl restart named
测试:
主服务器那边关闭 named 服务
systemctl stop named
测试 dns 解析结果:
*显示解析到的服务器目前的位置在 192.168.117.60
3.4 DNS 检测工具
1.nslookup 命令是常用域名查询工具,就是查 DNS 信息用的命令。
一般格式:
nslookup [-option] [name | -] [server]
参数说明:
option:表示一些选项。这些选项可以通过 set 命令设置修改。
name:表示查询的域名。
server:可以指定 DNS 主机 IP。
set 命令说明:
set all:打印当前的选项值。
set calss=value:设置查询的类型,一般情况下为 Internet。
set debug:设置调试模式。
set d2:设置详细调试模式。
set domin=name:设置默认的域名。
set search:
set port=value:设置 DNS 端口。
set querytype=value:改变查询的信息的类型。默认的类型为 A 纪录。
set type=value:和 set querytype 一样。
set recurse:设置查询类型为递归;若为 set norecurse,查询类型为跌代;缺省为前者。set retry=number:设置重试的次数。
set timeout=number:设置等待应答的限制时间(单位为秒),超出即为超时,如果还可以
重试,就会将长超时值加倍,重新查询。
set vc:通过 tcp 方式查询。
具体说明可以查看 man 手册。
格式:nslookup -nameserver/ip。例如:
[root@controller ~]# nslookup 192.168.117.60
60.117.168.192.in-addr.arpa
name = dns.testmail.com.
60.117.168.192.in-addr.arpa
name = mail.testmail.com.
2.dig 命令主要用来从 dns 域名服务器查询主机地址信息,是安装 bind 自带的工具。
一般格式:
dig [@global-server] [domain] [q-type] [q-class] {q-opt} {d-opt}
参数说明:
@global-server:默认是以/etc/resolv.conf 作为 DNS 查询的主机,这里可以填入其它 DNS 主
机 IP。
domain:要查询的域名。
q-type:查询记录的类型,例如 a、any、mx、ns、soa、hinfo、axfr、txt 等,默认查询 a。
q-class:查询的类别,相当于 nslookup 中的 set class。默认值为 in(Internet)。
q-opt:查询选项,可以有好几种方式,比如:-f file 为通过批处理文件解析多个地址;-p port
指定另一个端口(缺省的 DNS 端口为 53),等等。
d-opt:dig 特有的选项。使用时要在参数前加上一个“+”号。
d-opt 常用选项:
+vc:使用 TCP 协议查询。
+time=###:设置超时时间。
+trace:从根域开始跟踪查询结果。
dig nameserver/IP 例如:
[root@controller ~]# dig dns.testmail.comdig 命令默认的输出信息比较丰富,大概可以分为 5 个部分。
第一部分显示 dig 命令的版本和输入的参数。
第二部分显示服务返回的一些技术详情,比较重要的是 status。如果 status 的值为
NOERROR 则说明本次查询成功结束。
第三部分中的 "QUESTION SECTION" 显示我们要查询的域名。
第四部分的 "ANSWER SECTION" 是查询到的结果。
第五部分则是本次查询的一些统计信息,比如用了多长时间,查询了哪个 DNS 服务器,
在什么时间进行的查询等等。
熟悉常见 DNS 记录的类型:
3.host 查询
hosts 文件包含了 IP 地址和主机名之间的映射,还包括主机名的别名。在没有域名服务
器的情况下,系统上的所有网络程序都通过查询该文件来解析对应于某个主机名的 IP 地址。
通常可以将常用的域名和 IP 地址映射加入到 hosts 文件中,实现快速访问。
语法 host [ 选项] name [server]
选项列表
选项 说明
-a 查询所有的信息
-c 设置查询类型
-C 查询完整的 SOA 记录
-d | -v 显示详细过程
-l 列表模式
-t 选择查询类型:CNAME NS SOA SIG KEY AXFR
-w 永久等待-W 设置等待超时
例如:
[root@controller ~]# host 192.168.117.60
60.117.168.192.in-addr.arpa domain name pointer mail.testmail.com.
60.117.168.192.in-addr.arpa domain name pointer dns.testmail.com.
3.5 部署安装 postfix 并配置
1.centos7 版本默认安装 postfix,检测是否安装 postfix:
rpm -q postfix
如果没有安装:yum -y install postfix
2.检查 postfix 是否支持 cyrus dovecot 功能:
# postconf -a
myhostname = mail.testmail.com //本机主机名
mydomain = testmail.com
//服务器域名
myorigin = $mydomain
//初始域名
mail_owner = postfix
inet_interfaces = all
//监听接口
inet_protocols = all
//监听网络版本
mydestination = $myhostname, localhost.$mydomain, localhost
//目标域
unknown_local_recipient_reject_code = 550
mynetworks = 192.168.117.0/24, 127.0.0.0/8
//修改可接收邮件的主机名和域名,可被中继
的主机 192.168.117.0 为我自己定义的网段
home_mailbox = Maildir/
//邮件目录,在用户家目录下
mynetworks_style = host
//指定信任网段类型
relay_domains = $mydestination //指定允许中转邮件的域名
4.检查配置文件是否有语法错误
# postfix check //没有输出错误,证明配置文件没有问题
其他 postfix 运维命令:
newaliases (重建别名数据库)
postalias /etc/postfix/aliases (创建或查询别名数据库)
postcat (显示队列文件内容)
postconf (修改 main.cf 配置文档 )
postqueue (査看 postfix 队列)
postsuper (管理员管理 postfix 队列)
postmap (创建查询表的 DB 数据库或查询查询表内容)5.重启服务:
systemctl restart postfix
5.检测服务进程以及端口是否正常:
3.6 邮件简单外发测试
1.邮件服务器简单发信测试
Postfix 可以调用本地系统的账户和密码,因此在本地系统创建常规账户即可。
安装 Telnet 服务
yum -y install telnet
测试发信:
# telnet mail.testmail.com 25
//远程登录 25 端口,如报错连接不上,重启 postfix
Trying 192.168.117.60...
Connected to mail.testmail.com.
Escape character is ‘^]‘.
220 mail.testmail.com ESMTP Postfix
mail from:zxa@testmail.com
//发件人
250 2.1.0 Ok
rcpt to:1187xxxx@qq.com
//外发给 QQ 收件人
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
zzzzz
.
250 2.0.0 Ok: queued as 7AF443994AFA
quit
221 2.0.0 Bye
Connection closed by foreign host.
2.查询发信结果:
3.邮件传输的过程:
(1)客户机调用用户代理来编辑要发送的邮件。用户代理用 SMTP 将邮件传送给发送端邮
件服务器
(2)发送端邮件服务器将邮件放入邮件缓存队列中,等待发送。
(3)SMTP 按照 C/S 方式工作。运行在发送端邮件服务器的 SMTP 客户进程,发现在邮件缓
存中有待发送的邮件,就向运行在接收端邮件服务器的 SMTP 服务器进程发起 TCP 连接的建
立
(4)当 TCP 连接建立后,SMTP 客户进程开始向远程的 SMTP 服务器发送邮件。如果有多个
邮件在邮件缓存中,则 SMTP 客户一一将它们发送到远程的 SMTP 服务器。当所有的待发送
邮件发完了,SMTP 就关闭所建立的 TCP 连接
(5)运行在接收端邮件服务器中的 SMTP 服务器进程收到邮件后,将邮件放入收信人的用
户邮箱中,等待收信人在他方便时进行读取
(6)收信人调用用户代理,使用 POP3(或 IMAP)协议将自己的邮件从接收端邮件服务器
的用户邮箱中取回
原文:https://www.cnblogs.com/ljb1187418273/p/14368121.html