我有一个奇怪的问题,没有任何想法,可能出什么问题了,所以也许在这里写可以帮助我提出想法。或有人可以帮助我:)

我有一个在 Rancher 中运行的Django站点,过去几周我注意到电子邮件无法正常工作。发生超时错误。我正在使用mailgun.org作为SMTP服务器。

这是从rancher容器控制台输出的:

/app/app # ipython
Python 2.7.14 (default, Dec 19 2017, 22:36:09)
Type "copyright", "credits" or "license" for more information.

IPython 5.5.0 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]: from smtplib import SMTP

In [2]: smtp = SMTP(host='smtp.mailgun.org', port=587)

它只是挂起。添加超时当然会增加超时。

我猜想mailgun出了点问题。但是在本地在同一图像上运行相同的代码是可行的(commit-hash与rancher容器上的代码匹配)。
docker run -ti registry.gitlab.com/namespace/app:commit-hash /bin/sh
/app/app # ipython
Python 2.7.14 (default, Dec 19 2017, 22:36:09)
Type "copyright", "credits" or "license" for more information.

IPython 5.5.0 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]: from smtplib import SMTP

In [2]: smtp = SMTP(host='smtp.mailgun.org', port=587)

In [3]:

我不知道它是如何工作的。我与mailgun支持人员联系,询问他们是否阻止了我服务器的ip地址。他们的答案:



如果我使用相同的docker镜像,那会有什么不同?我改变环境的唯一方法是env变量,但是它们都不与python/system有关。

我以为我使用gevent解决了错误,但是昨天我删除了它。


/app/app # telnet smtp.mailgun.org 587
telnet: can't connect to remote host (52.10.40.100): Operation timed out
/app/app #

Dockerfile的第一行:
FROM python:2.7-alpine

ENV PYTHONUNBUFFERED 1

# Install dependencies
RUN apk update && \
    apk add --no-cache build-base \
        curl \
        nano \
        postgresql-dev \
        vim

主机上的telnet:
~# telnet smtp.mailgun.org 587
Trying 34.232.180.42...
Trying 54.164.235.211...
Trying 34.237.7.101...
telnet: Unable to connect to remote host: Connection timed out

最佳答案



似乎提供商(Scaleway.com)阻止了该端口。

当我使用外部服务发送电子邮件时,我不知道托管公司正在这样做。无论如何,请验证我的帐户,禁用阻止功能,重新启动服务器,然后它就可以工作了。

谢谢大家的评论/帮助!

关于docker - 来自rancher容器中的python客户端的smtp超时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48044684/

10-11 22:48