通常我使用 Google Apps for business 来处理我的域电子邮件发送/接收需求。今天,我为我的一个域设置了 SES 来处理电子邮件发送需求。我的问题是,我对域将如何接收电子邮件的理解非常模糊,因为 SES 仅用于发送电子邮件,当然没有收件箱功能。我的问题是如何配置域 DNS 设置以将电子邮件接收到我的 Google Apps 邮件收件箱,但使用 SES 发送电子邮件?
防晒指数
"v=spf1 include:amazonses.com -all"
"spf2.0/pra include:amazonses.com -all"
Run Code Online (Sandbox Code Playgroud)
编辑
"v=spf1 include:_spf.google.com include:amazonses.com ~all"
"spf2.0/pra include:_spf.google.com include:amazonses.com ~all"
Run Code Online (Sandbox Code Playgroud)
域 DNS 记录托管在 Route53 中
出于某种原因,我在如何做看起来很简单的事情上遇到了麻烦。
如何记录所有通过 AWS Simple Email Service 发送的包含特定消息详细信息的电子邮件?
该日志至少需要包含发送服务器的 IP 地址。但是,我也确实需要TO地址。背景故事——我们有几台服务器使用这项服务,当其中一台启动并开始发送数千封电子邮件时,我们会通过 Cloudwatch 监控收到警报——但无法找出实际发送它们的服务器。
立即,经过研究,您会发现人们确实想要此功能但它不可用的证据。但是,较新的文章表明这是可能的。
理想情况下,我曾尝试使用事件发布到CloudWatch的在这两篇文章中描述: https://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-using-event-publishing.html https://开头的文档.aws.amazon.com/ses/latest/DeveloperGuide/event-publishing-add-event-destination-cloudwatch.html
Message Tag了名称为ses:source-ip和默认值为 的值源source-ip。一段时间后,没有事件发布到 Cloud Watch。
文档只是在整个过程中不是很清楚,并且从未通过示例记录实际细节。
有一些建议我可能必须向我们发出的电子邮件添加标题以进行跟踪,但其他建议是存在默认值,并且我实际上不必修改我们的发送行为。
细粒度- 这些指标按您使用消息标签定义的电子邮件特征进行分类。要将这些指标发布到 CloudWatch,您必须使用 CloudWatch 事件目标设置事件发布,并在发送电子邮件时指定配置集。您还可以指定消息标签或使用 Amazon SES 自动提供的自动标签。
还有一些关于使用 Kinesis Firehose 作为目标的文档,它显示了非常详细的消息信息示例——这正是我想要的:https : //docs.aws.amazon.com/ses/latest/DeveloperGuide/ event-publishing-retrieving-firehose-examples.html#event-publishing-retrieving-firehose-send
我只是不知道该往哪个方向以及如何设置。
我需要最简单的方法来记录看似基本的 SES 诊断信息,然后将其用于故障排除目的。很难相信这些信息不仅可以在 AWS 控制台的某个地方随时可用。
我们有一个设置,其中 postfix 通过 Amazon SES 中继发送邮件。除了电子邮件转发之外,一切正常。
虽然这个话题至少已经在这里和这里讨论过,但仍然有一些问题我无法理解。
问题是 Amazon SES 不会发送From:未经验证的电子邮件。因此,当内部地址想要转发到外部并且发件人也是外部时,邮件将不会被发送。
为了解决这个问题,我们目前在 main.cf 中使用以下配置
header_checks = regexp:/etc/postfix/first_header_checks
smtp_header_checks = regexp:/etc/postfix/second_header_checks
sender_canonical_maps = regexp:/etc/postfix/sender_canonical
sender_canonical_classes = envelope_sender
smtpd_data_restrictions = check_sender_access pcre:/etc/postfix/sender_access
Run Code Online (Sandbox Code Playgroud)
使用first_header_checks
/^From:(\s)?(.*)/i PREPEND X-Original-From: $2
/^To:(\s)?(.*)$/i PREPEND X-Original-To: $2
Run Code Online (Sandbox Code Playgroud)
第二个标头检查
/^From:(.*)/i REPLACE From: <no-reply@verified-domain.com>
Run Code Online (Sandbox Code Playgroud)
发件人_规范
/.*/ user@verified-domain.com
Run Code Online (Sandbox Code Playgroud)
发件人访问权限
/(.*)/ prepend Reply-To: <$1>
Run Code Online (Sandbox Code Playgroud)
这对于收到的邮件非常有效。user@external.com 将邮件发送到 me@verified-domain.com 并转发到 new@another-external.com
Reply-To: <user@external.com>
X-Original-To: <me@verified-domain.com>
To: new@another-external.com
From: <no-reply@verified-domain.com>
X-Original-From: <user@external.com>
Run Code Online (Sandbox Code Playgroud)
问题是,从服务器发出的邮件也会发生这种情况。假设 me@verified-domain.com 发送一封邮件,发件人被重写为无回复,并且将设置回复。我想解决这个问题。邮件标头应该只针对将要转发的传入邮件进行重写。
我尝试过使用像!/^From:(\s)?(.*@verified-domain\.com)/ …
在我的 AWS Lambda 函数上,每当我尝试使用nodemailer连接到我的 Amazon SES SMTP 服务器(端口 465)时,我的 javascript 代码就会超时。但是,如果我在本地运行脚本,它工作正常,这让我相信它要么是 lambda 拨出到 SMTP 服务器的问题,要么是 SMTP 服务器阻止 lambda 连接 - 我怀疑前者是问题.
我在 Cloudfront 发行版后面使用了防火墙,但我认为这不适用于传入的 SES 连接或传出的 lambda 函数。在 VPC 中,我可以看到有一个附加到实例的 Internet 网关。安全组的传出连接允许所有协议访问 0.0.0.0/0,但是,ACL 看起来很奇怪,因为它既允许又拒绝所有入站/出站连接:
在 VPC 中,我看到列出了 6 个子网,我不太清楚这些子网在宏伟计划中的作用。
在日志中,我只看到 Task timed out after 6.01 seconds
知道如何获得有关挂断位置的更多信息吗?
我的域已经使用了 Amazon Route 53,我可以很高兴地使用cli53命令行工具来维护它。
我们正在转向使用 Amazon SES,我想根据文档向域添加 SPF 记录......我们之前没有现有记录。这仅适用于发送给客户的自动电子邮件,而不是内部用户帐户。
我一生都无法弄清楚命令行是做什么的,谁能提供一个例子?
$ cli53 rrcreate -x 3600 -r --wait mydomain.com '' 'SPF' 'v=spf1 include:amazonses.com ?all'
回溯(最近一次调用最后一次):
...
boto.route53.exception.DNSServerError: DNSServerError: 400 Bad Request
...
发件人
InvalidChangeBatch
无效的资源记录:致命问题:在 v=spf1 处遇到 InvalidTXTRDATA 包括:amazonses.com ?all
我们构建了创建大量事务性电子邮件的 Web 应用程序,例如票证、提醒和日志消息。这些电子邮件通常发送给最终用户,但其中大部分也直接或通过密件抄送发送给客户组织内部的用户。
我们的解决方案通常托管在独立于电子邮件服务器和客户端网络之外的 Web 服务器上。
我们发现我们在向客户内部员工发送电子邮件方面存在很多问题,即。由于垃圾邮件过滤,密件抄送邮件未送达。许多电子邮件服务器都是带有外部附加包的 Exchange,如 Trendmicro、Symantec 和 GFI-Maxmail。通常我们无法控制垃圾邮件过滤器的设置,或者绕过垃圾邮件过滤器需要从特定电子邮件帐户发送 - 我们宁愿从内部员工那里发送。
我一直在关注 Amazon SES,它似乎是一个可行的替代方案,发送电子邮件的成本肯定超过了通过垃圾邮件过滤器和支持请求所付出的努力。
像 Amazon SES 这样的东西是否改善了 Serverfault 通过垃圾邮件过滤器的机会?一个主观的答案是好的。
您可以假设电子邮件具有非关键内容、具有有效的发件人地址并且 SPF 设置正确。
我有一个托管在 AWS 中的应用程序,我的邮件服务不在 AWS 上,由于定价原因,我在 hostgator 中使用托管,因为我需要 500 多个简单邮件帐户。
我的 DNS 指向我的电子邮件服务并且它工作正常。
我迷失的部分是我试图在特定地址接收电子邮件,以便我的应用程序可以处理它。有没有办法将某些地址发送到辅助 MX 记录,或者如果在第一个中找不到该地址,它会查看第二个?或者第二个优先级的 MX 记录只有在离线时是第一个?
我目前正在尝试在 Amazon 的 SES 上验证我的域并运行一个谷歌搜索没有帮助我更接近解决的问题。
根据 SES,我必须在我的 DNS 中为我尝试验证的域创建一个 TXT 记录。亚马逊为您提供以下信息(出于安全目的更改了值);
TYPE: TXT
NAME: _amazonses.somedomain.com
VALUE: M2sXTycXkgZXXuMuWI8TczngaPIDDMToPefzGhZ3uYA=
Run Code Online (Sandbox Code Playgroud)
我在我的注册商的 DNS 管理器中尝试了许多条目,但 SES 仍然无法找到它正在寻找的内容。我不是 DNS 专家,因此,我试图从非常稀疏的示例中构建 TXT 记录,充其量是为了做到这一点。
我现在的 TXT 记录是这样的;
"v=DKIM1 s=_domainkey d=_amazonses.somedomain.com p=M2sXTycXkgZXXuMuWI8TczngaPIDDMToPefzGhZ3uYA="
Run Code Online (Sandbox Code Playgroud)
这是您正确制作TXT记录的方式吗?我做错了什么吗?
谢谢
我已经设置了 Amazon SES,验证了我的域,并已获准使用生产模式。当来自外部世界的电子邮件发送到我域中的地址时,我的服务器将其转发回 Gmail 帐户,但转发被 Amazon SES 拒绝并显示错误
Email address is not verified
Run Code Online (Sandbox Code Playgroud)
例如,如果来自 yahoo.com 的某人通过“me@mydomain.com”向我发送电子邮件,然后该电子邮件由于 /etc/aliases 中的条目而立即转发到“me@gmail.com”,则 SES 是拒绝向 gmail.com 发送电子邮件,即使“mydomain.com”是经过验证的域。当我在 Postfix 中打开详细登录以连接到 gmail.com 时,该电子邮件似乎来自 yahoo.com 并转到 gmail.com —— 这两个都不是我的域。它是在抱怨电子邮件最初来自 yahoo.com 吗?如果是这种情况,那么在将邮件从外部域通过我的域中继到另一个 (gmail) 域时,我是否无法使用 SES?
但是,如果我发送来自我的域的电子邮件并转到 gmail 地址,它可以正常工作。
这是/var/log/maillogSES 服务器拒绝转发到 gmail.com 的行:
Apr 15 02:11:43 ip-10-194-190-140 postfix/smtp10191: 9013922528: to=<myaddress@gmail.com>, orig_to=<myaddress@mydomain.com>, relay=email-smtp.us-east-1.amazonaws.comhttp://54.243.71.143:25, delay=0.32, delays=0.01/0/0.11/0.2, dsn=5.0.0, status=bounced (host email-smtp.us-east-1.amazonaws.comhttp://54.243.71.143 said: 554 Message rejected: Email address is not verified. (in reply to end of DATA command))`
Run Code Online (Sandbox Code Playgroud)
这是我添加到 /etc/postfix/main.cf 的行:
relayhost …Run Code Online (Sandbox Code Playgroud) 我最近从 Amazon SES 服务收到了一些账单。我以为我处于免费层限制,这意味着我每个月可以向任何收件人发送 62,000 条消息:
https://aws.amazon.com/ses/pricing/
我可以接受这笔费用,但我不太明白为什么。是因为我没有使用 EC2 实例吗?
当您直接从 Amazon EC2 实例调用 Amazon SES 时,您每月可以向任何收件人发送 62,000 条消息
如果我不使用 EC2 实例,他们会为我发送的每 1000 封电子邮件收取 0.1 美元的费用吗?我使用我的一个站点(不使用 EC2)的电子邮件设置,该站点在用户提交表单后发送电子邮件。我将直接从 EC2 实例调用 Amazon SES 是什么意思?
amazon-ses ×10
postfix ×2
amazon-ec2 ×1
amazon-vpc ×1
domainkeys ×1
email ×1
email-server ×1
exchange ×1
g-suite ×1
gmail ×1
mx-record ×1
spam ×1
spf ×1
txt-record ×1