如何从 Google Compute Engine 将 sendmail 与 SendGrid 一起使用



我有一个简单的网站,它运行着Joomla!,它有一个联系表格,访问者可以从中向我发送消息。此消息是使用 sendmail 服务通过电子邮件发送的。

网站机器在谷歌计算引擎中运行,默认情况下我不能从它发送电子邮件(这是谷歌施加的限制)。为了实现发送电子邮件的目标,需要第三方服务,例如SendGrid。

我使用 Google Cloud 合作伙伴计划在 SendGrid 上创建了一个免费帐户,验证了我的用户等等。帐户已正确预配。

根据本教程,我将sendmail服务配置为使用 SendGrid 来发送电子邮件。一切似乎都很好,但是...根本不传递任何消息。

我在/var/log/mail.log的邮件日志显示:

Jan 21 16:22:10 web-hosting sm-mta[16350]: t0JHWaec027559: to=<my@email.com>, delay=1+22:49:34, xdelay=00:00:00, mailer=relay, pri=23251559, re
lay=smtp.sendgrid.net., dsn=4.0.0, stat=Deferred: Connection timed out with smtp.sendgrid.net.

根据谷歌的说法,我的机器无法使用端口25465587,所以我更改了配置以使用 sendmail.mc 文件中的端口2525。什么都没有改变。

有什么提示吗?我的机器运行的是 Ubuntu 14.04LTS。

好的,我发现了问题。

我的原始/etc/mail/sendmail.mc文件没有#dnl define(‘SMART_HOST’, ‘smtp.your.provider’)dnl行,所以我不知道将配置放在哪里(来源):

define(`SMART_HOST', `smtp.sendgrid.net')dnl
FEATURE(`access_db')dnl
define(`RELAY_MAILER_ARGS', `TCP $h 2525')dnl
define(`ESMTP_MAILER_ARGS', `TCP $h 2525')dnl

(注意:对于 Google Compute Engine 计算机,您需要使用 2525 端口而不是默认的 587)

问题是,你不能把它放在文件的末尾。当我把它放在"不要触摸这里"部分之后时,配置开始工作:

dnl # Items controlled by /etc/mail/sendmail.conf - DO NOT TOUCH HERE
...
DAEMON_OPTIONS(`Family=inet,  Name=MSP-v4, Port=submission, M=Ea, Addr=127.0.0.1')dnl
dnl # SendGrid code here

最新更新