锄奸队成员 發表於 2019-11-29 11:50:00

DNS 域名系统与邮件服务器

<p></p><div class="toc"><div class="toc-container-header">目录</div><ul><li>DNS 域名系统<ul><li>定义</li><li>域名分类</li><li>解析流程</li><li>DNS分类</li><li>资源记录<ul><li>格式</li><li>资源记录类型</li></ul></li><li>用<code>bind</code>搭建一台<code>DNS</code>服务器<ul><li>安装<code>bind</code></li><li>创建自己的<code>zone</code>文件</li><li>在主配置文件中,增加自己的zone</li><li>检测是否配置成功</li><li>测试配置的结果</li><li>防火墙放行</li><li>在<code>RHEL2</code>上配置并测试</li></ul></li><li>用 unbound搭建一个缓存服务器<ul><li>安装</li><li>更改配置</li><li>防火墙放行</li><li>在<code>RHEL3</code>上将DNS服务器配置成缓存服务器</li></ul></li></ul></li><li>邮件服务器<ul><li>电子邮件架构</li><li>邮件协议<ul><li><ul><li>简单邮件传输协议(SMTP)</li><li>第三版邮局协议(POP3)</li><li>第四版互联网信息访问协议(IMAP4)·</li></ul></li></ul></li><li>电子邮件系统</li><li>搭建邮件系统<ul><li>创建空的<code>Postfix</code>服务器</li><li>配置接收端</li><li>在<code>RHEL1</code>上发送<code>RHEL2</code>查看</li></ul></li><li>配置客户端下载邮件<ul><li>更改<code>RHEL2</code>上的 <code>Postfix</code>配置</li><li>创建一个账号</li><li>配置<code>POP3</code>服务器</li><li>在物理机上打开<code>Foxmail</code>进行配置</li></ul></li></ul></li></ul></div><p></p>
<h1 id="dns-域名系统">DNS 域名系统</h1>
<h2 id="定义">定义</h2>
<p>域名系统是域名和IP地址相互映射的一个分布式数据库,能够是用户更方便的访问互联网。不用去记住能够被机器直接读取的IP。</p>
<h2 id="域名分类">域名分类</h2>
<p>域是分层管理的</p>
<pre><code class="language-markdown"># 根域: [.]
# 顶级域:
按性质:        [.org\.net\.com\.edu\.gov]
按国家:        [.cn\.tw\.hk]
# 普通域
比如: [.baidu]
</code></pre>
<h2 id="解析流程">解析流程</h2>
<p><code>本地DNS缓存</code> -&gt; <code>本地hosts文件</code> -&gt; <code>指定的DNS服务器</code></p>
<p>如果指定的DNS服务器没有找到对应的域名,会返回到客户端,客户端会向上一级DNS服务器继续发送请求。直至查询到或者顶级服务器也没查询到。</p>
<h2 id="dns分类">DNS分类</h2>
<pre><code class="language-markdown">1. 主DNS服务器:存储原始资料
2. 从DNS服务器:自动更新注DNS服务器的数据
3. 缓存服务器:转发来自客户端的请求,但是会缓存查询回来的结果
4. 转发器:不向根域发送请求,而是直接发给其他的服务器,并不缓存结果
</code></pre>
<h2 id="资源记录">资源记录</h2>
<h3 id="格式">格式</h3>
<p><code>域名        生存期        类别                类型                值        </code></p>
<pre><code class="language-markdown">1. 域名:指定这条记录适用于哪个域
2. 生存期:指定该条记录的稳定程度单位秒
3. 类别:互联网信息都是 IN
4. 类型:每个资源记录类型
5. 值:对应的值
</code></pre>
<h3 id="资源记录类型">资源记录类型</h3>
<pre><code class="language-markdown">1. SOA Star of authority 起始授权 必须是第一行 只能有一个
2. A IPV4 address
3. AAAA IPV6 address
4. MX Mail exchange
5. NS Name Server
6. CNAME Canonical name 可以将域名转换,别名
7. PTR 方向解析
...还有很多
</code></pre>
<h2 id="用bind搭建一台dns服务器">用<code>bind</code>搭建一台<code>DNS</code>服务器</h2>
<p>我们在<code>RHEL1</code>上搭建DNS服务器</p>
<h3 id="安装bind">安装<code>bind</code></h3>
<pre><code class="language-bash">yum install bind bind-utils
</code></pre>
<h3 id="创建自己的zone文件">创建自己的<code>zone</code>文件</h3>
<pre><code class="language-bash"># 可以使用如下命令查看 包 bind 影响的文件夹以及文件夹
# rpm -ql bind
# 在 /var/named 文件下创建 node.com.zone
# cat node.com.zone
$TTL 1D # $TTL指令表示一个资源记录在其他DNS服务器
                # $ORIGIN指令表示该zone文件用来描述的域(domain)名称
