Postfix 拒绝我通过“联系我们”表单发送的电子邮件,并显示“SMTPRecipientsRefused”

Postfix 拒绝我通过“联系我们”表单发送的电子邮件,并显示“SMTPRecipientsRefused”

我在 Django 中创建了一个“联系我们”表单,其中的 Django 部分似乎可以正常工作。但它生成的电子邮件发送失败,并显示

SMTPRecipientsRefused at /contact/

{'[email protected]': (553, b'5.7.1 <[email protected]>: Sender address rejected: not owned by user [email protected]')}

如果我更改 Django 设置以将电子邮件发送到控制台,它会在控制台中正确显示电子邮件。但是当我尝试将电子邮件发送到我的邮件服务器时,Postfix 似乎阻止了它。据我所知,这是为了防止某人从他们无法控制的电子邮件地址发送电子邮件,但在这种情况下,电子邮件是通过我构建的“联系我们”表单发送的。如果我在表单中输入与收件人相同的电子邮件地址,即[电子邮件保护],电子邮件确实到达了另一端。但如果我输入任何其他电子邮件地址作为 mail_from,就会抛出此错误。

我已经阅读过 Postfix 文档但它们仍然让我感到困惑,有人可以帮忙吗?

答案1

这条消息明确指出发件人地址被拒绝。因此实际上拒绝的不是收件人,而是发件人。SMTPRecipientsRefused引发(可能令人困惑的)异常可能是因为服务器smtpd_delay_reject启用,因此它将继续执行协议并且仅在RCPT TO命令后报告拒绝,即使它在命令之后就决定拒绝交易MAIL FROM

not owned by user ...reject_sender_login_mismatch(或reject_authenticated_sender_login_mismatch)项位于 Postfix 配置中的某个位置,可能位于smtpd_sender_restrictions其正常位置,但也可能位于smtpd_recipient_restrictions或中smtpd_relay_restrictions。这是一件好事,因为它大大增强了服务器对垃圾邮件的安全性。

因此,你的服务器似乎设置了 SMTP 身份验证,并且它还有一些映射从信封发件人地址到 SMTP 登录。某些发件人电子邮件地址只能由某些用户使用。您的应用程序似乎正在以用户的身份进行身份验证[email protected],并且不允许该用户用作[email protected]发件人地址。

这里你必须小心,因为在电子邮件技术中,你可以将不同的内容称为“发件人地址”。在这种情况下,我们谈论的是“信封发件人地址”,该地址在命令中的 SMTP 会话期间报告给服务器MAIL FROM。不要将其与FromMIME 标头中出现在消息数据中的“发件人”地址混淆。

您的选择是:

  • 请求邮件服务器管理员允许[email protected]使用[email protected]作为信封发件人地址;
  • 询问管理员该用户被允许使用哪个地址,然后重新配置您的应用程序以在 SMTP 会话期间使用允许的地址。

可能,该地址[email protected]已允许用户[email protected]使用。将其配置为在 SMTP 会话中使用。如果您希望接收对其他地址的回复,请将该地址作为Reply-ToMIME 标头添加到消息中。此外,您可能希望在消息的FromMIME 标头中使用其他地址。再次提醒,不要混淆“信封发件人地址”和FromMIME 标头。您可以相对自由地设置 MIME 标头,但信封发件人地址必须根据服务器配置进行设置。如何以及在何处设置取决于您的 SMTP 框架;我们无法帮助您。

相关内容