下面详细讲解邮件服务器(Postfix/Dovecot)的SSL证书配置,涵盖SMTP、IMAP、POP3三个协议如下。

一、证书准备

1.  获取证书

商业证书:从CA机构购买(DigiCert、Let's  Encrypt等)

Let's  Encrypt免费证书:

bash

安装certbot

sudo  apt  install  certbot

获取证书(假设域名为mail.example.com)

sudo  certbot  certonly  --standalone  -d  mail.example.com

证书位置:

/etc/letsencrypt/live/mail.example.com/

      ├──  fullchain.pem    #  证书链(服务器证书+中间证书)

      ├──  privkey.pem        #  私钥

      └──  chain.pem            #  中间证书

2.  自签名证书(测试环境)

bash

生成私钥和自签名证书

sudo  openssl  req  -x509  -nodes  -days  365  -newkey  rsa:2048  \

        -keyout  /etc/ssl/private/mail.key  \

        -out  /etc/ssl/certs/mail.crt  \

        -subj  "/CN=mail.example.com"

二、Postfix  (SMTP)  配置

1.  主配置文件  /etc/postfix/main.cf

bash

TLS/SSL配置

smtpd_tls_cert_file  =  /etc/letsencrypt/live/mail.example.com/fullchain.pem

smtpd_tls_key_file  =  /etc/letsencrypt/live/mail.example.com/privkey.pem

启用TLS

smtpd_use_tls  =  yes

smtpd_tls_security_level  =  may

smtpd_tls_auth_only  =  yes

强制TLS连接(可选,更安全)

smtpd_tls_security_level  =  encrypt

TLS协议版本

smtpd_tls_protocols  =  !SSLv2,  !SSLv3,  !TLSv1,  !TLSv1.1

smtpd_tls_ciphers  =  high

SMTP提交端口587的TLS配置

submission  inet  n              -              y              -              -              smtpd

    -o  syslog_name=postfix/submission

    -o  smtpd_tls_security_level=encrypt

    -o  smtpd_sasl_auth_enable=yes

2.  重启Postfix

bash

sudo  systemctl  restart  postfix

三、Dovecot  (IMAP/POP3)  配置

1.  SSL配置  /etc/dovecot/conf.d/10-ssl.conf

bash

启用SSL

ssl  =  required

证书路径

ssl_cert  =  </etc/letsencrypt/live/mail.example.com/fullchain.pem

ssl_key  =  </etc/letsencrypt/live/mail.example.com/privkey.pem

安全配置

ssl_prefer_server_ciphers  =  yes

ssl_cipher_list  =  ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384

ssl_protocols  =  !SSLv3  !TLSv1  !TLSv1.1

DH参数(增强安全性)

ssl_dh  =  </usr/share/dovecot/dh.pem

生成DH参数(如果没有)

sudo  openssl  dhparam  -out  /etc/dovecot/dh.pem  4096

2.  配置端口  /etc/dovecot/conf.d/10-master.conf

bash

service  imap-login  {

    inet_listener  imap  {

        port  =  143

        ssl  =  no    #  STARTTLS

    }

    inet_listener  imaps  {

        port  =  993

        ssl  =  yes    #  SSL/TLS

    }

}


service  pop3-login  {

    inet_listener  pop3  {

        port  =  110

        ssl  =  no    #  STARTTLS

    }

    inet_listener  pop3s  {

        port  =  995

        ssl  =  yes    #  SSL/TLS

    }

}

3.  重启Dovecot

bash

sudo  systemctl  restart  dovecot

四、防火墙配置

bash

开放邮件端口

sudo  ufw  allow  25        #  SMTP

sudo  ufw  allow  465      #  SMTPS(隐式SSL)

sudo  ufw  allow  587      #  SMTP提交(STARTTLS)

sudo  ufw  allow  993      #  IMAPS

sudo  ufw  allow  995      #  POP3S

sudo  ufw  allow  143      #  IMAP(STARTTLS)

sudo  ufw  allow  110      #  POP3(STARTTLS)

五、Let's  Encrypt自动续期

bash

创建续期脚本

sudo  nano  /etc/cron.daily/certbot-renew

!/bin/bash

certbot  renew  --quiet  --post-hook  "systemctl  reload  postfix  dovecot"

添加执行权限

sudo  chmod  +x  /etc/cron.daily/certbot-renew

六、测试配置

1.  检查证书

bash

检查证书信息

openssl  x509  -in  /etc/letsencrypt/live/mail.example.com/fullchain.pem  -text  -noout

测试SMTP  TLS

openssl  s_client  -connect  mail.example.com:587  -starttls  smtp

测试IMAPS

openssl  s_client  -connect  mail.example.com:993

测试POP3S

openssl  s_client  -connect  mail.example.com:995

2.  在线测试工具

SSL  Labs:检查SSL配置安全性

CheckTLS:测试邮件服务器TLS配置

七、常见问题解决

1.  权限问题

bash

#  确保私钥权限正确

sudo  chmod  600  /etc/ssl/private/mail.key

sudo  chown  root:root  /etc/ssl/private/mail.key

2.  SELinux问题(CentOS/RHEL)

bash

设置证书文件上下文

sudo  semanage  fcontext  -a  -t  cert_t  "/etc/letsencrypt/live/mail.example.com(/.*)?"

sudo  restorecon  -Rv  /etc/letsencrypt/live/mail.example.com/

3.  日志查看

bash

查看Postfix  TLS日志

sudo  grep  -i  tls  /var/log/mail.log

查看Dovecot  SSL错误

sudo  doveadm  log  find  |  grep  -i  ssl

八、安全建议

强制使用TLS:生产环境建议设置为encrypt级别

禁用弱协议:禁用SSLv2、SSLv3、TLSv1.0、TLSv1.1

定期更新:关注安全公告,及时更新TLS配置

证书监控:设置证书过期提醒

使用强密码套件

bash

ssl_cipher_list  =  ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384

通过上面这样配置后,您的邮件服务器将在SMTP、IMAP、POP3三个协议上都支持安全的SSL证书连接。