@        IN        SOA @ admin.qq.com.        (
                                                20191128;serial版本号
                                                1D;refresh 刷新时间,每隔多久去查看版本号
                                                1H;retry 重新刷新时间
                                                1W;expire 过期时间
                                                3H;否定答案缓存时间)# 配置SOA。它定义了一个域的全局特性,必须是出现在zone文件中的第一个资源记录,而且一个zone文件中必须只有一个SOA资源记录。
@        IN NS         server                # 配置NS
server        IN A        192.168.143.10        #配置server地址
control1        A        192.168.143.10        #配置控制接口的域名
control2         A        192.168.143.11        #配置控制接口的域名
control3        A        192.168.143.12        #配置控制接口的域名
net121        A        192.168.140.10                #配置12服务器连接接口的域名
net122        A        192.168.140.11                #配置12服务器连接接口的域名
net231        A        192.168.245.10                #配置23服务器连接接口的域名
net232A        192.168.245.11                #配置23服务器连接接口的域名

</code></pre>
<h3 id="在主配置文件中增加自己的zone">在主配置文件中,增加自己的zone</h3>
<pre><code class="language-bash"># 编辑配置文件 /etc/named.rfc1912.zones 添加如下内容
# tail -4 /etc/named.rfc1912.zones
zone "node.com." IN {
        type master;
        file "node.com.zone"
};
### 这个位置正常些文件名字就可以,如果named启动不了改成绝对路径/etc/named/node.com.zone
# 也可以在 /etc/named.conf 文件中增加
</code></pre>
<h3 id="检测是否配置成功">检测是否配置成功</h3>
<pre><code class="language-bash">#检测是否配置成功
# named-checkzone node.com.node.com.zone
zone node.com/IN: loaded serial 20191128
OK
# 启动named
# systemctl start named
# systemctl enable named
</code></pre>
<h3 id="测试配置的结果">测试配置的结果</h3>
<pre><code class="language-bash"># dig命令检测 dns 解析,
### 没有dig命令 请安装 `bind-utils`
# dig -t A control1.node.com
; &lt;&lt;&gt;&gt; DiG 9.9.4-RedHat-9.9.4-14.el7 &lt;&lt;&gt;&gt; -t A control1.node.com
;; global options: +cmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 61583
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;control1.node.com.                IN        A

;; ANSWER SECTION:
control1.node.com.        86400        IN        A        192.168.143.10

;; AUTHORITY SECTION:
node.com.                86400        IN        NS        server.node.com.

;; ADDITIONAL SECTION:
server.node.com.        86400        IN        A        192.168.143.10

;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Nov 28 13:31:41 CST 2019
;; MSG SIZErcvd: 99
# 直接ping也可以
# ping control1.node.com
PING control1.node.com (192.168.143.10) 56(84) bytes of data.
64 bytes from 192.168.143.10: icmp_seq=1 ttl=64 time=0.027 ms
# nslookup 测试
# nslookup
&gt; control1.node.com
Server:                127.0.0.1
Address:        127.0.0.1#53

