《云计算》lunix邮件协议案例

  1. 准备邮件案例环境
     问题
    本案例要求为邮件服务准备案例环境,已经明确相关信息如下:
  1. 服务器的主机名、IP地址:mail.tedu.cn、192.168.4.5
  2. 邮件域:@tedu.cn
  3. 邮件帐号:服务器的本地系统用户
  4. 发信服务软件:postfix
  5. 收信服务软件:dovecot
    因此,除了主机名、IP地址等基本设置以外,还需要提供DNS解析。为了简单起见,直接在邮件服务器本机搭建DNS服务,需要完成的配置任务如下:
  6. 将主机名设为mail.tedu.cn、IP地址设为192.168.4.5/24
  7. 搭建DNS服务,为tedu.cn 区域设置正确的邮件服务器记录
     方案
    在电子邮件通信中,收件人/发件人的地址表示为“用户名@域名”,比如:nick@tedu.cn、234567@qq.com等等。要向这些地址发送邮件,首先就得知道目标区域的邮件服务器在哪里,在此过程中DNS查询起到了关键的作用:
  8. 解析目标邮件域的MX记录,找到邮件服务器的域名
  9. 根据前一步找到的域名,进一步解析获得该邮件服务器的IP地址
    而在目标区域的DNS服务器上,为了能正确响应上述查询,需要修改解析记录文件,针对邮件服务器相应的MX和A记录,格式参考如下:
    @ MX 10 邮件服务器的域名.
    邮件服务器的域名. A 邮件服务器的IP地址
    可使用两台RHEL6虚拟机,其中一台作为邮件兼DNS服务器(192.168.4.5)、另外一台作为测试用的Linux客户机(192.168.4.205),CentOS真机、邮件服务器本机也可以作为测试客户机,如图-1所示。

图-1在这里插入图片描述
 步骤
实现此案例需要按照如下步骤进行。
步骤一:配置主机名、IP地址
1)修改主机名配置文件,并启用新主机名
[root@svr5 ~]# vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=mail.tedu.cn //改配置

[root@svr5 ~]# hostname mail.tedu.cn //改名
[root@svr5 ~]# bash //新开Shell环境
[root@mail ~]# //确认效果
注意:实际上修改主机名并不是必须的操作,只要通过后续的DNS服务能够将邮件服务器的域名mail.tedu.cn解析为正确的IP地址(192.168.4.5),就能够满足邮件通信要求。
2)修改IP地址配置
[root@mail ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.4.5 //修改IP地址
PREFIX=24

[root@mail ~]# service network restart //重启network服务
… …
[root@mail ~]# ifconfig eth0 //确认修改结果
eth0 Link encap:Ethernet HWaddr 00:0C:29:64:88:8E
inet addr:192.168.4.5 Bcast:192.168.4.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe64:888e/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:101863 errors:0 dropped:0 overruns:0 frame:0
TX packets:44129 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:105411113 (100.5 MiB) TX bytes:4626738 (4.4 MiB)
步骤二:为tedu.cn域搭建DNS服务
1)使用yum安装bind、bind-chroot软件包
[root@mail ~]# yum -y install bind bind-chroot
… …
2)建立配置文件named.conf
[root@mail ~]# mv /etc/named.conf /etc/named.conf.bak //备份默认配置
[root@mail ~]# vim /etc/named.conf
options {
directory “/var/named”;
};
zone “tedu.cn” IN { //定义DNS父域
type master;
file “tedu.cn.zone”;
};
3)建立解析记录文件
注意添加mail.tedu.cn的解析记录:
[root@mail ~]# vim /var/named/tedu.cn.zone
$TTL 86400
@ IN SOA @ root.tedu.cn. (
2015052201
4H
15M
4H
1D
)
@ IN NS svr5.tedu.cn.
IN MX 10 mail.tedu.cn.
svr5 IN A 192.168.4.5
mail IN A 192.168.4.5
4)启动named服务
[root@mail ~]# service named restart
停止 named: [确定]
Generating /etc/rndc.key: [确定]
启动 named: [确定]
5)将本机配置为DNS客户端,测试域名解析
修改/etc/resolv.conf文件,添加本机作为DNS服务器:
[root@mail ~]# vim /etc/resolv.conf
search tedu.cn
nameserver 192.168.4.5
查询区域tedu.cn的MX记录,结果为mail.tedu.cn.:
[root@pc205 ~]# host -t mx tedu.cn
tedu.cn mail is handled by 10 mail.tedu.cn.
查询域名mail.tedu.cn的A记录,结果为192.168.4.5:
[root@pc205 ~]# host mail.tedu.cn
mail.tedu.cn has address 192.168.4.5
2. 配置并验证postfix服务
 问题
