拓扑环境
实验简介
MUA:Mail User Agent 邮件用户代理,所谓的邮件客户端软件(outlook,foxmail,thunderbird)
MTA:Mail Transfer Agent 邮件传输代理,所谓的邮件服务器(sendmail,postfix,qmail)
三种邮件协议
smtp:简单邮件传输协议,sendmail支持的
pop3:邮件协议第3版,dovecot支持
imap:因特网消息访问协议第4版,dovecot支持
因为sendmail只支持smtp协议所以当sendmail服务搭建后只能让用户发送邮件,而对方用户却无法接收邮件,因为这需要pop3和imap4的支持,所以才会用到dovecot软件
实验目的
2.两个用户用foxmail能够互相发送邮件
3.两个用户用foxmail使用别名发送邮件
4.两个用户用foxmail可以群发邮件
5.当客户端没有邮件应用程序时用浏览器收发邮件
6.邮件收发过程中邮件服务器的解析依靠dns完成
所需要的软件包
bind-9.3.6-4.P1.el5_4.2
sendmail-8.13.8-8.el5
m4-1.4.5-3.el5.1
sendmail-cf-8.13.8-8.el5
dovecot-1.0.7-7.el5
openwebmail
实验步骤
1.前期工作(制作yum本地源)
2.前期工作(挂载光驱)
3.安装邮件服务器软件包
yum install *sendmail*
yum install dovecot
4.开启网卡监听,就是让sendmail监听哪块网卡上得邮件传输请求。可以指定网卡,也可以监听所有网卡(0.0.0.0替换指定IP即可).并同时开启用户登录认证功能,也就是说用户要发送或者接受邮件必须输入密码才可以做,以抵御冒名顶替的非法用户发送垃圾或者不良邮件。
vi /etc/mail/sendmail.mc
5.让mc配置生效重新写到sendmail的主配置文件中sendmail.cf
为什么不直接编辑主配置文件sendmail.cf是因为这个配置文件的结构太过于复杂,不便于工程师配置邮件服务,所以开发者提供了一个sendmail.mc的基本配置文件,通过这个基本配置文件来配置邮件服务,并把配置过程和变更重新定向给sendmail.cf.因为sendmail启动还是要读取主配置文件sendmail.cf的.
如果你执行上述命令时提示如下错误cannot open "/usr/share/sendmail.cf/m4"证明sendmail.cf软件包没有装
6.配置邮件的收发域
vi /etc/mail/local-host-names
7.配置sendmail转发域
vi /etc/mail/access
然后把这个配置文件转成sendmail可以识别的数据库文件access.db
这个文件用来配置邮件转发权限的,sendmail可以帮助哪些网络或哪台计算机转发邮件给另一台邮件服务器
8.配置dovecot以启用pop3和imap4协议
vi /etc/dovecot
9.配置dns服务以支持邮件服务器MX记录解析
yum install bind
yum install bind*
yum install caching-nameserver
9.1拷贝配置文件到指定目录
9.2给予配置文件named:named所属关系,因为bind是靠named用户来启动的如果named账户没有权限执行启动脚本那么bind启动失败
9.3编写bind的主配置文件
vi /var/named/chroot/etc/named.conf
9.4编写区域配置文件
vi /var/named/chroot/etc/named.zone
9.5编写正向和反向区域数据库文件
vi /var/named/chroot/var/named/lvs.com.zone
vi /var/named/chroot/var/named/0.168.192.zone
9.6启动dns服务
9.7把dns服务器指向自己做测试
vi /etc/resolv.conf
nameserver 192.168.0.200
9.6测试dns正向反向解析邮件记录是否正常
10.设置sendmail,dovecot,bind开机启动
11.启动sendmail和dovecot服务
11.1看看端口是否都开放了,我们看到端口都开放了
dns:53
smtp:25
pop3:110
imap:143
12.客户端测试邮件系统
12.1添加两个测试账户
12.2把windows客户端dns指向linux服务器
12.3配置foxmail邮件客户端
user1开始给user2发信
给user1和user2都搞个别名
user1对应fish
user2对应shark
这样user1在给user2发邮件就可以写成shark@lvs.com了以保护user2账户,因为邮件服务器的账户就是系统自身账户出于对系统账户安全考虑才这么做的.而紫色的部分是一个邮件群发设置,当给animal@lvs.com发邮件的时候就等于给fish,shark都发邮件
vi /etc/aliases
让上述设置生效
newaliases
此时此刻我们在来配置一下以浏览器为邮件客户端的邮件服务器openwebmail
1.我们先利用linux的samba共享一个目录把openwebmail及相关组件都复制到linux下,因为openwebmail并不是linux默认的组件包。
yum install samba
vi /etc/samba/smb.conf
修改security等级和添加一个共享目录
mkdir /software 创建这个目录
chmod 777 /software 给完全权限
启动samba服务
2.windows客户端来访问linux共享目录,因为openwebmail被我下载到windows上了
这是我拷贝之后的结果
3.安装软件包
先安装perl开头的软件包
在安装openwebmail
4.关闭selinux
vi /etc/config/selinux
5.修改openwebmail配置文件
vi /var/www/cgi-bin/openwebmail/etc/defaults/dbm.conf
6.安装并启动httpd服务
因为openwebmail是一款网页邮件服务,所以要借助80端口才能提供给客户端浏览器进行邮件界面操作。
7.对openwebmail的数据库初始化
8.在浏览器中输入
9.设置中文项
vi /var/www/cgi-bin/openwebmail/etc/openwebmail.conf
10.我们在来登录试试页面是否变成中文的
11.登录进去看看能否找到自己的邮件
接下来我就要给大家演示如何利用证书
实验介绍
1.有一台邮件服务器供user1和user2相互传送邮件
2.有一台CA证书服务器提供签署证书以完成邮件加密和签名
3.CA证书服务器自签名为合法
4.邮件服务器需要从CA那里获得一份证书以证明自己的合法性
5.user1和user2也要从CA那里获得证书以完成邮件加密和签名
6.在邮件服务器上安装证书
7.在客户端上安装证书
实验步骤
1.CA证书中心自签名承认自己合法
配置/etc/pki/tls/openss.cnf文件
2.创建在配置文件中的支持目录和支持文件
3.CA给自己创建一个私钥,按照openssl.cnf文件中的解释,CA的私钥必须放在/etc/pki/CA/private/ca.key
4.在通过CA自己的私钥来生成公钥。这里要说明一下对于其他应用服务器或者客户端而言获得证书的步骤如下:
4.1服务器或客户端先用openssl自己生成一个私钥server.key
4.2然后利用自己的server.key生成一个server.csr的证书请求文件,这个文件包含了你的server所在的国家,省份,公司名称,邮箱等一系列证明你身份的属性。
4.3你要把这个server.csr交给CA中心,让CA中心来核查你的信息是否属实(万一你是钓鱼网站或者有欺诈性质的),当CA中心认为你的信息都属实,就按照server.csr的内容给你签署一份证书(包括了CA的签名,Server的公钥,Server的基本属性)叫server.crt
4.4把server.crt传回来给这个server服务器,那么这台server服务器就有server.key私钥和server.crt公钥了
4.5然后就安装server.key和server.crt到自己的证书库中。同时也包括给你签署证书的CA中心的公钥也要安装进来,
4.6那么客户端获得证书的过程和server一样,都要安装自己的私钥和公钥以及CA中心的公钥
4.7现在server有CA的公钥,client也有CA的公钥,他们都相信这个CA,ok!他们直接就可以建立间接的信任开始进行加密和签名了。
我当前的操作目录是/etc/pki/CA.按照openssl.cnf配置文件中说certificate=/etc/pki/CA那么CA中心自己的公钥就放在/etc/pki/CA目录下
你也许觉的很奇怪为啥CA中心自己不要csr证书请求文件,然后就很随意的很霸道的就给自己签署证书了。其实不应该这样随意的。
一个合法的CA中心建立也要向他的上级CA中心来提交csr证书请求的,同时上级CA也会来验证你的CA中心合法性的,比如世界上三大证书中心Verisign,Thawte,GeoTrust他们就自己给自己签了,因为找不到比他们更权威的CA来制衡,管辖他们了。
5.现在我的操作是在邮件服务器上完成的
5.1邮件服务器自己先生成一个私钥mailserver.key并把这个文件放在自己的/etc/pki/tls/private目录中
5.2利用邮件服务器自己的mailserver.key生成一个mailserver.csr的证书请求文件
5.3现在我们在邮件服务器管理员的家目录里可以看到mailserver.key私钥和mailserver.csr的证书请求文件
6现在要做得就是把邮件服务器的证书请求文件发给CA中心,并让CA中心签署
scp mailserver.csr ca.lvs.com:/etc/pki/CA/newcerts/mailserver.csr
我把mailserver.csr从邮件服务器的家目录拷贝到CA中心的/etc/pki/CA/newcerts目录中,作为即将签署证书的地方
7.现在得操作已经在CA中心上了,证书请求发过来了可是怎么验证之前要查看这个csr中的内容呀。有几种办法
7.1你可以介绍CA中心的网页把你的csr种的1024加密内容复制到一个文本框中,网页会自己翻译这个加密内容的.如下图是我的mailserver.csr的内容包括了国家,地域等,这我们都肯定解释不了的。
我复制到一个神奇的网页中
7.2你在用CA中心自己的私钥给这个csr请求签署证书的时候就可以罗列出里面的信息了,你核查后同意就签署,不同意就over.
那就啥也别说了大笔一挥直接签吧!
8.ok!现在就把CA中心签署好的mailserver.crt证书文件和CA自己的证书ca.crt一同传给邮件服务器。为啥也要CA的证书呢?原因很简单
8.1客户端来发邮件之前要检查邮件服务器是否合法(不是那种嗅探者或拦截者)
8.2但检查邮件服务器合法性之前就必须检查给这个邮件服务器签署证书的CA中心是否合法
8.3客户端安装的系统都会带有世界合法的CA中心库,客户端会从邮件服务器的证书中提取CA签名的信息,并拿此信息和自己的CA中心库对比查找有没有匹配的记录,如果有客户端就信任这个CA中心以及这个CA中心签署给其他人的证书也是没发错的。
8.4如果没找到匹配的CA中心记录就会问你是否相信这个CA以及这个CA签署这台邮件服务器(他们有可能是蛇鼠一窝的),当然你可以选择相信也可以否认。相信了就借助 这台邮件服务器收发邮件,不相信就拜拜断掉连接。
在CA中心上操作拷贝mailserver.crt和ca.crt给邮件服务器
cp ./certs/mailserver.crt mail.lvs.com:/etc/pki/tls/certs/mailserver.crt
cp ca.crt mail.lvs.com:/etc/pki/CA
9.现在邮件服务器的mailserver.key和mailserver.crt以及CA的ca.crt,这2个公钥1个私钥都齐全了分别放在邮件服务器目录中的
CA的公钥ca.crt-----/etc/pki/CA
邮件服务器公钥mailserver.crt-----/etc/pki/tls/certs
邮件服务器私钥mailserver.key----/etc/pki/tls/private
然后mailserver.key和mailserver.crt拷贝成pem格式的文件
为什么要这么做的主要原因在于.crt文件都是二进制存放的不含有私钥信息
cp /etc/pki/tls/certs/mailserver.certs /etc/pki/tls/certs/mailserver.pem
cp /etc/pki/tls/private/mailserver.key /etc/pki/tls/private/mailserver.pem
10.编辑dovecot配置文件支持证书
vi /etc/dovecot.conf
11.我用thunderbird做邮件客户端测试一下
当这台邮件服务器没有安装CA中心的公钥时,也就是说没有CA能证明这个邮件服务器的合法性,此时你接受邮件会提示你一个警告。第一行说不能核查和识别mail.lvs.com的真实性.底下的选项1是一直相信这个邮件服务器,选项2是就这一次相信,选项3是不相信,拜拜!
那么现在为了不在弹出这个对话框,就是说让客户端相信这个邮件服务器是合法的CA中心签署的一台邮件服务器我们要做得一件事就是把我们自签名的CA证书导入到客户端的全球CA中心库里
以同样的方式client1和client2也要申请证书
cp /root/client1.key /etc/pki/CA/private/client1.key
然后把自己的client1.csr证书请求文件发给CA中心,让CA中心来签署并生成证书,下面的操作我是在CA中心的/etc/pki/CA/newcerts
把client1.crt签署好的证书和CA中心的证书ca.crt一并拷给client1客户端
scp /etc/pki/CA/certs/client1.crt client1.lvs.com:/etc/pki/CA/certs/client1.crt
scp /etc/pki/CA/ca.crt client1.lvs.com:/etc/pki/CA
打开thunderbird客户端
这里就会有问题了,客户端client1的私钥和公钥是.key和.crt结尾的文件,而此时导入我们需要pkcs12证书格式的文件,这里存在一个证书格式转换的问题
现在就开始转换证书
我把client1.crt和client1.key文件都放在了一个我新建的client1文件夹下并把client1.crt更名为client1.pem,因为pkcs12格式转换是只能读取源证书格式是pem的。不过我没有做pem转得过程。这里还需要输入保护pkcs12格式私钥的密码。其实pkcs12格式就是吧.crt和.key即公钥和私钥统集合在一个文件了。
然后客户端就可以看到证书了
以同样的方位为client2申请证书并证书格式为pkcs12
那现在我们就可以在thunderbird中让用户选择自己的证书了
当我发送邮件的时候提示你建立pkcs12证书格式时保护密码
我们在来看看证书服务器都签署了哪些证书,总共多少个
OK了!一个简单的sendmail+dovecot+openwebmail+dns+openssl证书组合的小型邮件系统就搭建完成了,这里不值得一提,只是给很多新人们一点思路。最后这个openwebmail其实也是一个邮件服务器,和sendmail区别在于
sendmail----foxmai,outlook,thunderbird这些应用程序客户端.属于C/S架构
openwebmail----IE,firefox,这些浏览器.属于B/S架构
高手留下灰尘,新手留下足迹!