如何配置 sendmail 以使用端口 465 或 587 通过 GMail (smtp.gmail.com) 发送电子邮件?

Jak*_*ski 7 email smtp sendmail gmail

我已将 sendmail 配置为通过我的 GMail (Google Mail) 帐户发送电子邮件,即通过smtp.gmail.com编辑/etc/mail/sendmail.mc和重新生成 sendmail.cf:

-dnl define(`SMART_HOST',`smtp.your.provider')
+define(`SMART_HOST',`[smtp.gmail.com]')

-dnl define(`confAUTH_OPTIONS', `A p')dnl
+define(`confAUTH_OPTIONS', `A p')dnl

-dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
-dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
+TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
+define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

 FEATURE(`no_default_msa',`dnl')dnl
 FEATURE(`smrsh',`/usr/sbin/smrsh')dnl
+FEATURE(`authinfo',`hash -o /etc/mail/authinfo.db')dnl
 FEATURE(`mailertable',`hash -o /etc/mail/mailertable.db')dnl
 FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable.db')dnl

-dnl MASQUERADE_AS(`mydomain.com')dnl
+MASQUERADE_AS(`gmail.com')dnl
Run Code Online (Sandbox Code Playgroud)

以上是我对 sendmail.mc 更改的缩短差异。

/etc/mail/authinfo使用我的凭据(我的 GMail 帐户的用户名和密码;已编辑)创建:

AuthInfo:smtp.gmail.com "U:user@gmail.com" "P:password" "M:PLAIN"
AuthInfo: "U:user@gmail.com" "P:password" "M:PLAIN"
Run Code Online (Sandbox Code Playgroud)

但是此设置使“sendmail”使用 smtp.gmail.com 通过标准 SMTP 端口 25 发送电子邮件……但最近我的 ISP 添加了防火墙规则,该规则阻止了(不安全的)端口 25 的所有流量。

如何配置 sendmail 以通过端口 465 或 587(使用 STARTTLS)发送电子邮件?

Eva*_*son 8

将以下内容添加到您的 sendmail.mc:

define(`RELAY_MAILER_ARGS', `TCP $h 587')
define(`ESMTP_MAILER_ARGS’, `TCP $h 587?)
Run Code Online (Sandbox Code Playgroud)

这应该让 Sendmail 在端口 587 上发送出站邮件。

您还需要将 sendmail 配置为执行 TLS。这有点超出了您的问题范围,但是如果您不熟悉,您可以找到很多关于如何使用 Google 进行操作的不错指南。