Name:        control1.node.com
Address: 192.168.143.10
</code></pre>
<h3 id="防火墙放行">防火墙放行</h3>
<pre><code class="language-bash">firewall-cmd --add-service=dns --permanent
firewall-cmd --add-service=dns
</code></pre>
<h3 id="在rhel2上配置并测试">在<code>RHEL2</code>上配置并测试</h3>
<pre><code class="language-bash"># 增加DNS配置
# tail -1 /etc/resolv.conf
nameserver 192.168.143.10
# 重启网络
# systemctl restart network
# 确认配置还在
# tail -1 /etc/resolv.conf
nameserver 192.168.143.10
### 有时候重启后配置就不在了。是因为/etc/sysconfig/network-script下的链接配置里已经配置了DNS,可以在链接配置了增加
# ping control1.node.com
PING control1.node.com (192.168.143.10) 56(84) bytes of data.
</code></pre>
<h2 id="用-unbound搭建一个缓存服务器">用 unbound搭建一个缓存服务器</h2>
<h3 id="安装">安装</h3>
<pre><code class="language-bash"># yum install -y unbound
# systemctl start unbound
# systemctl enable unbound
</code></pre>
<h3 id="更改配置">更改配置</h3>
<pre><code class="language-bash"># vim /etc/unbound/unbound.conf
# 下面的配置在文件中都能找到,只是需要打开注释
server:
               # whitespace is not necessary, but looks cleaner.
         interface: 0.0.0.0
         acces-control: 0.0.0.0/0 allow
         domain-insecure: "node.com"
         # verbosity number, 0 is least verbose. 1 is default.
         verbosity: 1
forward-zone:
         name: "."
         forward-host: 192.168.143.10
# 检测配置
# unbound-checkconf
unbound-checkconf: warning: . forward-host: "192.168.143.10" is an IP4 address, and when looked up as a host name during use may not resolve.
unbound-checkconf: no errors in /etc/unbound/unbound.conf
# 重启
# systemctl restart unbound
</code></pre>
<h3 id="防火墙放行-1">防火墙放行</h3>
<pre><code class="language-bash"># firewall-cmd --add-service=dns --permanent
# firewall-cmd --add-service=dns
</code></pre>
<h3 id="在rhel3上将dns服务器配置成缓存服务器">在<code>RHEL3</code>上将DNS服务器配置成缓存服务器</h3>
<pre><code class="language-bash"># tail -1 /etc/resolv.conf
nameserver 192.168.143.11
# systemctl restart network

# ping control1.node.com
PING control1.node.com (192.168.143.10) 56(84) bytes of data.
</code></pre>
<p>注: <code>Unbound</code>与 <code>bind</code>都能够搭建主DNS服务器</p>
<h1 id="邮件服务器">邮件服务器</h1>
<h2 id="电子邮件架构">电子邮件架构</h2>
<p>Linux服务器也会发送电子邮件,一般是出于自动用途,或者向管理员报告错误。</p>
<pre><code class="language-bash"># 查看当前邮箱列表,可以看到有一封信
# mail
Heirloom Mail version 12.5 7/5/10.Type ? for help.
"/var/mail/root": 3 messages 1 new 2 unread
    1 user@localhost.localFri Aug 16 19:06 830/62447 " full crash report"
# 我们自己给自己发一封
# mail root
Subject: test
This is test mail!!!
EOT   # 按CTRL+D发送
# 查看
# mail
Heirloom Mail version 12.5 7/5/10.Type ? for help.
"/var/mail/root": 2 messages 1 new
    1 user@localhost.localFri Aug 16 19:06 848/63026 " full crash report"
&gt;N2 root                  Thu Nov 28 18:1018/570   "test"
&amp; 2
Message2:
From root@rhel1.node.comThu Nov 28 18:10:16 2019
Return-Path: &lt;root@rhel1.node.com&gt;
X-Original-To: root
Delivered-To: root@rhel1.node.com
Date: Thu, 28 Nov 2019 18:10:05 +0800
To: root@rhel1.node.com
Subject: test
User-Agent: Heirloom mailx 12.5 7/5/10
Content-Type: text/plain; charset=us-ascii
From: root@rhel1.node.com (root)
Status: R

