我无法让 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 使用带有公共或A
DNS 记录的“此主机电子邮件名称”($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 集成,并且除了最大的电子邮件量之外,所有电子邮件的价格都非常低(或免费)。