首页 > 服务器 > Linux > CentOS邮件服务器搭建系列——用 SSL 对邮件加密的支持
2014
11-07

CentOS邮件服务器搭建系列——用 SSL 对邮件加密的支持

前  言

通常,我们发送的邮件在传输过程中都采用明文传输。当发送重要信息的时候,仍然存在邮件被第三方获取,泄露隐私及密码等等的安全隐患。在 Web 服务器中,通过用 SSL 实现对 HTTPS 协议的支持,实现了对传输内容的加密,在邮件服务器中,我们也同样能够依靠 SSL 来实现对邮件的加密,从而提高通过用邮件传递信息的安全性。

证书与密钥的确认

在这里,可以为邮件服务器建立新的证书,但为了管理上的便利性,我们直接引用 Web 服务器的证书,作为邮件服务器的证书。

首先确认 Web 服务器证书的存在。

[root@sample ~]# ls -l /etc/httpd/conf/ssl.crt/server.crt  ← 确认证书的存在性

-rw-r--r-- 1 root root 956 Oct 14 08:51 /etc/httpd/conf/ssl.crt/server.crt  ← 证书存在

[root@sample ~]# ls -l /etc/httpd/conf/ssl.key/server.key  ← 确认密钥的存在性

-rw------- 1 root root 887 Oct 14 08:49 /etc/httpd/conf/ssl.key/server.key  ← 密钥存在

如果以上确认,没有发现相关的证书和密钥的存在,请参见 “让服务器支持安全 HTTP 协议( HTTPS )” 中的方法来建立相关的证书和密钥。

SMTP服务器(Postfix)方面的相关设置

[1] 编辑 Postfix 的 mail.cf 配置文件。

[root@sample ~]# vi /etc/postfix/main.cf  ← 编辑 Postfix 配置文件,在文尾添加如下行:

smtpd_use_tls = yes
smtpd_tls_session_cache_database = btree:/etc/postfix/smtpd_scache
smtpd_tls_cert_file = /etc/httpd/conf/ssl.crt/server.crt
smtpd_tls_key_file = /etc/httpd/conf/ssl.key/server.key

[2] 编辑 Postfix 的 master.cf 配置文件。

[root@sample ~]# vi /etc/postfix/master.cf  ← 编辑 master.cf

smtp   inet   n   -   n   -   -   smtpd  ← 找到此行,在行首加“#”

#smtp   inet   n   -   n   -   -   smtpd  ← 改为此状态,禁用SMTP协议

#smtps   inet   n   -   n   -   -   smtpd  ← 找到此行,去掉行首的“#”

smtps   inet   n   -   n   -   -   smtpd  ← 改为此状态,使用SMTPS协议

# -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes  ← 找到此行,去掉行首的“#”

-o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes  ← 改为此状态

[3] 编辑 Dovecot 的配置文件。

[root@sample ~]# vi /etc/dovecot.conf  ← 编辑 Dovecot 的配置文件

protocols = imap pop3  ← 找到此行,将“=”后面的部分改为如下状态

protocols = imaps pop3s  ← 改为此状态,让其只支持imaps和pop3s协议

#ssl_disable = no  ← 找到此行,去掉行首的“#”

ssl_disable = no  ← 改为此状态,让其支持 SSL 及 TLS

#ssl_cert_file = /usr/share/ssl/certs/dovecot.pem  ← 找到此行,去掉行首的“#”,并指定证书所在位置

ssl_cert_file =/etc/httpd/conf/ssl.crt/server.crt  ← 改为此状态,指定其证书为 Apache 的证书

#ssl_key_file = /usr/share/ssl/private/dovecot.pem  ← 找到此行,去掉行首的“#”,并指定密钥所在位置

ssl_key_file = /etc/httpd/conf/ssl.key/server.key   ← 改为此状态,指定其密钥为 Apache 的密钥

[4] 编辑防火墙规则,打开相应端口。

[root@sample ~]# vi /etc/sysconfig/iptables  ← 编辑防火墙规则

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT  ← 找到此行,接着添加如下行:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 465 -j ACCEPT  ← 允许SMTPS的465号端口
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 995 -j ACCEPT  ← 允许POP3S的995号端口
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 993 -j ACCEPT  ← 允许IMAPS的993号端口

重新起动相关服务,使设置生效

最后,重新启动所有相关的服务,使刚刚的设置生效。

[root@sample ~]# /etc/rc.d/init.d/postfix restart  ← 重新启动 Postfix

Shutting down postfix:         [ OK ]
Starting postfix:           [ OK ]

[root@sample ~]# /etc/rc.d/init.d/dovecot restart  ← 重新启动 Dovecot

Stopping Dovecot Imap:        [ OK ]
Starting Dovecot Imap:         [ OK ]

[root@sample ~]# /etc/rc.d/init.d/iptables restart  ← 重新启动 iptables

Flushing firewall rules:          [ OK ]
Setting chains to policy ACCEPT: filter   [ OK ]
Unloading iptables modules:       [ OK ]
Applying iptables firewall rules:      [ OK ]

邮件客户端的设置

这里,邮件客户端的设置以 Thunderbird 为例。

* SMTP 方面:

在 SMTP 服务器设置中,选择 SSL 方式。使用 Thunderbird 的情况下,选择 SSL 后,端口号会自动变成 465。其它邮件客户端软件请根据实际情况正确设置。

编程技巧