将Postfix配置为在Ubuntu 20.04上使用Gmail SMTP

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

将Postfix配置为在Ubuntu 20.04上使用Gmail SMTP

在Ubuntu 20.04上安装Postfix

您可以通过安装 postfix 包装本身或通过 mailutils 随它一起安装的软件包。

apt install postfix

要么

apt install mailutils

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

选择邮件服务器类型

选择最适合您的环境需求的邮件服务器类型配置。为您提供了多种选择。

  • No configuration:应选择保留当前配置不变。
  • Internet site:直接使用SMTP发送和接收邮件。
  • Internet with smarthost:直接使用SMTP或运行实用程序(例如fetchmail)来接收邮件。外发邮件是使用smarthost发送的。
  • Satellite system:所有邮件都发送到另一台称为“ smarthost”的机器上进行传递。
  • Local only:唯一传递的邮件是本地用户的邮件。没有网络。

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

设置系统邮件名称

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

将Postfix配置为在Ubuntu 20.04上使用Gmail SMTP

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

dpkg-reconfigure postfix

将Postfix配置为在Ubuntu 20.04上使用Gmail SMTP

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

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

postconf

设置Postfix中继服务器

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

默认情况下, relayhost 参数是 空的。此配置Postfix试图将邮件直接传递到Internet,这通常是不希望的。

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

  • 在Intranet上,您可以指定组织域名。如果内部DNS不使用MX记录,请改为指定Intranet网关主机的名称。
  • 如果是SMTP或LMTP交付,请以域名,主机名,主机名:端口, [hostname]:港口, [hostaddress] 要么 [hostaddress]:port,用逗号或空格分隔。表格 [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客户端身份验证 smtp_sasl_auth_enableyessmtp_sasl_auth_enable = yes
  • 配置Postfix SMTP客户端以将用户名和密码信息发送到邮件网关服务器。这可以通过定义以下路径来完成: sasl_passwd 作为使用 smtp_sasl_password_maps 参数。smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
  • 对传出SMTP强制执行STARTTLS加密,以确保与远程SMTP服务器的连接将使用 smtp_tls_security_level 参数。smtp_tls_security_level = encrypt
  • 定义Postfix SMTP客户端SASL安全选项。这是零个或多个以下选项;
    • noplaintext: 禁止使用纯文本密码的方法。
    • 不活跃:禁止遭受主动(非词典)攻击的方法。
    • 虚构的:禁止遭受被动(词典)攻击的方法。
    • 匿名的:禁止允许匿名身份验证的方法。
    • 相互认证:仅允许提供相互认证的方法。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 [email protected]:password

更换 [email protected]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" [email protected]

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

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身份验证的帐户并启用 安全性较低的应用程序访问

将Postfix配置为在Ubuntu 20.04上使用Gmail SMTP

之后,重试发送测试邮件并检查日志和欢呼声,我们的测试邮件已送达, 状态=已发送

...
Jun 1 14:22:42 ubuntu20 postfix/smtp[7650]: 6892D40186: to=[email protected], 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基本配置

Sidebar