![Postfix 允许未经身份验证的用户发送电子邮件](https://linux22.com/image/1405512/Postfix%20%E5%85%81%E8%AE%B8%E6%9C%AA%E7%BB%8F%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%E7%9A%84%E7%94%A8%E6%88%B7%E5%8F%91%E9%80%81%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6.png)
嘿,我设置了 Postfix 来使用cyrus
SASL 植入,并且我能够登录和发送电子邮件,但是即使我未经身份验证,我仍然可以通过端口 25 进行 telnet 并发送邮件,而我希望拒绝这一点。
smtp_sasl
我的一部分main.cf
:
smtpd_sasl_path = smtpd
smtpd_sasl_type = cyrus
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_security_options = noanonymous
smtpd_recipient_restrictions = reject_non_fqdn_recipient, reject_non_fqdn_sender, reject_unlisted_recipient, permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, reject_invalid_hostname, reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_rbl_client, sbl-xbl.spamhaus.org, reject_rbl_client, bl.spamcop.net, reject_rbl_client, list.dsbl.org, reject_rbl_client, rbl.mail-abuse.org, reject_rbl_client, spamsources.fabel.dk
完整配置这里
我是不是忘了什么?
Telnet 日志:
=~=~=~=~=~=~=~=~=~=~=~= PuTTY log 2014.04.20 16:10:32 =~=~=~=~=~=~=~=~=~=~=~=
220 the999ers.eu ESMTP Postfix (Debian/GNU)
ehlo kim-nuernberger.eu
250-the999ers.eu
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
MAIL FROM: [email protected]
250 2.1.0 Ok
RCPT TO: [email protected]
DATA
250 2.1.5 Ok
354 End data with <CR><LF>.<CR><LF>
Subject: test
This is a test mail
.
250 2.0.0 Ok: queued as B82481DF1CE
quit
221 2.0.0 Bye
这是从我的当地的PC 和我通过我的域名连接kim-nuernberger.eu
。
Postfix 日志(/var/log/mail.log)
Apr 20 16:31:37 The999ers postfix/smtpd[16420]: connect from unknown[2a03:4000:2:206::1]
Apr 20 16:31:57 The999ers postfix/smtpd[16420]: 25CED1DF1CE: client=unknown[2a03:4000:2:206::1]
Apr 20 16:32:13 The999ers postfix/cleanup[16425]: 25CED1DF1CE: message-id=<[email protected]>
Apr 20 16:32:13 The999ers postfix/qmgr[16407]: 25CED1DF1CE: from=<[email protected]>, size=385, nrcpt=1 (queue active)
Apr 20 16:32:14 The999ers postfix/smtp[16426]: 25CED1DF1CE: to=<[email protected]>, orig_to=<[email protected]>, relay=mx4.hotmail.com[65.55.37.104]:25, delay=25, delays=23/0.01/0.47/1.1, dsn=2.0.0, status=sent (250 <[email protected]> Queued mail for delivery)
Apr 20 16:32:14 The999ers postfix/qmgr[16407]: 25CED1DF1CE: removed
Apr 20 16:32:14 The999ers postfix/smtpd[16420]: disconnect from unknown[2a03:4000:2:206::1]
注意:我修复了一些不必要的问题后更新了日志。
答案1
这是因为您可能之前尝试过从服务器(即telnet localhost 25
)本身发送邮件,因此(在您的情况下)中列出的客户端不需要进行身份验证。重新安排限制以实现您想要的效果。smtpd_recipient_restrictions
permit_mynetworks
permit_sasl_authenticated
mynetworks
localhost
更多信息:postfix 文档
编辑1:
感谢 telnet 和 postfix 日志。postfix 不需要身份验证即可接收其在mydestination
、relay_domains
virtual_alias_domains
和下处理的域的邮件virtual_mailbox_domains
。用户将无法relay
访问外部域(即远程域,例如 gmail.com),除非他们进行身份验证,这是预期的行为。
答案2
您可以强制用户在发送电子邮件之前进行身份验证,不是在 main.conf 上进行更改而是在 master.conf 上进行更改,例如添加提交检查,并拒绝所有内容:
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
这是四年前的事了,但也许会对新人有所帮助。