还没完>
上一篇文章 搭建自己的邮件系统——能用就行 到最后只是简单的搭建了一个可以简单使用的邮件服务器,发信很多都会被拒,日志报错 无法连接到对方的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