在Ubuntu 20.04上配置Postfix以使用Gmail SMTP

欢迎来到我们关于如何配置 Postfix 以在 Ubuntu 20.04 上使用 Gmail SMTP 中继邮件的教程。Postfix是一个免费的开源邮件传输代理,用于路由和传递电子邮件。Postfix MTA 可以配置为通过外部 SMTP 服务器(例如 Gmail SMTP 服务器)中继邮件,以实现可靠的邮件传递。

在 Ubuntu 20.04 上安装 Postfix

您可以通过安装postfix包本身或通过mailutils与它一起安装的包来安装 Postfix。

apt install postfix

要么

apt install mailutils

在安装过程中,系统会提示您提供一些配置 Postfix 所需的信息。

选择邮件服务器类型

选择最适合您的环境需要的邮件服务器类型配置。您有多种选择;

  • No configuration:应该选择保持当前配置不变。
  • Internet site:使用 SMTP 直接发送和接收邮件。
  • Internet with smarthost: 使用 SMTP 或通过运行 fetchmail 等实用程序直接接收邮件。外发邮件使用智能主机发送。
  • Satellite system:所有邮件都被发送到另一台称为“智能主机”的机器上进行投递。
  • Local only: 唯一投递的邮件是本地用户的邮件。没有网络。

选择 Internet Site 启用 Postfix 以发送和接收邮件,然后按 Enter 继续。

设置系统邮件名称

是用于“限定”mail name没有域名的 _ALL_ 邮件地址的域名,例如kifarunix-demo.com,在我们的例子中。

您始终可以通过执行以下命令在安装后重新配置 postfix 来重置这些设置。

dpkg-reconfigure postfix

在 Ubuntu 20.04 上配置 Postfix 以使用 Gmail SMTP

Postfix 现在设置为默认配置。要进行进一步的配置更改,请编辑主 Postfix 配置文件,/etc/postfix/main.cf并根据需要进行任何必要的更改。

您可以使用 postconf 命令查看 Postfix 配置值;

postconf

设置 Postfix 中继服务器

Postfix 可以配置为通过中继主机间接传递邮件。可以使用relayhost参数在 Postfix 配置文件上定义中继主机。

默认情况下,relayhost参数的值为。这个配置 Postfix 是为了尝试将邮件直接投递到 Internet,这通常是不可取的。

根据Postfix 配置,可以为 relayhost 参数设置不同的值;

  • 在 Intranet 上,您可以指定您的组织域名。如果您的内部 DNS 不使用 MX 记录,请改为指定 Intranet 网关主机的名称。
  • 在 SMTP 或 LMTP 传送的情况下,以域名、主机名、主机名:端口、[主机名]:端口、[主机地址] 或 [主机地址]:端口的形式指定一个或多个目的地,以逗号或空格分隔。表单 [hostname] 关闭 MX 查找。

在我们的例子中,我们将 Postfix 中继设置为 Gmail SMTP 服务器。因此,打开 Postfix 主配置文件;

vim /etc/postfix/main.cf

找到行,,relayhost =并将其值设置为 Gmail SMTP 域名,如下所示;

...
mydestination = $myhostname, kifarunix-demo.com, ubuntu20, localhost.localdomain, localhost
relayhost = [smtp.gmail.com]:587
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
...

配置 Postfix SASL 身份验证

根据后缀

  • SMTP 服务器需要决定是否授权 SMTP 客户端将邮件发送到远程目的地,或仅发送到服务器本身负责的目的地。
  • 通常,当客户端的 IP 地址与服务器的 IP 地址在“同一网络”中时,SMTP 服务器会接受发送到远程目的地的邮件。
  • SMTP 服务器网络之外的 SMTP 客户端需要不同的方式来获得“相同网络”权限。为了满足这一需求,Postfix 支持 SASL 身份验证。这样,远程 SMTP 客户端可以向 Postfix SMTP 服务器进行身份验证,而 Postfix SMTP 客户端可以向远程 SMTP 服务器进行身份验证。
  • 一旦客户端通过身份验证,服务器就可以赋予它“相同的网络”权限。

要启用 SASL 服务器身份验证,您需要:

  • smtp_sasl_auth_enable 通过将值设置为来 启用 SMTP 客户端身份验证 yes

    smtp_sasl_auth_enable = yes

  • 配置 Postfix SMTP 客户端以将用户名和密码信息发送到邮件网关服务器。这可以通过将路径定义 sasl_passwd 为使用smtp_sasl_password_maps参数来完成。

    smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd

  • 对传出 SMTP 实施 STARTTLS 加密,以确保使用该smtp_tls_security_level参数加密与远程 smtp 服务器的连接。

    smtp_tls_security_level = encrypt

  • 定义 Postfix SMTP 客户端 SASL 安全选项。这是以下选项中的零个或多个;
    • noplaintext:禁止使用明文密码的方法。
    • noactive:禁止方法受到主动(非字典)攻击。
    • nodictionary:禁止方法受到被动(字典)攻击。
    • noanonymous:禁止允许匿名身份验证的方法。
    • 相互身份验证:仅允许提供相互身份验证的方法。

      smtp_sasl_security_options = noanonymous