某公司有员工700余人,分布在北京总部及全国各地的分公司,为保证电子信息传递的及时、稳定性,减少业务沟通故障,要求构建一套自主管理的电子邮件系统。本案例要求沿用练习一,基于Postfix软件来实现发信功能。
需要完成的配置任务如下:

  1. 安装并配置postfix软件,适用于tedu.cn 邮件域
  2. 添加两个邮箱账号:nick、hunter
  3. 用户nick可以通过 telnet 给用户hunter发送电子邮件
  4. 检查用户hunter的邮箱目录,可以查看收到的邮件
     方案
    postfix是RHEL6系统中自带的软件包,主要用来实现SMTP协议,提供电子邮件的发送和传递。主要的配置文件位于/etc/postfix/main.cf,需要调整配置时可以直接修改这个文件,也可以用postconf辅助工具。
    关于postconf工具的常见用法:
  5. 列出当前有效配置:postconf
  6. 列出非默认的配置:postconf -n
  7. 列出默认配置:postconf -d
  8. 修改指定的配置参数:postconf -e ‘参数1=值1,值2…’ …
    主配置文件main.cf中的配置参数写法:参数1=值1,值2。若要了解所有可用配置参数的用法说明,可以执行man 5 postconf查阅手册文档。
    [root@mail ~]# man 5 postconf
    POSTCONF(5) POSTCONF(5)

NAME
postconf - Postfix configuration parameters

SYNOPSIS
postconf parameter …

   postconf -e "parameter=value" ...

… …
配置参数的多个值之间允许以逗号或空格分开,也可以写到下一行,但是需要注意,换行写参数值的时候,行首至少要留一个空格或Tab制表位,否则会被视为下一个配置参数而出错。
默认情况下,postfix服务器使用本机的系统用户作为电子邮箱的用户,因此只要正常添加系统用户并设置密码,也就相当于添加了电子邮箱用户。
 步骤
实现此案例需要按照如下步骤进行。
步骤一:安装 postfix 软件包
[root@mail ~]# yum -y install postfix
… …
[root@mail ~]# rpm -q postfix
postfix-2.6.6-2.2.el6_1.x86_64
步骤二:简化、调整主配置文件,启动 postfix 服务
1)简化main.cf配置文件
[root@mail ~]# cd /etc/postfix/
[root@svr5 postfix]# postconf -n > tmp.txt
[root@svr5 postfix]# mv main.cf main.cf.origin
[root@svr5 postfix]# mv tmp.txt main.cf
2)修改main.cf配置,以满足tedu.cn邮件域要求
[root@mail ~]# vim /etc/postfix/main.cf
… …
#inet_interfaces = localhost //注释掉此行
myhostname = mail.tedu.cn
mydomain = tedu.cn //邮件域
myorigin = $mydomain //显示的发件域
mydestination = $mydomain, $myhostname //本地投递域
home_mailbox = Maildir/ //邮箱类型
… …
3)启动postfix服务,并设为开机自动运行
[root@mail ~]# service postfix restart
[root@mail ~]# chkconfig postfix on
[root@mail ~]# netstat -antp | grep :25 //确认监听状态
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 5927/master
步骤三:添加电子邮箱账号
1)添加测试用户nick,将密码设为1234567
[root@mail ~]# useradd nick
[root@mail ~]# echo 1234567 | passwd --stdin nick
2)添加第二个测试用户hunter,将密码也设为1234567
[root@mail ~]# useradd hunter
[root@mail ~]# echo 1234567 | passwd --stdin hunter
步骤四:使用mail 命令测试发信(nick给hunter)
未做明确配置时,mail命令默认将本机作为发信、收信的服务器,所以此步骤中的测试操作在邮件服务器本机完成。
1)以用户nick的身份给hunter发送一封测试邮件
[root@svr5 ~]# echo “Mail Data.” | mail -s “Test Mail 1” -r nick@tedu.cn hunter@tedu.cn
2)检查 hunter 的邮箱目录、确认收到邮件
若nick提交的邮件发送成功,则收件人hunter的家目录下的Maildir/new/子目录下可以找到新收到的电子邮件文档:
[root@mail ~]# ls ~hunter/Maildir/new/ //新邮件列表
1379059530.V802I3ec129M716267.mail.tedu.cn
可以用cat等命令直接阅读对应的邮件文档,或者使用mail –f来加载邮箱:
[root@svr5 ~]# mail -f ~hunter/Maildir/
Heirloom Mail version 12.4 7/29/08. Type ? for help.
“/home/hunter/Maildir/”: 1 message 1 new

