代码之家  ›  专栏  ›  技术社区  ›  nusantara

夹层接触形式产生“上游提前关闭”错误

  •  0
  • nusantara  · 技术社区  · 7 年前

    我的网站使用Mezzanine 4.2.3、Django Oscar 1.5.2和Django 1.10.8,运行在Digitalocean上的Ubuntu 16.04上。当我在用创建的演示页面上使用夹层联系人表单时 createdb ,并从我自己的电脑,它成功地发送电子邮件。但当我在运行Ubuntu16.04的Digitalocean droplet上测试时,我得到了502坏网关。

    nginx错误日志记录此错误: *13 upstream prematurely closed connection while reading response header from upstream, client: [an IP I can't identify], server: [my website url], request: "POST /contact/ HTTP/1.1", upstream: "http://unix:/home/my-django-app/my-django-app.sock:/contact/", host: "[my website url]", referrer: "[my website url]/contact/" .不同国家的人数不同 *1 , *7 *13 ,但文本是一样的。

    我在谷歌上搜索了一下,找到了各种可能的解决方案:

    • Increasing the timeout for nginx proxy_pass .这包括添加 proxy_connect_timeout 75s; proxy_read_timeout 300s; 到nginx config,然后添加 --timeout 300 给古尼康。这产生了一个实际的超时错误: *21 upstream timed out (110: Connection timed out) while reading response header from upstream,

    • Uncommenting precedence ::ffff:0:0/96 100 in /etc/gai.conf. .

    • 允许UFW中的587端口。这不重要,因为如果我使用的是gmail,那么这应该是谷歌方面的一个端口,对吧?我之所以这么做,是因为我看到各种解决方案(大多数尚未解决)都在讨论解除阻止此端口的必要性。

    • 让nginx在端口587上侦听: server {listen 80; listen 587; ... list 443 ssl; ...} .

    nginx监听587端口, sudo netstat -tulnp | grep 587 显示:

    tcp        0      0 0.0.0.0:587             0.0.0.0:*               LISTEN      12815/nginx -g daem
    

    我的电子邮件设置似乎很好:

    EMAIL_USE_TLS = True
    EMAIL_HOST = "smtp.gmail.com"
    EMAIL_HOST_USER = "!#%%&&*%^#$^*%@gmail.com"
    EMAIL_HOST_PASSWORD = "^*#^@#$%&@$%%#$"
    EMAIL_PORT = 587
    EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
    

    我也尝试了端口465的SSL。它与我的本地副本一起工作,但不在服务器上。与502的错误消息相同。

    我认为“上游”意味着gunicorn,所以我为它设置了一个错误日志,但在加载页面时,它记录的只是状态代码200和302。502发生时,它没有记录任何东西。

    我没有主意了。我错过了什么?

    2018年6月3日更新:

    $ telnet smtp.gmail.com 587
    Trying 108.177.96.109...
    Trying 108.177.96.108...
    Trying 2a00:1450:4013:c01::6c...
    telnet: Unable to connect to remote host: Network is unreachable
    

    用465和25也试过了。这是否意味着Digitalocean正在阻止连接?有 precedent .

    1 回复  |  直到 7 年前
        1
  •  0
  •   nusantara    7 年前

    是的,Digitalocean阻止SMTP。他们回复我的邮件:

    要帮助限制您帐户上的SMTP服务,可以 请告知我们以下信息:

    1. 你的名字。
    2. 你将代表哪个企业或个人以及他们的网站(如果有的话)发送邮件。
    3. 您将发送什么类型的邮件(密码重置、时事通讯、营销邮件、事务性邮件,如订单) 确认)。
    4. 如果您代表的是一家企业或一个非您本人的个人,那么您与该企业或个人的关系是什么 个人

    另外,由于我们是一家美国公司,我想向您保证 了解我们要求我们网络的所有用户遵守 CAN-SPAM的要求( https://www.ftc.gov/tips-advice/business-center/guidance/can-spam-act-compliance-guide-business )针对发送给任何订阅者的任何非事务性邮件采取行动 世界上任何地方,以及CASL( http://fightspam.gc.ca/eic/site/030.nsf/eng/home )你的任何电子邮件 发送给加拿大的所有订户。

    此外,向用户发送电子邮件还有其他限制 由欧盟本身及其成员国创建的欧洲用户 并建议您调查并跟踪所有 适用于任何欧洲用户所在国家的相关指南 可能有。

    我回答他们,他们回答:

    感谢您提供的信息。

    我们已经查看了这些信息,并从中删除了SMTP块 你的账户。

    只是重申一下——我们要求我们的订阅者遵守CAN-SPAM 代理所有电子邮件,CASL处理发送给订阅服务器的任何电子邮件 加拿大

    如果您不这样做,并且我们收到违规投诉,我们可以撤销 我们自行决定是否访问SMTP,无需进一步警告。