OpenSSL在Apache和Dovecot 下的使用(二)

本篇中,Carla Schroder 会解释如何使用 OpenSSL 保护你的 Postfix/Dovecot 邮件服务器

在上周,作为我们 OpenSSL 系列的一部分,我们学习了如何配置 Apache 以使用 OpenSSL 并强制所有会话使用 HTTPS。 今天,我们将使用 OpenSSL 保护我们的 Postfix/Dovecot 邮件服务器。这些示例基于前面的教程; 请参阅最后的参考资料部分,了解本系列中以前的所有教程的链接。

你需要配置 Postfix 以及 Dovecot 都使用 OpenSSL,我们将使用我们在OpenSSL 在 Apache 和 Dovecot 下的使用(一)中创建的密钥和证书。

Postfix 配置

你必须编辑 /etc/postfix/main.cf 以及 /etc/postfix/master.cf。实例的 main.cf 是完整的配置,基于我们先前的教程。替换成你自己的 OpenSSL 密钥和证书名以及本地网络地址。


  1. compatibility_level=2 
  2. smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu/GNU) 
  3. biff = no 
  4. append_dot_mydomain = no 
  5. myhostname = localhost 
  6. alias_maps = hash:/etc/aliases 
  7. alias_database = hash:/etc/aliases 
  8. myorigin = $myhostname 
  9. mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.0.0/24 
  10. mailbox_size_limit = 0 
  11. recipient_delimiter = + 
  12. inet_interfaces = all 
  13. virtual_mailbox_domains = /etc/postfix/vhosts.txt 
  14. virtual_mailbox_base = /home/vmail 
  15. virtual_mailbox_maps = hash:/etc/postfix/vmaps.txt 
  16. virtual_minimum_uid = 1000 
  17. virtual_uid_maps = static:5000 
  18. virtual_gid_maps = static:5000 
  19. virtual_transport = lmtp:unix:private/dovecot-lmtp 
  20. smtpd_tls_cert_file=/etc/ssl/certs/test-com.pem 
  21. smtpd_tls_key_file=/etc/ssl/private/test-com.key 
  22. smtpd_use_tls=yes 
  23. smtpd_sasl_auth_enable = yes 
  24. smtpd_sasl_type = dovecot 
  25. smtpd_sasl_path = private/auth 
  26. smtpd_sasl_authenticated_header = yes 

在 master.cf 取消 submission inet 部分的注释,并编辑 smtpd_recipient_restrictions:


  1. #submission inet n  -  y  -  - smtpd 
  2.   -o syslog_name=postfix/submission 
  3.   -o smtpd_tls_security_level=encrypt 
  4.   -o smtpd_sasl_auth_enable=yes 
  5.   -o milter_macro_daemon_name=ORIGINATING 
  6.   -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject 
  7.   -o smtpd_tls_wrappermode=no 

完成后重新加载 Postfix:


  1. $ sudo service postfix reload 

Dovecot 配置

