为什么我无法从命令行向我的 Gmail 账户发送电子邮件

为什么我无法从命令行向我的 Gmail 账户发送电子邮件

我正在使用以下命令:

echo "Test if email can be sent from server" | mail -s "Test" [email protected]

这是在 Ubuntu Server 12.04 上完全更新的。

为了让您了解我的故障排除情况:

1) 我已经安装了带有“Internet 站点”选项的 mailutils(或者任何 Internet 选项;我不记得它的具体名称了)。

2) 我已将自己添加到“邮件”群组。

3) 我已确认我的 ISP 确实封锁了 25 端口。我遵循这些说明使用未被阻止的端口 587(我不确定这是否会影响发送邮件;在我看来,它就像一个邮件服务器)

4)我也尝试过,但似乎也没有什么作用。echo "Test if email can be sent from server" | sendmail -f [email protected] [email protected]

5) 我担心 Gmail 正在通过端口 587 接收数据,但不知道如何处理这些流量。这种担心是否毫无根据?

6) 我的 gmail 用户名在 '@gmail.com' 之前包含一个 '.'。这是否会混淆mailandsendmail命令?(编辑:经过更多实验后,这可能不是问题所在)

答案1

您必须更改 Gmail 安全设置https://myaccount.google.com/,通过激活“安全性较低的应用程序访问”。如果“安全性较低的应用程序访问”关闭,您发送的所有电子邮件都将被 Google 阻止。

下一步,你可以看到https://easyengine.io/tutorials/linux/ubuntu-postfix-gmail-smtp

答案2

SMTP 服务器仅在 TCP 端口 25 上接受传入邮件。如果它们接受来自其他端口(如提交端口 587)的邮件,则仅用于提交来自已知/经过身份验证的发送邮件的客户端的新邮件。来自未知客户端的传入邮件应仅在端口 25 上接受。

如果你的 ISP 阻止了端口 25 上的传出连接,你需要

  • 让他们移除这个块
  • 将邮件转发到本地网络之外的邮件中继,该中继将您视为可信客户端,并让中继转发邮件。在端口 587 上与此中继对话。
  • 使用端口 587 在目标服务器上以客户端身份进行身份验证,这样目标服务器就会将您视为经过身份验证的客户端。我不知道 Gmail 是否允许这样做,因为他们接受来自客户端的邮件的正常方式是通过 Web 或他们的专有应用程序。

编辑:OP 在赞扬中指出,Gmail 允许您在 smtp.gmail.com 上的端口 465 (SMTP over SSL) 通过 SMTP 进行身份验证并提交邮件。

相关内容