gpt4 book ai didi

python - django send_mail 554 - 中继访问被拒绝

转载 作者:太空宇宙 更新时间:2023-11-04 10:48:00 28 4
gpt4 key购买 nike

我在谷歌上搜索了很多关于这个问题的信息,我在很多地方都发现了这个错误,但我的问题没有答案。

我有一个新安装的 (debian) 系统,它基本上只包含一个 django (1.3.0) 安装和一个非常糟糕的后缀。 Postfix 正在工作,如果我这样做的话

echo sth | mail somebody@provider.com

它完美地到达了。

我试过像这样使用django send_mail

from django.core.mail import send_mail

send_mail('aaa', 'bbb', 'from@localhost', ['user@external.hu'])

但我总是返回一个错误:

Traceback (most recent call last):
File "", line 1, in
File "/usr/lib/python2.6/dist-packages/django/core/mail/__init__.py", line 61, in send_mail
connection=connection).send()
File "/usr/lib/python2.6/dist-packages/django/core/mail/message.py", line 248, in send
return self.get_connection(fail_silently).send_messages([self])
File "/usr/lib/python2.6/dist-packages/django/core/mail/backends/smtp.py", line 92, in send_messages
sent = self._send(message)
File "/usr/lib/python2.6/dist-packages/django/core/mail/backends/smtp.py", line 110, in _send
email_message.message().as_string())
File "/usr/lib/python2.6/smtplib.py", line 709, in sendmail
raise SMTPRecipientsRefused(senderrs)
SMTPRecipientsRefused: {'user@external.hu': (554, '5.7.1 : Relay access denied')}

当然,我尝试过不同的地址。他发送电子邮件的唯一一种情况是,当我将其发送到 localhost(或 native 上有 mx 的主机)时。

mail.log 中我可以看到:

Apr 16 10:48:48 tkt postfix/smtpd[4886]: connect from tkt[217.112.142.235]
Apr 16 10:48:48 tkt postfix/smtpd[4886]: NOQUEUE: reject: RCPT from tkt[217.112.142.235]: 554 5.7.1 : Relay access denied; from= to= proto=ESMTP helo=
Apr 16 10:48:48 tkt postfix/smtpd[4882]: lost connection after RSET from tkt[217.112.142.235]
Apr 16 10:48:48 tkt postfix/smtpd[4882]: disconnect from tkt[217.112.142.235]

嗅探端口 25 我什么也看不到。

有人知道如何解决这个问题(最好使用本地后缀)吗?

这台机器在 Internet 站点上,正如我所写的,从命令行发送邮件工作正常。

最佳答案

我不是 100% 确定,但我认为两者之间的区别...

echo sth | mail somebody@provider.com

...和...

send_mail('aaa', 'bbb', 'from@localhost', ['user@external.hu'])

...是前者连接到 IP 地址 127.0.0.1 上的 postfix,而后者连接到 IP 地址 217.112.142.235 上的 postfix,虽然我不确定为什么。这可能取决于您的网络服务器绑定(bind)到哪个 IP 地址。

出于安全原因,Postfix 通常默认配置为仅允许在连接到 127.0.0.1 时中继电子邮件。

您可以更改 Django settings.py 以强制它通过添加...来使用 127.0.0.1

EMAIL_HOST='localhost'

...或通过更改 /etc/postfix/main.cf 中的 mynetworks 参数,重新配置 postfix 以允许从 217.112.142.235 进行中继> 来自类似...

mynetworks = 127.0.0.0/8

...到某物列表...

mynetworks = 127.0.0.0/8 217.112.142.235/32

...然后做...

sudo service postfix restart

...让它重新阅读配置文件。

关于python - django send_mail 554 - 中继访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16038853/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com