我开始构build我的第一个云服务器:带有Postfix的Ubuntu 16.04。
问题是我如何configuration后缀使用TLSv1.2当我从我的网上商店发送邮件?
当我的网店发送邮件到我的后缀服务器它使用TLSv1这里是日志:
postfix/submission/smtpd[19111]: Anonymous TLS connection established from domainname.com[xxx.xxx.xxx.xxx]: TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)
在我的网店我设置在configuration:使用:TLS端口:587
谢谢J
My server info: Ubuntu 16.04 postfix: Installed: 3.1.0-3 openssl: Installed: 1.0.2h-1+deb.sury.org~xenial+1
这里是从后缀日志:可以看到邮件进来与TLSv1 … 🙁
Sep 19 19:10:56 ubuntu postfix/master[6992]: daemon started -- version 3.1.0, configuration /etc/postfix Sep 19 19:11:04 ubuntu postfix/submission/smtpd[7126]: connect from domainname.com[xxx.xxx.xxx.xxx] Sep 19 19:11:04 ubuntu postfix/submission/smtpd[7126]: Anonymous TLS connection established from domainname.com[xxx.xxx.xxx.xxx]: TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits) Sep 19 19:11:04 ubuntu postfix/submission/smtpd[7126]: 803AB41C0A: client=domainname.com[xxx.xxx.xxx.xxx], sasl_method=LOGIN, sasl_username=raitis Sep 19 19:11:04 ubuntu postfix/cleanup[7131]: 803AB41C0A: message-id=<[email protected]> Sep 19 19:11:04 ubuntu postfix/qmgr[7010]: 803AB41C0A: from=<[email protected]>, size=694, nrcpt=1 (queue active) Sep 19 19:11:04 ubuntu postfix/submission/smtpd[7126]: disconnect from domainname.com[xxx.xxx.xxx.xxx] ehlo=2 starttls=1 auth=1 mail=1 rcpt=1 data=1 quit=1 commands=8 Sep 19 19:11:04 ubuntu postfix/smtp[7133]: Trusted TLS connection established to gmail-smtp-in.l.google.com[66.102.1.26]:25: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits) Sep 19 19:11:04 ubuntu postfix/smtp[7133]: 803AB41C0A: to=<[email protected]>, relay=gmail-smtp-in.l.google.com[66.102.1.26]:25, delay=0.43, delays=0.06/0.04/0.2/0.14, dsn=2.0.0, status=sent (250 2.0.0 OK 1474305064 14si1756669wmn.119 - gsmtp) Sep 19 19:11:04 ubuntu postfix/qmgr[7010]: 803AB41C0A: removed
master.cf
smtp inet n - - - - smtpd smtpd pass n - - - - smtpd submission inet n - - - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=may -o smtpd_sasl_auth_enable=yes -o smtpd_sasl_security_options=noanonymous -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o smtpd_relay_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING -o smtp_tls_mandatory_protocols=TLSv1 #628 inet n - y - - qmqpd pickup unix n - y 60 1 pickup cleanup unix n - y - 0 cleanup qmgr unix n - n 300 1 qmgr #qmgr unix n - n 300 1 oqmgr tlsmgr unix - - y 1000? 1 tlsmgr rewrite unix - - y - - trivial-rewrite bounce unix - - y - 0 bounce defer unix - - y - 0 bounce trace unix - - y - 0 bounce verify unix - - y - 1 verify flush unix n - y 1000? 0 flush proxymap unix - - n - - proxymap proxywrite unix - - n - 1 proxymap smtp unix - - y - - smtp relay unix - - y - - smtp # -o smtp_helo_timeout=5 -o smtp_connect_timeout=5 showq unix n - y - - showq error unix - - y - - error retry unix - - y - - error discard unix - - y - - discard local unix - nn - - local virtual unix - nn - - virtual lmtp unix - - y - - lmtp anvil unix - - y - 1 anvil scache unix - - y - 1 scache # # ==================================================================== # Interfaces to non-Postfix software. Be sure to examine the manual # pages of the non-Postfix software to find out what options it wants. # # Many of the following services use the Postfix pipe(8) delivery # agent. See the pipe(8) man page for information about ${recipient} # and other message envelope options. # ==================================================================== # # maildrop. See the Postfix MAILDROP_README file for details. # Also specify in main.cf: maildrop_destination_recipient_limit=1 # maildrop unix - nn - - pipe flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient} # # ==================================================================== # # Recent Cyrus versions can use the existing "lmtp" master.cf entry. # # Specify in cyrus.conf: # lmtp cmd="lmtpd -a" listen="localhost:lmtp" proto=tcp4 # # Specify in main.cf one or more of the following: # mailbox_transport = lmtp:inet:localhost # virtual_transport = lmtp:inet:localhost # # ==================================================================== # # Cyrus 2.1.5 (Amos Gouaux) # Also specify in main.cf: cyrus_destination_recipient_limit=1 # #cyrus unix - nn - - pipe # user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user} # # ==================================================================== # Old example of delivery via Cyrus. # #old-cyrus unix - nn - - pipe # flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user} # # ==================================================================== # # See the Postfix UUCP_README file for configuration details. # uucp unix - nn - - pipe flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient) # # Other external delivery methods. # ifmail unix - nn - - pipe flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient) bsmtp unix - nn - - pipe flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient scalemail-backend unix - nn - 2 pipe flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension} mailman unix - nn - - pipe flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user}
TLS 1.0版通常被认为是不安全的,这就是为什么你被要求closures它。 有两个潜在的错误影响了TLS v1.0:BEAST和POODLE。 TLS 1.0的问题稍后才发现,与SSL v3稍有不同(请参阅此讨论 ),但它们通常被视为相同。
但是,为了使Postfix兼容,我所做的工作是防止在main.cf使用SSL v2 / 3和TLS v1.0以下内容:
smtpd_tls_mandatory_protocols = !SSLv2,!SSLv3,!TLSv1 smtp_tls_mandatory_protocols = !SSLv2,!SSLv3,!TLSv1 smtpd_tls_protocols = !SSLv2,!SSLv3,!TLSv1 smtp_tls_protocols = !SSLv2,!SSLv3,!TLSv1
我没有改变master.cf任何东西。
我也阻止基本的encryption协议:
smtpd_tls_exclude_ciphers = RC4, aNULL
作为一个方面说明,你还需要强制以下两行的某种forms的encryption:
smtpd_tls_security_level = encrypt smtp_tls_security_level = encrypt
这可能会有各种副作用,所以你可能想要做任何这样的变化,使永久变化之前。 例如, mailman似乎根本不支持encryption。
男人5 postconf:
smtp_tls_mandatory_protocols (default: !SSLv2) List of SSL/TLS protocols that the Postfix SMTP client will use with mandatory TLS encryption. In main.cf the values are separated by whitespace, commas or colons. In the policy table "protocols" attribute (see smtp_tls_policy_maps) the only valid separator is colon. An empty value means allow all protocols. The valid protocol names, (see \fBfBSSL_get_version(3)), are "SSLv2", "SSLv3" and "TLSv1". Note: As of OpenSSL 1.0.1 two new protocols are defined, "TLSv1.1" and "TLSv1.2". If an older Postfix version is linked against OpenSSL 1.0.1 or later, these, or any other new protocol versions, are unconditionally enabled. With Postfix >= 2.5 the parameter syntax is expanded to support protocol exclusions. One can now explicitly exclude SSLv2 by setting "smtp_tls_mandatory_protocols = !SSLv2". To exclude both SSLv2 and SSLv3 set "smtp_tls_mandatory_protocols = !SSLv2, !SSLv3". Listing the protocols to include, rather than protocols to exclude, is supported, but not recommended. The exclusion form more closely matches the behaviour when the OpenSSL library is newer than Postfix. Since SSL version 2 has known protocol weaknesses and is now deprecated, the default setting excludes "SSLv2". This means that by default, SSL version 2 will not be used at the "encrypt" security level and higher. See the documentation of the smtp_tls_policy_maps parameter and TLS_README for more information about security levels. Example: # Preferred form with Postfix >= 2.5: smtp_tls_mandatory_protocols = !SSLv2, !SSLv3 # Alternative form. smtp_tls_mandatory_protocols = TLSv1 This feature is available in Postfix 2.3 and later.
首先,确保你有OpenSSL 1.0.1或更新版本,至lessPostfix 2.3或更新(因为只有这个组合可以支持TLSv1.1和TLSv1.2)。 较旧的OpenSSL将不支持TLSv1.2,较旧的Postfix版本有非常基本的SSL或TLS支持。
如果你的Postfix早于2.5,OpenSSL 1.0.1或更新版本,那么TLSv1.1和TLSv1.2协议是无条件启用的,就像@rudimeier提到的那样。 在这种情况下,你无事可做,Postfix会自动检测你的连接是否最好。 如果这不符合你的期望,那么你应该考虑升级你的Postfix到一个更新的版本(不仅仅是因为这个问题,而是因为Postfix现在是2.11,而2.5很老)。
如果你有Postfix 2.5.0或更新版本,在/etc/postfix/master.cf中将需要进行以下修改:
submission inet n - - - - smtpd -o smtp_tls_mandatory_protocols=TLSv1
请记住:如果您在submission行下方定义了其他选项,则不应删除它们,只需在其下方添加这个新选项即可。 如果smtp_tls_mandatory_protocols选项已经存在于选项列表中,请不要再添加它,而是将该值修改为所提到的TLSv1 。 永远不要复制你的submission行,这可能会导致Postfix拒绝启动。