【问题标题】:django send_mail 554 - relay access denieddjango send_mail 554 - 中继访问被拒绝
【发布时间】:2017-11-28 01:02:24
【问题描述】:

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

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

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(或此机器上具有 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 站点上,正如我所写,从命令行发送邮件正常。

【问题讨论】:

  • 你能不能试试发件人的邮件不要从 localhost.com 之类的本地主机发送。您的服务器似乎不允许这样做
  • 嗨,当然,正如我所说,我尝试了很多组合,但不幸的是它是一样的 (send_mail('aaa', 'bbb', 'alma@yahoo.com', [' beka@gmail.com'])) .

标签: python django email


【解决方案1】:

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

echo sth | mail somebody@provider.com

...和...

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

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

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

您可以更改您的 Django settings.py 以强制它使用 127.0.0.1,方法是添加...

EMAIL_HOST='localhost'

...或重新配置后缀以允许从217.112.142.235 中继,方法是将/etc/postfix/main.cf 中的mynetworks 参数更改为...

mynetworks = 127.0.0.0/8

...到某事列表...

mynetworks = 127.0.0.0/8 217.112.142.235/32

...然后做...

sudo service postfix restart

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

【讨论】:

  • 啊,谢谢。基本上我在设置中有一个 EMAIL_HOST 条目。这导致了整个问题......只需简单地删除它,它就可以正常工作了。
  • @user2194805 如果回答有助于解决您的问题,习惯上会接受,这样人们就可以轻松判断问题已解决。
猜你喜欢
  • 2013-08-21
  • 2015-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-16
  • 1970-01-01
  • 2013-08-19
相关资源
最近更新 更多