我在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.
答案 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:
<块引用>也在 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 方服务:SendGrid, Mailgun 或 Mailjet。此外,您可以通过 Google Workspace 或仅使用 Google Workspace 来转发您的邮件。