This is test mail!!!
</code></pre>
<h2 id="邮件协议">邮件协议</h2>
<h4 id="简单邮件传输协议smtp">简单邮件传输协议(SMTP)</h4>
<p>用来发送或中转发出的电子邮件,占用<code>25/tcp</code>端口</p>
<h4 id="第三版邮局协议pop3">第三版邮局协议(POP3)</h4>
<p>用于将服务器上把邮件存储到本地主机,占用<code>110/tcp</code>端口</p>
<h4 id="第四版互联网信息访问协议imap4">第四版互联网信息访问协议(IMAP4)·</h4>
<p>用于在本地追加上访问邮件,占用<code>143/tcp</code>端口</p>
<h2 id="电子邮件系统">电子邮件系统</h2>
<p>单独使用<code>Postfix</code>服务程序不能完成收发邮件的操作。我们需要下面的软件:</p>
<ol>
<li><code>Postfix</code>提供的邮件发送服务<code>SMTP</code></li>
<li><code>Dovercot</code>提供的邮件收取服务,即<code>POP3</code></li>
<li><code>OutlookExpress</code>客户端收发邮件工具</li>
</ol>
<h2 id="搭建邮件系统">搭建邮件系统</h2>
<h3 id="创建空的postfix服务器">创建空的<code>Postfix</code>服务器</h3>
<p>在<code>RHEL1</code>上创建空<code>Postfix</code>,在<code>Redhat</code>系统中已经默认安装了这个服务程序。</p>
<ul>
<li>查看配置文件</li>
</ul>
<pre><code class="language-bash"># 我们只需要配置下面的配置项即可
myhostname                        邮局系统的主机名
mydomain                        邮局系统的域名
myorigin                        从本机寄出邮件的域名名称
inet_interfaces                监听的网卡接口
mydestination                可接受邮件的主机名或域名
mynetworkds                        设置可转发哪些主机的邮件
relay_domains                设置可转发那些域名得邮件
</code></pre>
<ul>
<li>配置<code>etc/postfix/main.cf</code>为空的<code>postfix</code></li>
</ul>
<pre><code class="language-bash"># 不建议直接编辑,使用`postconf`配置
### 配置本机邮件寄出的域名,会将从本机发出去的发件人域重写成配置项
# postconf -e "myorigin=node.com"
### 设置成仅侦听用于发送电子邮件的回环接口
# postconf -e "inet_interfaces=loopback-only"
### 设置指向的邮件服务器
### 此处的control2是上面 dns配置的服务器2的域名
# postconf -e "relayhost="
### 关闭本地电子邮件发送
# postconf -e "local_transport=error:local delivery disabled"
### 本地发送不会接受收件人为本地电子邮件账户的邮件
# postconf -e "mydestination="
### 源自127.0.0.0/8和[::1]/128网络的邮件能够由本地空客户端发送到主机
# postconf -e "mynetworks=127.0.0.0/8 [::1]/128"
# systemctl restart postfix

</code></pre>
<h3 id="配置接收端">配置接收端</h3>
<p>在<code>RHEL2</code>上配置</p>
<pre><code class="language-bash"># postconf -e "inet_interfaces = all"
# postconf -e "mydestination = node.com"
# systemctl restart postfix.service
# firewall-cmd --add-service=smtp --permanent
success
# firewall-cmd --add-service=smtp
</code></pre>
<h3 id="在rhel1上发送rhel2查看">在<code>RHEL1</code>上发送<code>RHEL2</code>查看</h3>
<pre><code class="language-bash"># mail root
Subject: From control1.node.com
I am control1
EOT
# mail
&gt;N5 root                  Thu Nov 28 06:2621/740   "From control1.node.co"
&amp; 5
Message5:
From root@node.comThu Nov 28 06:26:41 2019
Return-Path: &lt;root@node.com&gt;
X-Original-To: root@node.com
Delivered-To: root@node.com
Date: Thu, 28 Nov 2019 22:26:41 +0800
To: root@node.com
Subject: From control1.node.com
User-Agent: Heirloom mailx 12.5 7/5/10
Content-Type: text/plain; charset=us-ascii
From: root@node.com (root)
Status: R

