如何在postfix中加密外发电子邮件

问题描述:

我已经在几个在线指南中设置了postfix和dovecot,并始终存在我发送的电子邮件不会被加密的问题。 我一直在通过发送电子邮件到我的@ gmail.com帐户来测试设置,因为我确信谷歌服务器将支持TLS加密,并且Gmail邮件webmail中的电子邮件清楚地显示红色划掉的挂锁以显示它们未加密。如何在postfix中加密外发电子邮件

如果我设置

smtpd_tls_security_level = encrypt 
smtp_tls_security_level = encrypt 

我得到这个错误

TLS is required, but was not offered by host gmail-smtp-in.l.google.com[64.233.167.27] 

如果我将它设置为可发送电子邮件,而无需对其进行加密。

这是postconf的输出-n

alias_database = hash:/etc/aliases 
alias_maps = hash:/etc/aliases 
append_dot_mydomain = no 
biff = no 
home_mailbox = Maildir/ 
inet_interfaces = all 
inet_protocols = all 
mailbox_command = 
mailbox_size_limit = 0 
mydestination = $myhostname, localdomain, localhost, localhost.localdomain, localhost, mail.example.com, example.com 
myhostname = mail.example.com 
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 
mynetworks_style = subnet 
myorigin = /etc/mailname 
readme_directory = no 
recipient_delimiter = + 
smtp_tls_CAfile = /routeto/my.ca-bundle 
smtp_tls_cert_file = /routeto/my.crt 
smtp_tls_key_file = /routeto/my.key 
smtp_tls_loglevel = 1 
smtp_tls_note_starttls_offer = yes 
smtp_tls_security_level = may 
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache 
smtp_use_tls = yes 
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) 
smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unknown_client_hostname 
smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination 
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination 
smtpd_sasl_auth_enable = yes 
smtpd_sasl_local_domain = example.com 
smtpd_sasl_path = private/auth 
smtpd_sasl_type = dovecot 
smtpd_tls_CAfile = /routeto/my.ca-bundle 
smtpd_tls_cert_file = /routeto/my.crt 
smtpd_tls_key_file = /routeto/my.key 
smtpd_tls_loglevel = 1 
smtpd_tls_received_header = yes 
smtpd_tls_security_level = may 
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache 
smtpd_use_tls = yes 

,这是一个远程登录的输出端口25上,接着EHLO测试

250-mail.example.com 
250-PIPELINING 
250-SIZE 10240000 
250-VRFY 
250-ETRN 
250-STARTTLS 
250-AUTH PLAIN LOGIN 
250-ENHANCEDSTATUSCODES 
250-8BITMIME 
250 DSN 

和在端口587

同样的事情
250-mail.example.com 
250-PIPELINING 
250-SIZE 10240000 
250-VRFY 
250-ETRN 
250-STARTTLS 
250-ENHANCEDSTATUSCODES 
250-8BITMIME 
250 DSN 

TLS是必需的,但没有提供主机gmail-smtp-in.l.google.com [64.233.167.27]

这清楚地表明,主机不会向您的服务器提供STARTTLS。但是,众所周知,gmail提供了STARTTLS,并且您使用telnet进行测试来确认它。我的猜测是你从另一个系统中完成了远程登录,并且你的邮件服务器位于某个(透明)防火墙后面,该防火墙拦截了流量来分析它。为了不处理加密的SMTP流量,通常只需从服务器对EHLO的响应中剥离STARTTLS命令,以便邮件服务器假定不支持TLS。请参阅What happens if STARTTLS dropped in SMTP?

+0

服务器是运行全新安装的Ubuntu 16.04的VPS,我相信它没有运行任何防火墙,所以我不知道下一步该怎么做。 –

+0

我发布的telnet输出实际上是我自己的服务器,但现在你已经说过了,从我自己的测试Gmail服务器更合理,你是完全正确的,这是我的服务器的谷歌服务器测试 '250-mx.google.com为您服务,250-SIZE 157286400 250-8BITMIME 250-ENHANCEDSTATUSCODES 250 SMTPUTF8' 并且这与我自己的笔记本电脑相同'250-SIZE 157286400 250-8BITMIME 250-STARTTLS 250- ENHANCEDSTATUSCODES 250-PIPELINING 250-CHUNKING 250 SMTPUTF8' STARTTLS未提供给我的服务器... –

+0

@DuncanConnolly:拦截防火墙通常不在本地系统上,即防火墙在网络中的其他地方,但在真正的服务器的路径。 –