Sendmail不发送邮件

时间:2016-08-24 09:44:22

标签: linux apache debian sendmail google-compute-engine

我在Google云计算引擎上安装了一个WordPress网站,但我无法发送邮件。所以在搜索互联网后发现了sendmail

安装并配置最新版本:

$ sudo apt-get update
$ sudo apt-get install sendmail

跑完sendemail配置,回答"是"对一切:

$ sudo sendmailconfig

编辑127.0.0.1 localhost instance-1行(instance-1是我的Google云实例):

$ sudo vim /etc/hosts # changed 

重启Apache:

sudo service apache2 restart

当我在终端中运行以下命令时,没有任何反应,我再也无法运行命令了。所以看起来这个过程并没有结束。

$ sendmail example@email.com

$ date | sendmail -v example@email.com的输出返回:

example@email.com... Connecting to [127.0.0.1] via relay...
220 instance-1.c.myproject.internal ESMTP Sendmail 8.14.4/8.14.4/Debian-8; Wed, 24 Aug 2016 09:42:18 GMT; (No UCE/UBE) logging access from: localhost(OK)-localhost [127.0.0.1]
>>> EHLO instance-1.c.myproject.internal
250-instance-1.c.myproject.internal Hello localhost [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-EXPN
250-VERB
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-DELIVERBY
250 HELP
>>> VERB
250 2.0.0 Verbose mode
>>> MAIL From:<info@instance-1.c.myproject.internal> SIZE=29
250 2.1.0 <info@instance-1.c.myproject.internal>... Sender ok
>>> RCPT To:<example@email.com>
>>> DATA
250 2.1.5 <example@email.com>... Recipient ok
354 Enter mail, end with "." on a line by itself
>>> .

我的日志文件/var/log/mail.log显示了很多这样的行:

Aug 25 07:56:02 instance-1 sm-mta[19958]: u7OCN1Wu013988: to=<example@email.com>, delay=19:33:01, xdelay=00:10:36, mailer=esmtp, pri=5340422, relay=alt4.gmail-smtp-in.l.google.com. [173.194.72.27], dsn=4.0.0, stat=Deferred: Connection timed out with alt4.gmail-smtp-in.l.google.com.
Aug 25 07:56:02 instance-1 sm-mta[19958]: u7OC9iDu013870: to=<example@email.com>, delay=19:46:18, xdelay=00:00:00, mailer=esmtp, pri=10560423, relay=alt4.gmail-smtp-in.l.google.com., dsn=4.0.0, stat=Deferred: Connection timed out with alt4.gmail-smtp-in.l.google.com.
Aug 25 07:56:02 instance-1 sm-mta[19958]: u7OBliSC013710: to=<example@email.com>, delay=20:08:18, xdelay=00:00:00, mailer=esmtp, pri=10740386, relay=alt4.gmail-smtp-in.l.google.com., dsn=4.0.0, stat=Deferred: Connection timed out with alt4.gmail-smtp-in.l.google.com.
Aug 25 07:56:02 instance-1 sm-mta[19958]: u7O94ubM013110: to=<example@email.com>, delay=22:51:06, xdelay=00:00:00, mailer=esmtp, pri=11460376, relay=alt4.gmail-smtp-in.l.google.com., dsn=4.0.0, stat=Deferred: Connection timed out with alt4.gmail-smtp-in.l.google.com.

3 个答案:

答案 0 :(得分:0)

您不能从Google Compute Engine发送邮件,Google会在25日阻止所有传出流量。

您将不得不使用Sendgrid to send mail之类的第三方。

答案 1 :(得分:0)

是的,有可能从实例发送电子邮件,一切在此tutorial中进行了解释。

默认情况下,Compute Engine允许除端口25之外的所有端口上的出站连接,该端口由于滥用的风险而被阻止。所有其他端口都是开放的,包括端口587和465。

答案 2 :(得分:0)

无法直接从 GCE 虚拟机发送电子邮件。

请查看文档 Always blocked traffic

<块引用>
  • 到 TCP 目标端口 25 (SMTP) 的出口流量

也在 Using standard email ports

<块引用>

由于存在滥用风险,当目标位于您的 VPC 网络外部时,与目标 TCP 端口 25 的连接总是被阻止。这包括在 Google Workspace 中使用 SMTP 中继。

根据维基百科文章Simple Mail Transfer Protocol

<块引用>

自 SMTP 于 1981 年推出以来,它不断更新、修改和 多次延长。今天常用的协议版本有 具有各种身份验证扩展的可扩展结构, 加密、二进制数据传输、国际化的电子邮件地址。 SMTP 服务器通常在端口上使用传输控制协议 25号。

这是在 1982 年与 RFC 821, Appendix A 首次决定的,此后一直如此。在 RFC5321,您可以看到:

<块引用>

4.5.4.2。接收策略

SMTP 服务器应该尝试在 SMTP 上保持挂起的侦听 端口(由 IANA 指定为端口 25)。

这是什么意思?您不能简单地更改端口,因为其他 SMTP 服务器没有机制知道您使用的是非标准端口,并且您也无法使用任何其他端口发送到其他服务器。

有没有办法从 GCE VM 发送电子邮件?

是的,让我们回到文档 Using standard email ports

<块引用>

Google Cloud 不会对使用目标 TCP 端口 587 或 465 发送到外部目标 IP 地址的流量设置任何限制。

端口 587 和 465 可用于 SMTP 消息提交 (RFC6409)。这意味着您可以将外部邮件中继(您自己的或第 3 方)用于经过身份验证的 SMTP,并且该服务器在端口 25 上处理到其他邮件系统的传递。例如,您可以使用这些第 3 方服务:SendGridMailgunMailjet。此外,您可以通过 Google Workspace 或仅使用 Google Workspace 来转发您的邮件。