其中在整个一套邮件服务器中,默认信息传输都是明文传输的,所以这个在安全性上面就不是那么好。但是如果说一封邮件从发生到对方接受想要全程做到加密处理这个也是很难的。因为一封邮件从一个域转到另外一个域服务器时很难做到加密,这属于不同的域,有不同的人在管理,比如说从163发一封邮件到QQ邮箱。

但是如果在同一个域内保证邮件发送和接收的安全性,该如何做呢?其实也有一种机制就是S/MIME,提供用户到用户的邮件安全性。它能保证邮件发送加密同时邮件存储在邮件服务器上也是加密存放,直到用户取回到本地进行解密才可查看,在这期间任何人截取邮件都是不可看的,可以说是非常安全了。但是这种机制一般都是提供商业支持。

那么除了S/MIME这种机制,在我们可控范围内可以做到邮件发送和接收时进行加密,如smtps是加密传输的smtp协议,工作在TCP/465端口;POP3s是加密传输的pop3协议,工作在TCP/995端口;以及IMAP4s是加密传输的imap4协议,工作在TCP/993端口;当然这只是能保证邮件从邮箱到本地是加密的,如邮件发送和存储无法做到加密。也可以对webmail进行https传输,这些都可以在一定程度上做到邮件加密处理。

OpenSSL实现私有CA

CA服务器生成一对秘钥并保存

[root@localhost ~]# openssl genrsa 1024 > /etc/pki/CA/private/cakey.pem

CA服务器生成自签署证书

[root@localjost ~]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 365
输入国家名称2位的代码:cn
输入所在省份的名称:shanghai
输入所在城市的名称:shanghai
输入公司的名称:ywnds
输入所在的部门:tech
输入主机的名称:ca.ywnds.com(此主机名要跟服务器的主机名保持一致;客户端访问主机时必须要通过这个主机名才能建立连接否则说证书不可信)
输入E-mail:admin@ywnds.com

为CA创建一些目录和文件

[root@localhost ~]# mkdir /etc/pki/CA/{certs,newcerts,crl}
[root@localhost ~]# touch /etc/pki/CA/{index.txt,serial}
[root@localhost ~]# echo 01 > /etc/pki/CA/serial

邮件服务器生成证书

[root@localhost ~]# mkdir /etc/dovecot/ssl
[root@localhost ~]# openssl genrsa -out /etc/dovecot/ssl/dovecot.key 1024
[root@localhost ~]# opensslreq -new -key /etc/dovecot/ssl/dovecot.key -out /etc/dovecot/ssl/dovecot.csr
[输入的信息一定要跟CA输入的信息一致因为我们创建的私有CA]
输入国家名称2位的代码:cn
输入所在省份的名称:shanghai
输入所在城市的名称:shanghai
输入公司的名称:ywnds
输入所在的部门:tech
输入主机的名称:mail.ywnds.com(此主机名要跟服务器的主机名保持一致;客户端访问主机时必须要通过这个主机名才能建立连接否则说证书不可信)
输入E-mail:admin@ywnds.com
证书密码:

在CA服务器签署证书并发送回给邮件服务器

[root@localhost ~]# openssl ca -in /etc/dovecot/ssl/dovecot.csr -out /etc/dovecot/ssl/dovecot.crt -days 365

在CA服务器上查看签署过后/etc/pki/CA下的文件发生的变化

[root@localhost ~]# cat /etc/pki/CA/index.txt
[root@localhost ~]# cat /etc/pki/CA/serial Dovecot开启SSL
[root@localhost ~]# vim /etc/dovecot.conf
protocols pop pop3 imap imap4 [root@localhost ~]# vim /etc/dovecot/conf.d/10-ssl.conf
ssl = yes
ssl_cert = /etc/dovecot/ssl/dovecot.crt
ssl_key = /etc/dovecot/ssl/dovecot.key [root@localhost ~]# service dovecot restart

MUA连接邮件服务器注意事项:

1.把CA的证书cacert.pem下载到客户端改名cacert.crt并安装到根信任域。

2.客户端连接pop3s服务器时POP3s会发来证书,此时CA证书cacert.crt会去验证POP3证书,没有问题就可以传输邮件。

3.MUA在连接POP3s服务器时要使用域名不能使用IP地址,因为要跟证书中的主机名对应,不然还是会不受信任,同时客户端要能解析此域名。

