无法让 sendmail 从 AWS EC2 服务器正确发送电子邮件(服务器地址的域不存在)

无法让 sendmail 从 AWS EC2 服务器正确发送电子邮件(服务器地址的域不存在)

我无法让 sendmail 从我的 AWS EC2 机器发送电子邮件。

我正在使用以下命令发送电子邮件:

sendmail -vt < mail.txt

mail.txt文件包含以下内容(出于安全考虑进行了编辑):

To: [email protected]
Subject: Put a subject here
From: [email protected]

Message body

当我运行 sendmail 时,看起来一切正常:

>>> MAIL From:<[email protected]> SIZE=128
250 2.1.0 <[email protected]>... Sender ok
>>> RCPT To:<[email protected]>
>>> DATA
250 2.1.5 <[email protected]>... Recipient ok
354 Enter mail, end with "." on a line by itself
>>> .
250 2.0.0 s0FLLsxw009758 Message accepted for delivery
[email protected]... Sent (s0FLLsxw009758 Message accepted for delivery)

但是我从未在 Yahoo 帐户上收到过电子邮件。接下来我检查了 /var/log/messages,它说我在“/var/spool/mail/ec2-user”中有新邮件。以下是我在该文件中看到的内容:

 ----- The following addresses had permanent fatal errors -----
 <[email protected]>
 (reason: 553 #5.1.8 Domain of sender address <[email protected]> does not exist)

 ----- Transcript of session follows -----
... while talking to smtp02.yahoo.com.:
>>> MAIL From:<[email protected]> SIZE=669
<<< 553 #5.1.8 Domain of sender address <[email protected]> does not exist
501 5.6.0 Data format error

有人能告诉我需要什么配置才能使其工作吗?上面的 XXX 是我的 ip-XXX-YYY-ZZZ-AAA 地址,它对应于我的 EC2 机器。

我四处寻找解决方案,但到目前为止,我发现的所有解决方案都没有对我有用。

答案1

 ----- Transcript of session follows -----
... while talking to smtp02.yahoo.com.:
>>> MAIL From:<[email protected]> SIZE=669
<<< 553 #5.1.8 Domain of sender address <[email protected]> does not exist

-f使用 sendmail命令行选项明确设置信封发件人地址

或者

MX让您的 sendmail 使用带有公共或ADNS 记录的“此主机电子邮件名称”($j) 。
https://askubuntu.com/questions/9540/how-do-i-change-the-computer-name

或者

让你的 sendmail 伪装成另一个主机来发送电子邮件
https://www.sendmail.com/sm/open_source/docs/m4/masquerading.html

答案2

大量 EC2 地址空间被多家电子邮件提供商列入黑名单。如果您需要从实例发送电子邮件,则需要通过非 EC2 主机中继,或者使用 AWS 的 SES 服务发送电子邮件。

就我个人而言,我使用 SES,因为它很容易与您的 MTA 集成,并且除了最大的电子邮件量之外,所有电子邮件的价格都非常低(或免费)。

相关内容