在 Ubuntu 上配置 Gmail 的 sendmail 功能

linuxoperating systemopen source更新于 2026/1/21 8:22:17

Sendmail 是一款流行的邮件传输代理,用于在计算机之间发送电子邮件。Ubuntu 默认安装了 Sendmail,这使得它成为从服务器发送电子邮件的便捷选择。如果您使用 Gmail,则可以配置 sendmail 以通过 Gmail 帐户发送电子邮件。

在本文中,我们将向您展示在 Ubuntu 上配置 Gmail 和 sendmail 的过程。

要求

开始之前,在 Ubuntu 上配置 Gmail 和 sendmail 需要满足一些要求 -

  • 一个 Gmail 帐户

  • 一台 Ubuntu 服务器

  • 在您的 Ubuntu 服务器上安装 Sendmail

  • 在您的 Ubuntu 服务器上安装 OpenSSL

如果您尚未安装 OpenSSL,可以通过运行以下命令进行安装 -

sudo apt-get install openssl

步骤 1:创建 Gmail 应用密码

配置使用 Gmail 发送邮件时,您需要创建一个应用程序密码。这是您将用于通过 sendmail 验证电子邮件帐户的唯一密码。

要创建应用密码,请按照以下步骤操作 -

  • 登录您的 Gmail 帐户。

  • 点击右上角的个人资料图片,然后选择"Google 帐户"。

  • 点击左侧菜单中的"安全"。

  • 向下滚动到"登录其他网站"部分,然后点击"应用密码"。

  • 选择"邮件"作为应用,并选择"其他(自定义名称)"作为设备。

  • 输入设备的自定义名称,然后点击"生成"。

  • 记下生成的 16 位密码。

步骤 2:配置Sendmail

现在您已经为 Gmail 帐户创建了应用密码,您可以配置 Sendmail 以使用它发送电子邮件。请按照以下步骤配置 Sendmail -

  • 运行以下命令打开 Sendmail 配置文件 -

sudo nano /etc/mail/sendmail.mc
  • 在文件末尾添加以下几行 -

define(SMART_HOST',[smtp.gmail.com]')dnl 
define(RELAY_MAILER_ARGS', TCP $h 587')dnl 
define(ESMTP_MAILER_ARGS', TCP $h 587')dnl 
define(confAUTH_OPTIONS', A p')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(authinfo',`hash /etc/mail/auth/client-info')dnl
  • 保存并关闭文件。

  • 运行以下命令重新生成 sendmail 配置 -

sudo make -C /etc/mail
  • 运行以下命令重启 sendmail 服务 -

sudo service sendmail restart

步骤 3:创建身份验证文件

接下来,您需要创建一个身份验证文件,其中包含您在步骤 1 中生成的应用密码。请按照以下步骤创建身份验证文件 -

  • 运行以下命令在 /etc/mail/auth 目录中创建一个新文件 -

sudo nano /etc/mail/auth/client-info
  • 在文件中添加以下行 -

AuthInfo:smtp.gmail.com "U:user@gmail.com" "P:16-digit-app-password"

将 "user@gmail.com" 替换为您的 Gmail 地址,并将 "16-digit-app-password" 替换为您在步骤 1 中生成的应用密码。

  • 保存并关闭文件。

  • 通过运行以下命令设置身份验证文件的权限 -

sudo chmod 600 /etc/mail/auth/client-info
  • 运行以下命令重新生成身份验证数据库 -

sudo makemap hash /etc/mail/auth/client-info < /etc/mail/auth/client-info

步骤 4:测试 Sendmail

最后,您可以通过发送电子邮件来测试 Sendmail 是否配置正确。请按照以下步骤使用 Sendmail 发送电子邮件 -

  • 在您的 Ubuntu 服务器上打开一个终端窗口。

  • 输入以下命令创建新电子邮件 -

echo "Subject: Test email" | sendmail -v recipient@email.com

将 "recipient@email.com" 替换为您要发送电子邮件的电子邮件地址。

  • 按 Enter 键,然后输入电子邮件正文。

  • 按 Ctrl+D 发送电子邮件。

  • 检查您发送电子邮件的电子邮件地址,并确认您已收到电子邮件。

如果您收到了电子邮件,则表示 sendmail 工作正常,并且已配置为使用您的 Gmail 帐户发送电子邮件。

使用 Gmail 配置 Sendmail 的优势

在 Ubuntu 上使用 Gmail 配置 Sendmail 有几个优势。其中包括:-

  • 可靠投递 - 当您使用 Gmail 配置 sendmail 时,您可以依靠 Gmail 服务器的稳定性和可靠性来确保您的电子邮件成功投递。

  • 更高的安全性 - 通过使用应用密码而不是常规的 Gmail 密码,您可以提高 Gmail 帐户的安全性并防止未经授权的访问。

  • 便捷性 - 使用 Gmail 配置 sendmail 是从 Ubuntu 服务器发送电子邮件的便捷方式。您可以从命令行发送电子邮件,也可以使用脚本自动执行电子邮件任务。

  • 低成本 - 使用 Gmail 配置 sendmail 是从 Ubuntu 服务器发送电子邮件的低成本解决方案。您无需设置自己的邮件服务器或支付外部电子邮件服务费用。

常见问题及故障排除

虽然使用 Gmail 配置 Sendmail 的过程相对简单,但您可能会遇到一些常见问题。以下是一些常见问题及其解决方案 -

  • "拒绝中继" - 如果您收到"拒绝中继"错误消息,则表示您的 Gmail 帐户未获得通过 Sendmail 发送电子邮件的授权。要解决此问题,您需要为您的 Gmail 帐户创建应用密码,并将其添加到 Sendmail 配置文件中。

  • 身份验证失败 - 如果您收到"身份验证失败"错误消息,则表示您使用的应用密码不正确。请仔细检查您输入的应用密码是否正确,然后重试。

  • SSL 证书验证 − 如果您收到"SSL 证书验证失败"的错误消息,则表示 sendmail 无法验证 Gmail 服务器的 SSL 证书。要解决此问题,您需要运行以下命令安装 ca-certificates 软件包:

sudo apt-get install ca-certificates
  • 端口 587 被阻止 − 如果您收到"连接被拒绝"或"连接超时"的错误消息,则可能是因为您的服务器的端口 587 被阻止了。您可以通过运行以下命令检查 587 端口是否已打开 -

telnet smtp.gmail.com 587

如果连接被拒绝或超时,您可能需要检查防火墙设置或联系您的主机提供商。

结论

在 Ubuntu 上配置 Gmail 的 sendmail 非常简单,只需几个简单的步骤即可完成。按照本文概述的步骤,您可以轻松设置 sendmail 以通过您的 Gmail 帐户发送电子邮件。设置完成后,您可以使用 sendmail 从 Ubuntu 服务器向任何其他电子邮件服务器发送电子邮件,使其成为便捷的电子邮件通信工具。


相关文章


有用资源