科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网安全频道网络安全如何使用加密技术为邮件服务器保驾护航?

如何使用加密技术为邮件服务器保驾护航?

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

TLS/SSL所需的证书可以是自签名、由免费的认证机构(比如CAcert)签名,或者由商业认证机构(比如VeriSign)签名,可以借助OpenSSL等实用工具来生成。

来源:51CTO 2014年1月27日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

安全套接层(SSL)及其后续版本:传输层安全(TLS)是两种应用最广泛的协议,用来对服务器与客户机之间传输的数据进行加密。这些协议常常使用X.509证书和非对称加密方法。

STARTTTLS是另一种确保明文通信安全的方法。这种协议也使用SSL或TLS,对数据进行加密,但是使用与明文协议一样的端口,而不是使用另 外的端口用来传输由SSL/TLS加密的数据。比如说,基于STARTTLS的IMAP使用与IMAP一样的端口(端口143),而基于SSL的 IMAP(IMAPS)使用单独的端口:端口993。

前一个教程(http://xmodulo.com/2014/01/mail-server-ubuntu-debian.html)介绍了如何 搭建一台在Postfix和Dovecot上运行的邮件服务器,但并没有探讨安全方面。在该教程中,我们将演示如何通过基于的TLS/SSL加密技术,为 邮件服务器添加安全性。

TLS/SSL所需的证书可以是自签名、由免费的认证机构(比如CAcert)签名,或者由商业认证机构(比如VeriSign)签名,可以借助OpenSSL等实用工具来生成。我们准备在该教程中使用自签名证书。

为Postfix登记TLS加密

自签名证书可以用下面这个命令来创建。

# openssl req -new -x509 -days 365 -nodes -out /etc/ssl/certs/postfixcert.pem -keyout /etc/ssl/private/postfixkey.pem

上面这个命令请求一个新的证书,证书类型是X.509,保持365天有效。可选的-nodes参数明确规定了私有密钥不应该加密。输出证书文件作为postfixcert.pem保存起来,输出密钥文件作为postfixkey.pem保存起来。

可以赋予证书的所有必要值:

Country Name (2 letter code) [AU]:BD
State or Province Name (full name) [Some-State]:Dhaka
Locality Name (eg, city) []:Dhaka
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:Example.tst
Common Name (e.g. server FQDN or YOUR name) []:mail.example.tst
Email Address []:sarmed@example.tst

由于证书已准备就绪,可以调整postfix配置文件中的必要参数:

root@mail:~# vim /etc/postfix/main.cf
### STARTTLS已被启用###
smtpd_tls_security_level = may
smtpd_tls_received_header = yes
smtpd_tls_auth_only = yes
### 排查故障时,应该使用loglevel 3 ###
smtpd_tls_loglevel = 1
### 证书和密钥文件的路径 ###
smtpd_tls_cert_file = /etc/ssl/certs/postfixcert.pem
smtpd_tls_key_file = /etc/ssl/private/postfixkey.pem
smtpd_use_tls=yes

重启postfix,以启用TLS。

root@mail:~# service postfix restart

至此,postfix已准备对发到和来自服务器的数据进行加密。关于Postfix TLS支持的更多详细信息可以在官方README(http://www.postfix.org/TLS_README.html)中找到。

为Dovecot启用SSL加密

针对加密配置dovecot的方法与postfix大同小异。

首先,自签名证书用openssl来创建:

# openssl req -new -x509 -days 365 -nodes -out /etc/ssl/certs/dovecotcert.pem -keyout /etc/ssl/private/dovecotkey.pem

上面这个命令请求一个新的X.509证书,保持365天有效。-nodes这个可选参数明确规定了存储的私有密钥不应该加密。输出证书文件将是dovecotcert.pem,输出密钥文件将是dovecotkey.pem。

所有的必要参数需要在证书中加以明确指定:

Country Name (2 letter code) [AU]:BD
State or Province Name (full name) [Some-State]:Dhaka
Locality Name (eg, city) []:Dhaka
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:Example.tst
Common Name (e.g. server FQDN or YOUR name) []:mail.example.tst
Email Address []:sarmed@example.tst

下一步,证书路径添加到dovecot配置中。

root@mail:~# vim /etc/dovecot/conf.d/10-ssl.conf
ssl_cert =
ssl_key =

最后,重启dovecot,以便使用新证书启用SSL。

root@mail:~# service dovecot restart

Thunderbird邮件客户端配置

下面这个屏幕快照显示了如何配置Mozilla Thunderbird中的帐户。

如何使用加密技术为邮件服务器保驾护航?

故障排查

首先,确保所有的必要端口在防火墙中已被允许。

其次,试一试通过telnet连接到邮件服务器。你应该能够连上去。下面给出了几个例子,仅供参考。

连接到IMAPS

$ telnet mail.example.tst 993
Trying mail.example.tst...
Connected to mail.example.tst.
Escape character is '^]'.
exit
exit
Connection closed by foreign host.

连接到POP3S

$ telnet mail.example.tst 995
Trying mail.example.tst...
Connected to mail.example.tst.
Escape character is '^]'.
exit
exit
Connection closed by foreign host.

连接到SMTP

$ telnet mail.example.tst 25
Trying mail.example.tst...
Connected to mail.example.tst.
Escape character is '^]'.
220 mail.example.tst ESMTP Postfix (Ubuntu)
### 命令 ###
ehlo mail.example.tst
250-mail.example.tst
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章