JanBox的小站 Exit Reader Mode

搭建自己的邮件系统——TLS安全

还没完>

上一篇文章 搭建自己的邮件系统——能用就行 到最后只是简单的搭建了一个可以简单使用的邮件服务器,发信很多都会被拒,日志报错 无法连接到对方的25端口,毕竟这是不安全的,既然是不安全的,我们就把它弄安全一下

环境

同上 需要有web 服务,例如apache之类,以用于验证域名域名身份

update Oct 20,2018:可以使用 acme.sh 通过dns方式获取证书

获取 SSL 证书、

你可以选择自签一个证书,但我还是选择 Let‘s Encrypt 上签一个,获取证书的方式一样

先创建 RSA 私钥用于 Let’s Encrypt 识别你的身份 openssl genrsa 4096 > account.key,然后签发服务器私钥 openssl genrsa 4096 > domain.key,我使用 acme_tiny 脚本来申请证书。

创建CSR文件

openssl req -new -sha256 -key domain.key -subj "/" -reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(printf "[SAN]\nsubjectAltName=DNS:mail.example.com,DNS:smtp.example.com")) > domain.csr

下载 acme_tiny 脚本

wget https://raw.githubusercontent.com/diafygi/acme-tiny/master/acme_tiny.py

指定文件 申请证书

python acme_tiny.py --account-key ./account.key --csr ./domain.csr --acme-dir /var/www/html/.well-known/acme-challenge/ > ./signed.crt

这里可能需要需要建立 var/www/html/.well-known/acme-challenge/ 文件夹

下载上游CA证书,生成完整的证书链

wget -O - https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem > intermediate.pem
wget -O - https://letsencrypt.org/certs/isrgrootx1.pem > root.pem
cat signed.crt intermediate.pem > chained.pem

配置 postfix

修改 etc/postfix/main.cf 以下内容

smtpd_tls_cert_file=/var/mail/ssl/chained.pem
smtpd_tls_key_file=/var/mail/ssl/domain.key

配置 dovecot

修改/etc/dovecot/conf.d/10-ssl.conf 以下内容

ssl = yes

ssl_cert = /var/mail/ssl/chained.pem
ssl_key = /var/mail/ssl/domain.key

修改/etc/dovecot/conf.d/
注释掉 ssl_disable = no
修改 /etc/dovecot/conf.d/10-master.conf

以下行段去掉注释

inet_listener imaps {
    port = 993
    ssl = yes
  }
inet_listener pop3s {
    port = 995
    ssl = yes
  }

重启两个服务,这样,你跟服务器之间的通讯也是安全的了

update Jan 31, 2018: 用 ssl-tools 检测 ,报告了两个威胁,说是仍在使用RC4加密,就在etc/postfix/main.cf 文件中 加入了

smtpd_tls_exclude_ciphers = RC4
smtp_tls_exclude_ciphers = RC4