N 1 nick@tedu.cn Thu Dec 17 04:22 17/510 “T”
& p 1
Message 1:
From nick@tedu.cn Thu Dec 17 04:22:47 2015
Return-Path: nick@tedu.cn
X-Original-To: hunter@tedu.cn
Delivered-To: hunter@tedu.cn
Date: Thu, 17 Dec 2015 04:22:47 +0800
From: nick@tedu.cn
To: hunter@tedu.cn
Subject: Test Mail 1
User-Agent: Heirloom mailx 12.4 7/29/08
Content-Type: text/plain; charset=us-ascii
Status: RO

Mail Data.

& q
[root@svr5 ~]#
注意:用户家目录下的邮箱目录Maildir不需要手动创建,实际上当此用户收到第一封邮件的时候,postfix会自动建立此目录。
3. 配置dovecot服务
 问题
沿用练习一、二,在已实现Postfix发信功能的基础之上,为了方便邮箱用户收取各自的电子邮件,需要进一步提供专门的收信服务。本案例要求采用Dovecot软件来实现。
需要完成的配置任务如下:

  1. 安装 dovecot 软件包
  2. 允许明文验证、指定tedu.cn邮箱路径
  3. 启动 dovecot 服务
     方案
     步骤
    实现此案例需要按照如下步骤进行。
    步骤一:安装 dovecot 软件包
    [root@mail ~]# yum -y install dovecot
    [root@mail ~]# chkconfig dovecot on
    步骤二:调整dovecot 服务配置、启动服务
    1)修改dovecot服务的认证配置,允许明文认证
    [root@mail ~]# vim /etc/dovecot/conf.d/10-auth.conf
    … …
    disable_plaintext_auth = no //打开注释,并将yes改为no
    2)修改dovecot服务的邮箱配置,匹配到用户邮箱目录
    [root@mail ~]# vim /etc/dovecot/conf.d/10-mail.conf
    … …
    mail_location = maildir:~/Maildir //正确指定邮箱类型及路径
    3)启动dovecot服务,并设为开机自动运行
    [root@mail ~]# service dovecot restart
    [root@mail ~]# netstat -anpt | grep dovecot //确认监听状态
    tcp 0 0 :::110 ::? LISTEN 12694/dovecot
    tcp 0 0 :::143 ::? LISTEN 12694/dovecot
  1. 使用收发信工具
     问题
    对于配好的邮件服务器来说,如果只能给本机来发信、收信,显然是非常不方便的。因此,我们还需要学会使用客户端的收发信工具。在服务器运维工作中,出于脚本和一些后台任务的需要,更多的会使用mail命令;而对于普通的邮箱用户来说,通常会安装Outlook、Foxmail、Thunderbird(雷鸟)等图形化的客户端软件,界面更加友好。
    本案例要求在客户机上分别使用mail命令、Thunderbird客户端软件,与邮件服务器通信来实现发信、收信操作。需要完成的配置任务如下:
  1. 配置、使用mail 来发信、收信
  2. 配置、使用Thunderbird来发信、收信,配置账号 hunter@tedu.cn,测试给 nick 发邮件,抄送给自己
     方案
    mail是一个命令行界面的邮件客户端工具,默认将本机作为发信、收信服务器,如果需要使用其他的发信、收信服务器,则必须先建立具体的配置,以便指定服务器的地址、认证账号等信息。
    Thunderbird是一个图形化的邮件客户端软件,因此需要在RHEL6客户机的图形桌面下来完成。启动后需要配置一个邮箱账号/密码,正确指定所使用的发信、收信服务器,然后才能够实现收发信功能。
     步骤
    实现此案例需要按照如下步骤进行。
    步骤一:配置、使用mail命令
    1)在客户机pc205上为mail工具建立配置文件
    [root@pc205 ~]# vim ~/.mailrc
    set smtp=smtp://mail.tedu.cn //发信服务器
    set from=hunter@tedu.cn //发件人地址
    set folder=imap://hunter@mail.tedu.cn //收信路径
    set password-hunter@mail.tedu.cn=“1234567” //收信认证
    2)发送测试邮件
    因为已通过配置文件指定了发件人地址,因此发信时可以不再指定。给用户hunter发一封测试邮件,同时发给另一个用户nick:
    [root@pc205 ~]# echo “Hello, mailsvr” | mail -s “Test Mail 2.” hunter@tedu.cn nick@tedu.cn
    3)收取邮件
    直接执行mail即可,会自动根据配置文件的指定去访问服务器上的邮箱空间:
    [root@pc205 ~]# mail
    Heirloom Mail version 12.4 7/29/08. Type ? for help.
    “imap://hunter@mail.tedu.cn/INBOX”: 2 messages 2 new

