我想我接近让我的POSTFIX安装程序,我喜欢。 我运行了一些SMTP在线检查,我的SMTP通过了所有基本的安全testing。
我在Thunderbird中收到证书警告。 我正在使用临时自签名证书,所以我知道为什么会出现证书exception。 这不是我的问题。
我想禁用在SMTP服务器上发送的任何未encryption和未经身份validation的邮件。 我只想使用TLS。
我不确定是否有问题,但是当我连接到Thunderbird时,我收到有关25端口证书的警告。 无论使用哪个连接安全性或端口,我都会收到此警告。 我已经尝试了端口465上的SSL / TLS,587上的STARTTLS,以及端口25上的任何一项。我期望证书在端口465或587上。
另一个困惑是我为什么仍然可以设置Thunderbird使用端口25没有安全性,这个安全例外仍然显示在发送。
这封邮件的发送是否仍然是encryption的?
我有一个我不知道的问题吗? 我怎样才能让我的服务器端口465响应呢?
smtp inet n - - - - smtpd -o smtpd_tls_auth_only=yes -o smtp_sasl_auth_enable=no -o smtp_tls_security_level=none # SMTP with TLS on port 587. Currently commented. submission inet n - - - - smtpd -o smtpd_tls_wrappermode=yes -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_enforce_tls=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject_unauth_destination,reject -o smtpd_sasl_tls_security_options=noanonymous -o smtpd_sasl_security_options=noanonymous,noplaintext # SMTP over SSL on port 465. smtps inet n - - - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_tls_auth_only=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject_unauth_destination,reject -o smtpd_sasl_security_options=noanonymous,noplaintext -o smtpd_sasl_tls_security_options=noanonymous
append_dot_mydomain = no biff = no broken_sasl_auth_clients = yes config_directory = /etc/postfix content_filter = amavis:[127.0.0.1]:10024 disable_vrfy_command = yes dovecot_destination_recipient_limit = 1 enable_original_recipient = no header_checks = regexp:/etc/postfix/header_checks inet_interfaces = all mailbox_size_limit = 0 maximal_backoff_time = 8000s maximal_queue_lifetime = 7d minimal_backoff_time = 1000s mydestination = myhostname = localbark.info mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 mynetworks_style = host myorigin = /etc/hostname queue_directory = /var/spool/postfix readme_directory = no recipient_delimiter = + smtp_helo_timeout = 60s smtp_sasl_security_options = noplaintext, noanonymous smtp_tls_note_starttls_offer = yes smtp_tls_security_level = may smtpd_banner = $myhostname ESMTP $mail_name smtpd_client_restrictions = reject_rbl_client sbl.spamhaus.org, reject_rbl_client blackholes.easynet.nl, reject_rbl_client dnsbl.njabl.org smtpd_data_restrictions = reject_unauth_pipelining smtpd_delay_reject = yes smtpd_hard_error_limit = 12 smtpd_helo_required = yes smtpd_helo_restrictions = permit_mynetworks, warn_if_reject reject_non_fqdn_hostname, reject_invalid_hostname, permit smtpd_recipient_limit = 16 smtpd_recipient_restrictions = reject_unauth_pipelining, permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_unauth_destination, check_policy_service inet:127.0.0.1:10023, permit smtpd_relay_restrictions = reject_unauth_pipelining, permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_unauth_destination, check_policy_service inet:127.0.0.1:10023, permit smtpd_sasl_auth_enable = yes smtpd_sasl_authenticated_header = yes smtpd_sasl_path = private/auth smtpd_sasl_security_options = noanonymous smtpd_sasl_type = dovecot smtpd_sender_restrictions = permit_sasl_authenticated, permit_mynetworks, warn_if_reject reject_non_fqdn_sender, reject_unknown_sender_domain, reject_unauth_pipelining, permit smtpd_soft_error_limit = 3 smtpd_tls_CAfile = /rootCA.pem smtpd_tls_cert_file = /device.crt smtpd_tls_key_file = /device.key smtpd_tls_loglevel = 3 smtpd_tls_mandatory_protocols = !SSLv2,!SSLv3 smtpd_tls_received_header = yes smtpd_tls_security_level = may smtpd_tls_session_cache_timeout = 3600s tls_random_source = dev:/dev/urandom unknown_local_recipient_reject_code = 450 virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf, mysql:/etc/postfix/mysql_virtual_alias_domainaliases_maps.cf virtual_gid_maps = static:8 virtual_mailbox_base = /var/vmail virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf, mysql:/etc/postfix/mysql_virtual_mailbox_domainaliases_maps.cf virtual_transport = dovecot virtual_uid_maps = static:150
我的邮件服务器正在使用STARTTLS,但仅在端口25上。邮件在端口25上成功发送。当我尝试在587上使用STARTTLS时,我的邮件客户端(Thunderbird)超时。 这是mail.log文件中的内容
Jan 27 11:55:21 mail2 postfix/submission/smtpd[2229]: initializing the server-side TLS engine Jan 27 11:55:22 mail2 postfix/submission/smtpd[2229]: warning: hostname XXXXXXX.com does not resolve to address XX.XX.XX.XX: Name or service not known Jan 27 11:55:22 mail2 postfix/submission/smtpd[2229]: connect from unknown[XX.XXX.XX.XX] Jan 27 11:55:22 mail2 postfix/submission/smtpd[2229]: setting up TLS connection from unknown[XX.XXX.XX.XX] Jan 27 11:55:22 mail2 postfix/submission/smtpd[2229]: unknown[XX.XXX.XX.XX]: TLS cipher list "aNULL:-aNULL:ALL:!EXPORT:!LOW:+RC4:@STRENGTH" Jan 27 11:55:22 mail2 postfix/submission/smtpd[2229]: SSL_accept:before/accept initialization Jan 27 11:55:22 mail2 postfix/submission/smtpd[2229]: read from 7F3F40B73C60 [7F3F40B86E70] (11 bytes => -1 (0xFFFFFFFFFFFFFFFF)) Jan 27 11:57:11 mail2 postfix/submission/smtpd[2229]: read from 7F3F40B73C60 [7F3F40B86E70] (11 bytes => 0 (0x0)) Jan 27 11:57:11 mail2 postfix/submission/smtpd[2229]: SSL_accept error from unknown[XX.XXX.XX.XX]: lost connection Jan 27 11:57:11 mail2 postfix/submission/smtpd[2229]: lost connection after CONNECT from unknown[XX.XXX.XX.XX] Jan 27 11:57:11 mail2 postfix/submission/smtpd[2229]: disconnect from unknown[XX.XXX.XX.XX]
这里是远程计算机获得的远程login到587
telnet mail.example.com 587 Trying xxx.xxx.xxx.xx... Connected to mail.example.com. Escape character is '^]'. ehlo testing Connection closed by foreign host.
那么,看起来像SMTPD与SMTP混淆。 这两个野兽在后缀方面有不同的目的。 smtpd是SMTP服务器用于接收电子邮件,它绑定到特定的端口(例如25,587,465)。 smtp是用于发送电子邮件的SMTP客户端,它连接到SMTP服务器端口。
另一个困惑是关于STARTTLS,SMTPS和解密电子邮件。 默认情况下,postfix将发送和接收没有encryption的电子邮件。 对于encryption方法,SMTP有两种模式:STARTTLS和SMTPS。 使用STARTTLS,客户端将以未encryption的forms启动连接,稍后将其升级到encryption的forms。 现在SMTP的SMTPS就像HTTP的HTTPS一样。 与STARTTLS不同,客户端将通过TLS协商启动连接,然后在顶级TLS上启动SMTP聊天。 通常smtpd具有STARTTLS能力,在端口587监听,而STMPS在端口465.在另一个参考中,看到这个问题: 端口465和587有什么不同?
现在,我们将讨论postfix。 默认情况下,postfix中的每个进程都将从main.cf获得configuration(您可以像上面那样通过postconf -n查看更改)。 当然,你可以通过master.cf覆盖每个postfix服务,就像你为三个不同的端口进行smtpd进程一样。 在这种情况下,你想重写这个选项
要closures端口25中的证书警告,只需指定smtpd_tls_security_level = none
smtp inet n - - - - smtpd -o smtpd_tls_auth_only=yes -o smtpd_sasl_auth_enable=no -o smtpd_tls_security_level=none
你可以注意到我用smtp_replace了smtp_参数。 请参阅有关smtpd_tls_security_level的官方文档。
要为端口465启用SMTPS,请使用参数smtpd_tls_wrappermode = yes 。 上面的configuration看起来不错。
现在,因为我们需要在端口587中使用STARTTLS(而不是SMTPS),所以在提交服务中不需要指定smtpd_tls_wrappermode = yes 。 去掉它。
连接到端口587时得到的错误是由此smtpd_tls_wrappermode参数引起的。 Postfix期望您使用encryptionstream量进行通话,并以纯文本forms指定命令。
参数-o smtpd_tls_wrappermode=yes导致邮件服务器不响应传输协议。 一旦我在master.cf中删除了这个参数,EHLO得到了587端口上telnet的响应,而Thunderbird邮件客户端成功的发送了587端口上的邮件,而不是25个。所以这里是我提交的master.cf代码片段( TLS)协议:
submission inet n - - - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_enforce_tls=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject_unauth_destination,reject -o smtpd_sasl_tls_security_options=noanonymous -o smtpd_sasl_security_options=noanonymous,noplaintext # -o smtpd_tls_wrappermode=yes # This one was the issue*****
我想知道如果我只是盲目地看到这导致一个问题。 我在后缀文档或通过serverfault.com,Google等进行的任何search中没有看到任何参考。
希望这有助于未来一些可怜的不幸。 🙂
除了后缀configuration,你应该使用像https://www.wireshark.org/这样的工具来检查传输过程中发生了什么。 您还应该看到STARTTLS和(未encryption)stream量。