允许Python Docker通过主机';s发送邮件

允许Python Docker通过主机';s发送邮件,python,linux,docker,email,sendmail,Python,Linux,Docker,Email,Sendmail,我有一台运行Centos 7和docker的服务器。此服务器位于本地网络内,不在外部使用。我有一个运行在服务器上的Python docker容器,我想从中向公司的电子邮件地址发送电子邮件(第一个)。last@company.com) 我可以在Centos服务器上通过echo“Test”| mail-s“Subject”首先执行此操作,而不会出现问题。last@company.com 通过Python docker容器,我可以连接到sendmail服务器,但不能发送 #test.py impor

我有一台运行Centos 7和docker的服务器。此服务器位于本地网络内,不在外部使用。我有一个运行在服务器上的Python docker容器,我想从中向公司的电子邮件地址发送电子邮件(第一个)。last@company.com)

我可以在Centos服务器上通过
echo“Test”| mail-s“Subject”首先执行此操作,而不会出现问题。last@company.com

通过Python docker容器,我可以连接到sendmail服务器,但不能发送

#test.py

import smtplib
s=smtplib.SMTP('172.17.0.1')  # this is the docker bridge network ip
s.sendmail('mailer@app','first.last@company.com','message')
上面的Python代码导致以下错误:

Traceback (most recent call last):
  File "/usr/local/lib/python3.8/smtplib.py", line 885, in sendmail
    raise SMTPRecipientsRefused(senderrs)
smtplib.SMTPRecipientsRefused: {'first.last@company.com': (550, b'5.7.1 <first.last@company.com>... Relaying denied. IP name lookup failed [172.17.0.3]')}
表示违反了
检查\u rcpt
(检查收件人)规则。我查了一下,这条规则和转寄邮件有关

起初我认为这是因为docker容器的IP无法通过主机上的反向DNS查找,以便主机可以判断发送域是否与IP匹配。因此,我创建了DNS代理,从中我可以使用
--hostname app
启动Python容器,然后在主机上成功返回
ping app

但这仍然不起作用,因此我尝试将条目
172.17 RELAY
添加到
/etc/mail/access
中,然后对其进行散列以创建
/etc/mail/access.db
,并重新启动sendmail。这似乎也不起作用

我也在尝试其他事情,但我似乎无法通过
检查。有人能帮我弄清楚如何配置系统以允许服务器中继来自docker容器的电子邮件吗?我是否需要以某种方式允许中继邮件发送到
@company.com


非常感谢您提供的任何帮助

好的,那么明智的做法是忘记sendmail,使用docker容器
bytemark/smtp
创建邮件服务器,然后从python容器进行连接和发送

Mar  5 13:38:58 servername sendmail[29570]: 125LOmVY029570: ruleset=check_rcpt, arg1=<first.last@company.com>, relay=[172.17.0.3], reject=550 5.7.1 <first.last@company.com>... Relaying denied. IP name lookup failed [172.17.0.3]
Mar  5 13:38:58 servername sendmail[29570]: 125LOmVY029570: from=<mailer@app>, size=4, class=0, nrcpts=0, proto=ESMTP, daemon=MTA, relay=[172.17.0.3]