这些配置可以在 Postfix 配置文件中更新(参见突出显示的行);

...
relayhost = [smtp.gmail.com]:587
...
#
...
smtp_tls_CApath=/etc/ssl/certs
#smtp_tls_security_level=may
smtp_tls_security_level=encrypt
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
...
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous

保存并退出配置文件。

设置 SMTP SASL 凭据

根据我们上面的配置,SASL 凭证数据库文件设置为/etc/postfix/sasl_passwd.

您应该以以下格式定义 SMTP 凭据;

# destination                   credentials
[smtp.domain.name]              username:password

如下所示;

vim /etc/postfix/sasl_passwd
[smtp.gmail.com]:587 userid@gmail.com :password

userid@gmailand替换为password您的 Gmail 帐户凭据。

笔记:

  • 如果您在 目标中指定“ [”和“] ”  ,relayhost您还必须在文件smtp_sasl_password_maps中使用相同的格式  。
  • 如果您在目标中指定非默认 TCP 端口(例如“ :submission”或“ :587”),则 relayhost 还必须在文件中使用相同的 smtp_sasl_password_maps 格式。

保护 SASL 密码文件

凭据以明文形式设置。为了保护其他用户对文件的访问,使文件只读+写入仅用于 root.

chown root:root /etc/postfix/sasl_passwd
chmod 600 /etc/postfix/sasl_passwd

创建 SASL 密码数据库文件

Postfix 要求该 sasl_passwd 文件是一个数据库,以便可以更快地读取它。使用 postmap 命令将文件转换为数据库,  sasl_passwd.db.

postmap /etc/postfix/sasl_passwd

这将为上面为 sasl_passwd 文件设置的数据库文件分配相同的所有权和权限。

ls -l /etc/postfix/sasl_passwd*
-rw------- 1 root root 53 Jun 1 13:57 /etc/postfix/sasl_passwd
-rw------- 1 root root 12288 Jun 1 14:06 /etc/postfix/sasl_passwd.db

检查postfix配置

运行 postfix check 命令检查 Postfix 配置是否有任何错误。任何错误都应打印在输出上。

postfix check

您可以忽略警告,postfix/postfix-script: warning: symlink leaves directory: /etc/postfix/./makedefs.out.

重启postfix

systemctl restart postfix

检查状态;

systemctl status postfix
● postfix.service - Postfix Mail Transport Agent
     Loaded: loaded (/lib/systemd/system/postfix.service; enabled; vendor preset: enabled)
     Active: active (exited) since Mon 2020-06-01 14:11:55 UTC; 5s ago
    Process: 7507 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
   Main PID: 7507 (code=exited, status=0/SUCCESS)

Jun 01 14:11:55 ubuntu20 systemd[1]: Starting Postfix Mail Transport Agent...
Jun 01 14:11:55 ubuntu20 systemd[1]: Finished Postfix Mail Transport Agent.

发送测试邮件以验证 Postfix Gmail SMTP 中继

完成配置后,您可以尝试发送测试邮件以验证 Gmail SMTP 中继是否正常工作。为此,您可以使用邮件客户端或任何其他客户端。

echo "Test Postfix Gmail SMTP Relay" | mail -s "Postfix Gmail SMTP Relay" userid@gmail.com

您可以跟踪日志以检查交付状态;

tail /var/log/mail.log

如果您收到错误消息;

...status=deferred (SASL authentication failed; server smtp.gmail.com[74.125.133.108] said: 535-5.7.8 Username and Password not accepted.

您需要登录您用于 SASL 身份验证的帐户并启用较不安全的应用程序访问

之后,重试发送测试邮件并检查日志,万岁,我们的测试邮件已送达,status=sent

...
Jun 1 14:22:42 ubuntu20 postfix/smtp[7650]: 6892D40186: to=userid@gmail.com, relay=smtp.gmail.com[173.194.76.109]:587, delay=4.8, delays=0.35/0.03/3.6/0.8, dsn=2.0.0, status=sent (250 2.0.0 OK 1591021361 k12sm19227410wrn.42 - gsmtp)
...

这标志着我们关于如何在 Ubuntu 20.04 上安装和配置 Postfix 以使用 Gmail SMTP 中继主机的指南的结束。享受。

阅读更多关于 Postfix 配置的信息;

Postfix 基本配置

相关教程

使用 Gmail 配置 Nagios 电子邮件通知

在 Ubuntu 18.04/Debian 10/9 上配置 Sendmail 以使用 Gmail 中继

在 Thunderbird 上使用 Enigmail 加密电子邮件

在 Ubuntu 18.04 上配置 Postfix 以使用 Gmail SMTP

 收藏 (0) 打赏

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

未经允许不得转载:番茄网 » 在Ubuntu 20.04上配置Postfix以使用Gmail SMTP

分享到: 生成海报

评论 抢沙发

  • QQ号
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

像番茄一样 表里如一

表里如一表里如一
切换注册

登录

忘记密码 ?

切换登录

注册

我们将发送一封验证邮件至你的邮箱, 请正确填写以完成账号注册和激活