从服务器上直接发出的邮件可以先加密再发送,这样一来邮件在传输过程中就不会被中间的某个网关之类的查看或者是检测到邮件内容并过滤。这样至少可以让那些特别热衷于检查和审查私人信息的政府和团体办起事来没那么利索。当然这个只能保证邮件在服务器之间传输的时候是加密的,目标服务器接收到邮件后就会自动解密。所以如果目标邮箱是属于那种没什么坚守的提供商的,加不加密就没多大区别了。
假设已经启用了接受 TLS 认证的电子邮件(应该多数时候都是默认启用的吧——我猜的)。现在就来让服务器发出的电子邮件也是经过加密的(仅针对传输过程而言,有别于先加密邮件内容然后将加密的内容通过邮件发送出去)。
与前面部署 DKIM 一样,这里假设服务器使用了 postfix 服务。
打开 postfix 的配置文件(路径 /etc/postfix/main.cf
),然后添加如下的内容:
smtpd_tls_security_level = may smtp_tls_security_level = may smtp_tls_loglevel = 1 smtpd_tls_loglevel = 1
smtpd_tls_security_level 针对接收的邮件,smtp_tls_security_level 针对发出的邮件。这两种设置都可以有三个不同的参数值:none、may 和 encrypt。这里选择 may 的意义在于,如果接收方不接受加密邮件,那就退回到以不加密的方式发送。
后面两个选项表示针对发起的 TLS 加密连接启用日志记录。可用于检查看是否工作正常,或者检查加密的强度。
配置好之后保存配置并重启 postfix 服务。然后发送一封邮件看看加密连接是否工作正常。
# mail -s "test Encyption" info@cnzhx.net # tail -f /var/log/maillog
前一条指令发送一封邮件。上面后一条指令是查看邮件发送日志。
May 31 06:55:19 cnzhx opendkim[6490]: 86F67118E: DKIM-Signature field added (s=default, d=cnzhx.net) May 31 06:55:19 cnzhx postfix/qmgr[6607]: 86F67118E: from=<root@cnzhx.net>, size=461, nrcpt=1 (queue active) May 31 06:55:20 cnzhx postfix/smtp[6984]: Untrusted TLS connection established to gmail-smtp-in.l.google.com[173.194.72.27]:25: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits) May 31 06:55:21 cnzhx postfix/smtp[6984]: 86F67118E: to=
因为用的是 Google 企业邮箱,所以可以看到下面是建立了到 Gmail 服务器的加密连接来发送邮件的。至于 Google 会不会保持邮件的秘密状态咱就不得而知了。比如在政府命令下,也许这些大公司也不得不公开用户的邮件内容。但是如果接收邮件方运行的是自己的服务器,那么除非服务器被入侵,否则邮件内容就应该是安全的。
参考链接:
- https://support.google.com/mail/answer/6330403
- http://blog.snapdragon.cc/2013/07/07/setting-postfix-to-encrypt-all-traffic-when-talking-to-other-mailservers/
通常这个加密传输可以和 DKIM 联合起来使用,不然别有用心者就可以伪造邮件发送者的邮箱地址了。©
本文发表于水景一页。永久链接:<https://cnzhx.net/blog/encrypt-outbound-mail-on-server/>。转载请保留此信息及相应链接。
很实用啊,谢谢了
谢谢分享!