在我们以前的教程中,我们为 Dovecot 创建了一个单一配置文件 /etc/dovecot/dovecot.conf,而不是使用多个默认配置文件。这是一个基于我们以前的教程的完整配置。再说一次,使用你自己的 OpenSSL 密钥和证书,以及你自己的 userdb 的 home 文件:


  1. protocols = imap pop3 lmtp 
  2. log_path = /var/log/dovecot.log 
  3. info_log_path = /var/log/dovecot-info.log 
  4. disable_plaintext_auth = no 
  5. mail_location = maildir:~/.Mail 
  6. pop3_uidl_format = %g 
  7. auth_mechanisms = plain 
  8. passdb { 
  9.   driver = passwd-file 
  10.   args = /etc/dovecot/passwd 
  11. userdb { 
  12.   driver = static 
  13.   args = uid=vmail gid=vmail home=/home/vmail/studio/%u 
  14. service lmtp { 
  15.  unix_listener /var/spool/postfix/private/dovecot-lmtp { 
  16.    group = postfix 
  17.    mode = 0600 
  18.    user = postfix 
  19.   } 
  20. protocol lmtp { 
  21.   postmaster_address = postmaster@studio 
  22. service lmtp { 
  23.   user = vmail 
  24. service auth { 
  25.   unix_listener /var/spool/postfix/private/auth { 
  26.     mode = 0660 
  27.         user=postfix 
  28.         group=postfix 
  29.   } 
  30.  } 
  31. ssl=required 
  32. ssl_cert = </etc/ssl/certs/test-com.pem 
  33. ssl_key = </etc/ssl/private/test-com.key 

重启 Dovecot:


  1. $ sudo service postfix reload 

用 telnet 测试

就像我们以前一样,现在我们可以通过使用 telnet 发送消息来测试我们的设置。 但是等等,你说 telnet 不支持 TLS/SSL,那么这样怎么办呢?首先通过使用 openssl s_client 打开一个加密会话。openssl s_client 的输出将显示你的证书及其指纹和大量其它信息,以便你知道你的服务器正在使用正确的证书。会话建立后输入的命令都是不以数字开头的:


  1. $ openssl s_client -starttls smtp -connect studio:25 
  2. CONNECTED(00000003) 
  3. [masses of output snipped] 
  4.     Verify return code: 0 (ok) 
  5. --- 
  6. 250 SMTPUTF8 
  7. EHLO studio 
  8. 250-localhost 
  9. 250-PIPELINING 
  10. 250-SIZE 10240000 
  11. 250-VRFY 
  12. 250-ETRN 
  13. 250-AUTH PLAIN 
  14. 250-ENHANCEDSTATUSCODES 
  15. 250-8BITMIME 
  16. 250-DSN 
  17. 250 SMTPUTF8 
  18. mail from: <carla@domain.com> 
  19. 250 2.1.0 Ok 
  20. rcpt to: <alrac@studio> 
  21. 250 2.1.5 Ok 
  22. data 
  23. 354 End data with .subject: TLS/SSL test 
  24. Hello, we are testing TLS/SSL. Looking good so far. 
  25. 250 2.0.0 Ok: queued as B9B529FE59 
  26. quit 
  27. 221 2.0.0 Bye 

你应该可以在邮件客户端中看到一条新邮件,并在打开时要求你验证 SSL 证书。你也可以使用 openssl s_client 来测试 Dovecot 的 POP3 和 IMAP 服务。此示例测试加密的 POP3,第 5 号消息是我们在 telnet(如上)中创建的:


  1. $ openssl s_client -connect studio:995 
  2. CONNECTED(00000003) 
  3. [masses of output snipped] 
  4.     Verify return code: 0 (ok) 
  5. --- 
  6. +OK Dovecot ready 
  7. user alrac@studio  
  8. +OK 
  9. pass password 
  10. +OK Logged in. 
  11. list 
  12. +OK 5 messages: 
  13. 1 499 
  14. 2 504 
  15. 3 514 
  16. 4 513 
  17. 5 565 
  18. retr 5 
  19. +OK 565 octets 
  20. Return-Path: <carla@domain.com> 
  21. Delivered-To: alrac@studio 
  22. Received: from localhost 
  23.         by studio.alrac.net (Dovecot) with LMTP id y8G5C8aablgKIQAAYelYQA 
  24.         for <alrac@studio>; Thu, 05 Jan 2017 11:13:10 -0800 
  25. Received: from studio (localhost [127.0.0.1]) 
  26.         by localhost (Postfix) with ESMTPS id B9B529FE59 
  27.         for <alrac@studio>; Thu,  5 Jan 2017 11:12:13 -0800 (PST) 
  28. subject: TLS/SSL test 
  29. Message-Id: <20170105191240.B9B529FE59@localhost> 
  30. Date: Thu,  5 Jan 2017 11:12:13 -0800 (PST) 
  31. From: carla@domain.com 
  32. Hello, we are testing TLS/SSL. Looking good so far. 
  33. quit 
  34. +OK Logging out. 
  35. closed 

现在做什么?

现在你有一个功能良好的,具有合适的 TLS/SSL 保护的邮件服务器了。我鼓励你深入学习 Postfix 以及 Dovecot; 这些教程中的示例尽可能地简单,不包括对安全性、防病毒扫描程序、垃圾邮件过滤器或任何其他高级功能的调整。我认为当你有一个基本工作系统时更容易学习高级功能。

下周回到 openSUSE 包管理备忘录上。

作者:CARLA SCHRODER

来源:51CTO

时间: 2024-09-10 18:24:26

OpenSSL在Apache和Dovecot 下的使用(二)的相关文章

OpenSSL在Apache和Dovecot 下的使用(一)

在这有两部分的系列中,Carla Schroder 会向你展示如何创建自己的 OpenSSL 证书以及如何配置 Apache 和 Dovecot 来使用它们. 这么长时间之后,我的读者们,这里是我给你们承诺的在 Apache 中使用 OpenSSL 的方法,下周你会看到在 Dovecot 中使用 SSL. 在这个分为两部分的系列中,我们将学习如何创建自己的 OpenSSL 证书,以及如何配置 Apache 和 Dovecot 来使用它们. 这些例子基于这些教程: 给初学者看的在 Ubuntu L

OpenSSL 在 Apache 和 Dovecot 下的使用(二)

Postfix 配置 你必须编辑 /etc/postfix/main.cf 以及 /etc/postfix/master.cf.实例的 main.cf 是完整的配置,基于我们先前的教程.替换成你自己的 OpenSSL 密钥和证书名以及本地网络地址. compatibility_level=2 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu/GNU) biff = no append_dot_mydomain = no myhostname

OpenSSL 在 Apache 和 Dovecot 下的使用(一)

创建你的证书 Debian/Ubuntu/Mint 会在 /etc/ssl 中存储私钥和证书的符号链接.系统自带的证书保存在/usr/share/ca-certificates 中.你安装或创建的证书在 /usr/local/share/ca-certificates/中. 这个例子是对 Debian 而言.创建私钥和公用证书,将证书转换为正确的格式,并将其符号链接到正确的目录: $ sudo openssl req -x509 -days 365 -nodes -newkey rsa:2048

Ubuntu使用带OpenSSL的Apache HTTP服务器提供安全web页服务

本指南主要是向读者介绍安全套接层,(SSL)应用级协议,以及 SSL 在 http://www.aliyun.com/zixun/aggregation/9511.html">OpenSSL 上的特定实现.在简要介绍 OpenSSL 是什么,它对什么有用之后,本指南将在客户-服务器环境中举例说明 OpenSSL 的特定用法,并提供应用程序从 OpenSSL 中获利的典型示例.最后,本指南通过演示从您 Ubuntu 计算机要求使用带 OpenSSL 的 Apache 超文本传输协议(HTTP

PHP+Apache在Win9x下的安装和配置

apache 在PHP邮件列表中问得最多的问题可能就是:"如何在我的Windows机器上安装PHP?",那么也许我可以帮助回答这个问题.当你正确安装完成后,你会发现在Windows下开发PHP程序还是不错的. 本教程的目的是向你展示如何用"Apache和Windows"的组合来开发PHP程序. 教程中如未指明具体版本,则PHP为PHP3或PHP4 Beta 2或3,Apache为 1.3.x. 一.安装Apache 首先,你须要一个WEB服务器,我推荐Apache.

php+apache在windows下 国际化(多语言切换不成功)

问题描述 php+apache在windows下 国际化(多语言切换不成功) 5C OS: win7 64环境:wampserver 64位 (php5.4.12 +apache2.4.4)安装运行成功 php_gettext.dll开启前提:语言文件 *.mo 及 *.po 存在&路径没问题&编码为UTF-8如图 <?php $lan = $_REQUEST [ 'lan' ]; if ( $lan == 'zh_CN' ){ putenv('LANG=zh_CN' ); pute

java-linux 部署项目启动时报struts.apache.org windows下项目没报错

问题描述 linux 部署项目启动时报struts.apache.org windows下项目没报错 10:34:24,218 ERROR [STDERR] Nested exception: 10:34:24,218 ERROR [STDERR] java.net.UnknownHostException:0:34:23,146 INFO [ConnectionFactoryBindingService] Bound ConnectionManager 'jboss.jca:service=D

apache在win2003下的安全设置方法_win服务器

如果web服务器的所有资源都在本地系统上,这样做会问题比较少,但是将会具有很 大的安全 权限来影响本地机器,因此千万不能开启System帐号的网络权限! 于是要创建一个新的帐户来替代这个帐号启动apache并设置相应的权限: 1.在计算机管理里的本地用户和组里面创建一个帐户,例如:apache,密码设置为 apacheuser,加入guests组(如果出现问题,可以赋予user权限): 2.打开开始->管理工具->本地安全策略,在用户权限分配中选择"作为服务登陆",添加ap

apache在win2003下的安全设置(配合文件夹权限目录,很好很安全)_Linux

于是要创建一个新的帐户来替代这个帐号启动apache并设置相应的权限: 1.在计算机管理里的本地用户和组里面创建一个帐户,例如:apache,密码设置为 apacheuser,加入guests组(如果出现问题,可以赋予user权限): 2.打开开始->管理工具->本地安全策略,在用户权限分配中选择"作为服务登陆",添加apache用 户: 3.计算机管理里面选择服务,找到apache2.2,先停止服务,右击->属性,选择登陆,把单选框从本地系统帐户切换到此帐户,然后查