Linux中Postfix基于SSL收发邮件(九)的更多相关文章

  1. Linux中Postfix反病毒和垃圾邮件工具(十)

    amavisd-new amavisd-new呼叫器是一个连接MTA和内容检测工具(诸如病毒扫描工具和SpamAssassin)的高性能接口程序,使用perl语言写成.它一般通过SMTP.ESMTP或 ...

  2. Linux中Postfix反病毒和垃圾邮件(十)

    amavisd-new amavisd-new呼叫器是一个连接MTA和内容检测工具(诸如病毒扫描工具和SpamAssassin)的高性能接口程序,使用perl语言写成.它一般通过SMTP.ESMTP或 ...

  3. Linux中Postfix邮件原理介绍(一)

    邮件相关协议 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议, 工作在TCP的25端口.它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式 ...

  4. Linux中Postfix邮件安装Maildrop(八)

    Postfix使用maildrop投递邮件 Maildrop是本地邮件投递代理(MDA), 支持过滤(/etc/maildroprc).投递和磁盘限额(Quota)功能. Maildrop是一个使用C ...

  5. Linux中最受欢迎的邮件传输代理(MTA)

    MTA(Mail transfer Agent) -对于服务器管理员来说,邮件传输代理是最为重要的工具.MTA的主要工作就是将电子邮件从一台主机发送到另一台主机.MTA使用SMTP(简单邮件传输协议) ...

  6. Linux中Postfix虚拟用户及虚拟域(六)

    Postfix基于虚拟用户虚拟域的邮件架构 上图是一个几乎完整的邮件系统架构图,这里基于Mysql数据库进行用户认证,不管是Postfix.Dovecot.webmail都需要去Mysql数据库中进行 ...

  7. c#使用QQ邮箱的SSL收发邮件

    c#使用SMTP.QQ.COM的SSL验证时,收发邮件,请勿设置端口,代码如下: (1)虽然SSL端口是465,但是,在代码里,不能直接设置端口,很奇怪?挺奇怪,好吧腾讯SSL好像用的是587端口!! ...

  8. 如何在 Linux 中配置基于密钥认证的 SSH

    什么是基于 SSH 密钥的认证? 众所周知,Secure Shell,又称 SSH,是允许你通过无安全网络(例如 Internet)和远程系统之间安全访问/通信的加密网络协议.无论何时使用 SSH 在 ...

  9. Linux中postfix邮件服务器的搭建

    postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件.postfix是Wietse Venema想要为使用最广泛的sendmail提供替代品的一个尝试.在 ...

随机推荐

  1. CBV之详解

    一,CBV,基于反射实现根据请求方式不同,执行不同的方法. 1. 开发模式 - 普通开发方式(前后端放在一起写) - 前后端分离 2. 后端开发 为前端提供URL(API/接口的开发) 注:永远返回H ...

  2. 9.11 Django视图 view和路由

    2018-9-11 16:34:16 2018-9-11 19:00:24 越努力,.越幸运! Django框架参考: https://www.cnblogs.com/liwenzhou/p/8296 ...

  3. jquery选择器中的逗号

    $("span",this)等同于$(this).find('span') 中间逗号两个条件的并集

  4. MapReduce的洗牌(Shuffle)

    Shuffle过程:数据从map端传输到reduce端的过程~ Map端 每个map有一个环形内存缓冲区,用于存储任务的输出.默认大小100MB(io.sort.mb属性),一旦达到阀值0.8(io. ...

  5. Pandas的loc方法

    当你读取到DataFrame的数据时,想去定位某一个数据项,可以使用loc方法进行查找,之后你可以赋值给他. import pandas as pd df = pd.read_csv('file_na ...

  6. sql中charindex的用法

    转自:https://www.cnblogs.com/beeone/p/3621743.html CHARINDEX和PATINDEX函数常常用来在一段字符中搜索字符或者字符串.如果被搜索的字符中包含 ...

  7. tomcatserver解析(五)-- Poller

    在前面的分析中介绍过,Acceptor的作用是控制与tomcat建立连接的数量,但Acceptor仅仅负责建立连接.socket内容的读写是通过Poller来实现的.   Poller使用java n ...

  8. qt——常用的布局方法

    布局相关对象及简介 窗体上的所有的控件必须有一个合适的尺寸和位置.Qt提供了一些类负责排列窗体上的控件,主要有:QHBoxLayout,QVBoxLayout,QGridLayout,QStackLa ...

  9. python center() 函数

    center Python center() 返回一个原字符串居中,并使用空格填充至长度 width 的新字符串.默认填充字符为空格. 语法 center()方法语法: str.center(widt ...

  10. kettle中源和目标表结构不一致的情况处理

    创建数据仓库的过程中,往往会遇到这样的问题,例如:源表由于业务原因新增了字段,而ETL程序中是按照之前的源表结构进行抽取的,那么如果不重新构建ETL程序,新的指标就不会流入DW,问题如下图所示 创建了 ...