1 nick@tedu.cn Thu Dec 17 04:22 /525 “T”
N 2 To nick@tedu.cn, Thu Dec 17 04:55 /598 “T”
& p 2
Message 2:
From hunter@tedu.cn Thu Dec 17 04:55:15 2015
Return-Path: hunter@tedu.cn
X-Original-To: hunter@tedu.cn
Delivered-To: hunter@tedu.cn
Date: Wed, 23 Dec 2015 20:57:45 +0800
From: hunter@tedu.cn
To: nick@tedu.cn, hunter@tedu.cn
Subject: Test Mail 2.
User-Agent: Heirloom mailx 12.4 7/29/08
Content-Type: text/plain; charset=us-ascii
Status: R

Hello, mailsvr

& q
Held 2 messages in imap://hunter@mail.tedu.cn/INBOX
[root@pc205 ~]#
步骤二:安装、启动Thunderbird软件
1)下载Thunderbird的免安装包,上传到客户机的/opt目录下
[root@pc205 ~]# ls /opt/
rh thunderbird-31.2.0_x64.tar.bz2
2)释放Thunderbird软件包,即完成安装
[root@pc205 opt]# tar jxf thunderbird-31.2.0_x64.tar.bz2 -C /opt/
[root@pc205 opt]# ls
rh thunderbird thunderbird-31.2.0_x64.tar.bz2
3)启动Thunderbird软件
找到Thunderbird的部署目录,执行其中的thunderbird程序。本例中在图形环境直接运行/opt/thunderbird/thunderbird,可以打开Thunderbird软件,第一次运行会要求配置邮件地址,如图-2所示。

图-2在这里插入图片描述
单击左下角的“跳过并使用已有的电子邮箱”按钮,接下来选择“手动配置”,进入自定义配置过程。
步骤三:配置电子邮件账户
1)正确指定电子邮件账号信息
根据用户的实际情况,你的名字、电子邮件、密码、接收/发送协议和服务器主机名等不要写错,SSL加密和SMTP验证暂时都选无,如图-3所示。

图-3在这里插入图片描述
确认无误后,单击右下角的“完成”按钮。由于当前的邮件服务器未使用任何加密,所以Thunderbird会弹出一个安全警告,如图-4所示。勾选“我已了解相关风险”,单击“完成”,接下来根据提示“确认安全例外”即可。

图-4在这里插入图片描述
2)进入Thunderbird邮件管理窗口
完成上述设置后,自动进入Thunderbird的邮件管理界面,通过收件箱可以看到已经列出了hunter收到的邮件,如图-5所示。

