【问题标题】:Amazon SES SMTP Connection timed outAmazon SES SMTP 连接超时
【发布时间】:2014-05-05 05:14:58
【问题描述】:

我一直在尝试在 CentOS 6.5 上使用 Sendmail 和 SES 为我的应用程序设置电子邮件通知。根据 AWS document,我已经用 SES 配置了 sendmail,

邮件日志说,

sendmail[29711]: s2QFCjnu027924: to=<abc@edf.com>, delay=00:52:09, xdelay=00:08:00, mailer=relay, pri=210717, relay=email-smtp.us-east-1.amazonaws.com [107.20.142.169], dsn=4.0.0, stat=Deferred: Connection timed out with email-smtp.us-east-1.amazonaws.com

所有邮件都在mailq添加中

# sendmail -v -q
Running /var/spool/mqueue/s2QFueiS001965 (sequence 1 of 21)
<abc@edf.com> Connecting to email-smtp.us-east-1.amazonaws.com port 25 via relay.
^C

另外,我无法远程登录到 smtp 地址,

# telnet email-smtp.us-east-1.amazonaws.com 25
Trying 23.21.252.142...
^C

但 nmap 显示端口 smtp (25) 已打开并正在侦听,

# nmap -p 25 localhost

Starting Nmap 5.51 ( http://nmap.org ) at 2014-03-26 17:09 CET
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000080s latency).
PORT   STATE SERVICE
25/tcp open  smtp

Nmap done: 1 IP address (1 host up) scanned in 0.06 seconds

netstat 输出,

tcp   0    0 0.0.0.0:25   0.0.0.0:*  LISTEN      29708/sendmail

我也尝试过欧盟地区smtp email-smtp.eu-west-1.amazonaws.com,得到了相同的结果。

没有 selinux 和 iptables 运行,安全组规则适用于 EC2。

任何帮助将不胜感激!

【问题讨论】:

    标签: amazon-web-services smtp sendmail amazon-ses


    【解决方案1】:

    如果您通过端口 25 从 Amazon EC2 实例发送到 Amazon SES,但您无法达到您的 Amazon SES 发送限制或者您收到超时,那么这可能是因为 Amazon EC2 对通过端口 25 发送的电子邮件施加了默认发送限制,并且如果您尝试超出这些限制,则会限制出站连接。 解决方案 - 您可以使用端口 465 或 587 连接到 Amazon SES,这两个端口都不受限制。 要么 要移除限制,请提交 Amazon EC2 请求以移除端口 25 限制 (https://aws-portal.amazon.com/gp/aws/html-forms-controller/contactus/ec2-email-limit-rdns-request)。

    【讨论】:

      【解决方案2】:

      如果您使用 AWS SES 作为中继,您应该具有以下配置:

      编辑 main.cf:

      ...
      relayhost = email-smtp.${aws_region}.amazonaws.com:587
      smtp_sasl_auth_enable = yes
      smtp_sasl_security_options = noanonymous
      smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
      smtp_use_tls = yes
      smtp_tls_security_level = encrypt
      smtp_tls_note_starttls_offer = yes
      ...
      

      编辑 /etc/postfix/sasl_passwd

      email-smtp.${aws_region}.amazonaws.com:587 SMTP_USERNAME:SMTP_PASSWORD
      

      编辑 /etc/postfix/transport

      * smtp:email-smtp.${aws_region}.amazonaws.com:587
      

      请注意,您必须在所有地方指定端口,即使在运输中也是如此。

      执行后映射

      postmap /etc/postfix/sasl_passwd /etc/postfix/transport
      

      重启后缀

      service postfix restart
      

      它会起作用的。其余配置您可以在http://docs.aws.amazon.com/ses/latest/DeveloperGuide/postfix.html找到

      【讨论】:

        【解决方案3】:

        我也遇到了超时问题。我没有任何 vpc 子网路由,因为 thiyagu114 说这是他的问题,克莱门特的建议都没有帮助。

        在亚马逊信息上找到了这个:

        重要的弹性计算云 (EC2) 限制电子邮件流量 默认为 25 端口。为避免通过 来自 EC2 的 SMTP 端点,使用不同的端口(587 或 2587)或填写 删除电子邮件发送限制的请求以删除限制。

        所以从端口 25 切换到 587 为我解决了超时问题。

        【讨论】:

        • 问题可能是您的实例安全组出站规则中未打开端口。记得检查那里是否已经有 587 端口!
        • 遇到了同样的问题。如aws.amazon.com/premiumsupport/knowledge-center/… 所述,切换到 587 并打开传入的 TCP 端口 1024 - 65535 似乎可以解决此问题。 "还要确保网络 ACL 入站(入口)规则允许 TCP 端口 1024-65535 上来自 SMTP 服务器的流量"
        【解决方案4】:

        感谢克莱门特的帮助。

        我解决了这个问题。这是vpc subnet routing 实例的问题。

        现在它就像一个魅力:-)

        【讨论】:

        • 遇到了类似的问题。所有流量都被路由出去,但盒子流量被路由并没有打开 SMTP 端口。
        【解决方案5】:
        • 当您以sudo /usr/sbin/sendmail -f from@example.com to@example.com 发送测试邮件时,邮件将移交给您的实例上运行的sendmail。
        • sendmail 尝试将邮件投递到SMART_HOSTemail-smtp.us-east-1.amazonaws.com 时,无法连接到email-smtp.us-east-1.amazonaws.com,因此将电子邮件放在deferred queue 中以供稍后重试。

        所以问题是您的 sendmail 实例无法与email-smtp.us-east-1.amazonaws.com 通信。

        【讨论】:

          猜你喜欢
          • 2018-10-03
          • 2012-06-26
          • 2012-02-23
          • 1970-01-01
          • 2020-07-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多