如何将 sendmail 与来自 Google Compute Engine 的 SendGrid 一起使用?
How to use sendmail with SendGrid from Google Compute Engine?
我有一个使用 Joomla! 运行的简单网站,它有一个联系表,访问者可以从中向我发送消息。此消息是使用 sendmail
服务通过电子邮件发送的。
网站机器 运行 在 Google Compute Engine 中,默认情况下我不能从它发送电子邮件(这是 Google 强加的限制)。要实现发送邮件的目的,需要一个第三方服务,比如SendGrid。
我使用 Google Cloud partner program 在 SendGrid 上创建了一个免费帐户,验证了我的用户等等。该帐户已正确配置。
根据 this tutorial,我将我的 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.
According to Google,我的机器无法使用端口25
、465
和587
,所以我更改了配置以使用端口2525
在 sendmail.mc
文件中。没有任何变化。
有什么提示吗?我的机器是 运行 Ubuntu 14.04LTS.
好的,我找到问题了。
我原来的 /etc/mail/sendmail.mc
文件没有 #dnl define(‘SMART_HOST’, ‘smtp.your.provider’)dnl
行,所以我不知道把配置放在哪里 (source):
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)
问题是,你不能把它放在文件的末尾。当我把它放在 "DO NOT TOUCH HERE" 部分之后时,配置开始工作:
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
我有一个使用 Joomla! 运行的简单网站,它有一个联系表,访问者可以从中向我发送消息。此消息是使用 sendmail
服务通过电子邮件发送的。
网站机器 运行 在 Google Compute Engine 中,默认情况下我不能从它发送电子邮件(这是 Google 强加的限制)。要实现发送邮件的目的,需要一个第三方服务,比如SendGrid。
我使用 Google Cloud partner program 在 SendGrid 上创建了一个免费帐户,验证了我的用户等等。该帐户已正确配置。
根据 this tutorial,我将我的 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.
According to Google,我的机器无法使用端口25
、465
和587
,所以我更改了配置以使用端口2525
在 sendmail.mc
文件中。没有任何变化。
有什么提示吗?我的机器是 运行 Ubuntu 14.04LTS.
好的,我找到问题了。
我原来的 /etc/mail/sendmail.mc
文件没有 #dnl define(‘SMART_HOST’, ‘smtp.your.provider’)dnl
行,所以我不知道把配置放在哪里 (source):
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)
问题是,你不能把它放在文件的末尾。当我把它放在 "DO NOT TOUCH HERE" 部分之后时,配置开始工作:
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