图-5在这里插入图片描述
步骤四:测试邮件发送与收取
1)新建并发送一封测试邮件
单击工具栏的“新建消息”,打开邮件编写窗口,如图-6所示。随意编写邮件主题、邮件内容,收件人写nick@tedu.cn, 抄送给hunter@tedu.cn,然后单击左上方的“发送”按钮提交邮件。

图-6在这里插入图片描述
2)收取邮件
单击工具栏的“获取消息”按钮,很快可以看到收件箱里列出了刚刚抄送给自己的那份测试邮件,如图-7所示,单击邮件主题可以阅读邮件内容。

图-7
5. 配置SMT在这里插入图片描述P发信认证
 问题
沿用练习一、二、三,根据现有的Postfix服务配置,基本上任何人都可以连接到邮件服务器,随意提交电子邮件。为了提高邮件系统的安全性、减少垃圾邮件,本案例要求针对SMTP发信功能开启认证限制。
需要完成的配置任务如下:

  1. 启用saslauthd 认证服务
  2. 调整postfix 服务配置,添加相关认证设置
  3. 测试SMTP发信认证
     方案
    RHEL6系统自带了SASL(Simple Authentication and Security Layer,简单认证安全层)组件,无需额外配置,可以利用其saslauthd服务来提供认证支持。当然,还需要修改Postfix服务的配置文件,以便启用认证,如图-8所示。
    在这里插入图片描述
    图-8
     步骤
    实现此案例需要按照如下步骤进行。
    步骤一:配置saslauthd 认证服务
    1)安装、启动saslauthd服务
    [root@mail ~]# yum -y install cyrus-sasl-plain //若已安装,则此步跳过
    … …
    [root@mail ~]# service saslauthd start
    [root@mail ~]# chkconfig saslauthd on
    2)简单测试认证效果
    使用testsaslauthd工具检查smtp服务,若用户名、密码正确,则测试通过,否则将会失败:
    [root@mail ~]# testsaslauthd -u hunter -p 1234567 -s smtp
    0: OK “Success.” //认证通过

[root@mail ~]# testsaslauthd -u hunter -p 1234 -s smtp
0: NO “authentication failed” //认证失败(不通过)
步骤二:调整 postfix 配置,启用SMTP认证
1)修改main.cf配置文件,添加认证相关配置
[root@mail ~]# vim /etc/postfix/main.cf
… …
mynetworks = 127.0.0.1 //设置本地网络
smtpd_sasl_auth_enable = yes //启用SASL认证
smtpd_sasl_security_options = noanonymous //阻止匿名发信
smtpd_recipient_restrictions = //设置收件人过滤
permit_mynetworks, permit_sasl_authenticated,
reject_unauth_destination //拒绝向未授权的目标域发信
2)重新加载postfix服务
[root@mail ~]# service postfix restart
… …
步骤三:测试 SMTP 发信认证
在客户机上利用mail命令或Thunderbird测试。
1)以前例配置的mail命令为例,未经过认证登录时,向外域发邮件会被拒绝
[root@pc205 ~]# echo “SMTP Test.” | mail -s “Test Mail 3.” tsengyia@126.com
… …
smtp-server: 554 5.7.1 tsengyia@126.com: Relay access denied
“/root/dead.letter” 11/306
. . . message not sent. //被拒绝、邮件提交失败
2)修改mail的配置文件,添加SMTP认证信息
[root@pc205 ~]# vim ~/.mailrc
set smtp=smtp://mail.tedu.cn
set from=hunter@tedu.cn
set smtp-auth-user="hunter@tedu.cn" //指定认证用户
set smtp-auth-password=“1234567” //指定认证密码
set folder=imap://hunter@mail.tedu.cn
set password-hunter@mail.tedu.cn=“1234567”
3)再次测试发信,邮件成功提交到服务器
[root@pc205 ~]# echo “SMTP Test.” | mail -s “Test Mail 4.” tsengyia@126.com
[root@pc205 ~]#
通过上述操作过程可以发现,用户nick经认证登录以后,成功将一封发给外域收件人tsengyia@126.com的邮件提交到postfix发信队列。
注意:邮件被成功提交到发信队列不表示发信就一定会成功,还取决于Internet连接、DNS解析、对方的邮件接收策略等一系列因素。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值