Amazon SES SMTP连接超时

时间:2014-03-26 16:21:17

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

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

maillog说,

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

另外,我无法telnet到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。

任何帮助都将受到高度赞赏!!

5 个答案:

答案 0 :(得分:18)

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

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

  

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

因此,从端口25切换到587可以解决我的超时问题。

答案 1 :(得分:3)

  • 当您将测试邮件发送为sudo /usr/sbin/sendmail -f from@example.com to@example.com时,邮件将被移交给您实例上运行的sendmail。
  • 当sendmail尝试将邮件发送到SMART_HOST email-smtp.us-east-1.amazonaws.com时,它无法连接到email-smtp.us-east-1.amazonaws.com,因此电子邮件已放置在deferred queue中稍后重试。

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

答案 2 :(得分:1)

谢谢Clement的帮助。

我弄明白了这个问题。该实例存在vpc subnet routing问题。

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

答案 3 :(得分:0)

如果您使用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

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

重新启动postfix

service postfix restart

它会起作用。您可以在http://docs.aws.amazon.com/ses/latest/DeveloperGuide/postfix.html

找到其余配置

答案 4 :(得分:0)

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