I am control1
</code></pre>
<h2 id="配置客户端下载邮件">配置客户端下载邮件</h2>
<h3 id="更改rhel2上的-postfix配置">更改<code>RHEL2</code>上的 <code>Postfix</code>配置</h3>
<pre><code class="language-bash"># postconf -e "inet_interfaces=all"
# postconf -e "myhostname=control2.node.com"
# postconf -e "mydomain=node.com"
# postconf -e "myorigin=node.com"
# postconf -e "mydestination=node.com"
# systemctl restart postfix
</code></pre>
<h3 id="创建一个账号">创建一个账号</h3>
<pre><code class="language-bash"># useradd test_mail_user
# echo "test_mail_user" |passwd --stdin test_mail_user
Changing password for user test_mail_user.
passwd: all authentication tokens updated successfully.
</code></pre>
<h3 id="配置pop3服务器">配置<code>POP3</code>服务器</h3>
<pre><code class="language-bash"># 安装 dovecot
# yum install -y dovecot
# 修改配置文件
# grep "^[^#]" /etc/dovecot/dovecot.conf
protocols = imap pop3 lmtp
disable_plaintext_auth = no
login_trusted_networks = 0.0.0.0/0
# 配置邮件格式与存储位置
# grep "^mail_location" /etc/dovecot/conf.d/10-mail.conf
mail_location = mbox:~/mail:INBOX=/var/mail/%u
# 创建邮件的存储目录
# su - test_mail_user
$ mkdir -p mail/.imap/INBOX
$ exit
logout
# 重启dovecot服务
# systemctl restart dovecot
# systemctl enable dovecot
ln -s '/usr/lib/systemd/system/dovecot.service' '/etc/systemd/system/multi-user.target.wants/dovecot.service'
# 防火墙放行
# firewall-cmd --add-service=smtp --permanent
success
# firewall-cmd --add-port=110/tcp --permanent
success
# firewall-cmd --reload
success
</code></pre>
<h3 id="在物理机上打开foxmail进行配置">在物理机上打开<code>Foxmail</code>进行配置</h3>
<pre><code class="language-markdown">1. 输入 用户名密码:test_mail_user@node.comtest_mail_user
2. 输入服务器IP两个都是`RHEL2`: 192.168.143.11
</code></pre>
<ul>
<li>在物理机发送一封邮件给<code>root@node.com</code> cc <code>test_mail_user@node.com</code></li>
</ul>
<pre><code class="language-bash"># mail
Heirloom Mail version 12.5 7/5/10.Type ? for help.
"/var/spool/mail/root": 8 messages 4 new 7 unread
    1 kane@localhost.localMon Oct 28 19:1817/723   "*** SECURITY informat"
U2 kane@localhost.localMon Oct 28 19:1917/722   "*** SECURITY informat"
U3 root                  Thu Nov 28 06:2422/742   "from rhel1 teset"
U4 root                  Thu Nov 28 06:2522/721   "11"
&gt;N5 root                  Thu Nov 28 06:2621/740   "From control1.node.co"
N6 root                  Thu Nov 28 06:3421/711   "ttt"
N7 root                  Thu Nov 28 06:3422/711   "12"
N8 test_mail_user@node.Thu Nov 28 19:4649/1965"Test Mail From Window"
&amp; 8
Message8:
From test_mail_user@node.comThu Nov 28 19:46:47 2019
Return-Path: &lt;test_mail_user@node.com&gt;
X-Original-To: root@node.com
Delivered-To: root@node.com
Date: Fri, 29 Nov 2019 11:46:47 +0800
From: "test_mail_user@node.com" &lt;test_mail_user@node.com&gt;
To: root &lt;root@node.com&gt;
Cc: test_mail_user &lt;test_mail_user@node.com&gt;
Subject: Test Mail From Windows
X-Priority: 3
X-Has-Attach: no
X-Mailer: Foxmail 7.2.14.409
Content-Type: multipart/alternative;
        boundary="----=_001_NextPart204586814442_=----"
Status: R

Content-Type: text/plain;
        charset="us-ascii"

Hi root
   
    This is a test mail from Foxmail.



test_mail_user@node.com
</code></pre>
<ul>
<li>在物理机上同样也可以收到这封邮件。</li>
</ul>


</div>
<div id="MySignature" role="contentinfo">
    Stay foolish<br><br>
来源:https://www.cnblogs.com/primadonna/p/11956870.html
頁: [1]
查看完整版本: DNS 域名系统与邮件服务器