将Postfix配置为在CentOS 8上使用Gmail SMTP

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

将Postfix配置为在CentOS 8上使用Gmail SMTP

在CentOS 8上安装Postfix

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

dnf install postfix

在CentOS 8上安装SASL

SASL(简单身份验证和安全层)提供了一种使用用户名和密码对用户进行身份验证的机制。 Cyrus SASL库提供了SASL的实现,可以通过运行以下命令将其安装在CentOS 8系统上;

dnf install cyrus-sasl-plain 

在CentOS 8上安装Mail Command

CentOS 8上的Mail命令由mailx软件包提供。

dnf install mailx

将Postfix配置为在CentOS 8上使用Gmail SMTP

现在已使用默认配置安装Postfix。您可以使用postconf命令查看Postfix配置值。

postconf

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

设置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

在Intranet / Internet部分下,找到 relayhost =,然后将其值设置为Gmail SMTP域名,如下所示;

...
#relayhost = $mydomain
#relayhost = [gateway.my.domain]
#relayhost = [mailserver.isp.tld]
#relayhost = uucphost
#relayhost = [an.ip.add.ress]
relayhost = [smtp.gmail.com]:587

配置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
...
#
...
# SASL authentication
# change may to encrypt.
smtp_tls_security_level = encrypt
meta_directory = /etc/postfix
shlib_directory = /usr/lib64/postfix
# Added these lines
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帐户凭据。

注意:

  • 如果您指定“[” and “]“ 在里面 relayhost 目的地,您还必须在 smtp_sasl_password_maps 文件。
  • 如果您指定了非默认的TCP端口(例如“:submission“ 要么”:587“) 在里面 relayhost 目的地,您还必须在 smtp_sasl_password_maps 文件。

保护SASL密码文件

凭据以纯文本设置。为了保护其他用户对文件的访问,请仅对文件进行读写操作 root

chown root:root /etc/postfix/sasl_passwd
chmod go-rwx /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 56 Dec 2 22:02 /etc/postfix/sasl_passwd
-rw-------. 1 root root 12288 Dec 2 22:03 /etc/postfix/sasl_passwd.db

检查Postfix配置

跑过 postfix check 命令以检查Postfix配置是否存在任何错误。任何错误都应打印在输出上。

postfix check

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

启动并启用Postfix以在系统启动时运行;

systemctl enable --now  postfix

检查状态;

systemctl status postfix
● postfix.service - Postfix Mail Transport Agent
   Loaded: loaded (/usr/lib/systemd/system/postfix.service; disabled; vendor preset: disabled)
   Active: active (running) since Wed 2020-12-02 22:04:20 EAT; 6s ago
  Process: 3653 ExecStart=/usr/sbin/postfix start (code=exited, status=0/SUCCESS)
  Process: 3651 ExecStartPre=/usr/libexec/postfix/chroot-update (code=exited, status=0/SUCCESS)
  Process: 3647 ExecStartPre=/usr/libexec/postfix/aliasesdb (code=exited, status=0/SUCCESS)
 Main PID: 3721 (master)
    Tasks: 3 (limit: 5027)
   Memory: 5.6M
   CGroup: /system.slice/postfix.service
           ├─3721 /usr/libexec/postfix/master -w
           ├─3722 pickup -l -t unix -u
           └─3723 qmgr -l -t unix -u

Dec 02 22:04:19 centos8.kifarunix-demo.com systemd[1]: Starting Postfix Mail Transport Agent...
Dec 02 22:04:20 centos8.kifarunix-demo.com postfix/master[3721]: daemon started -- version 3.3.1, configuration /etc/postfix
Dec 02 22:04:20 centos8.kifarunix-demo.com systemd[1]: Started 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配置为在CentOS 8上使用Gmail SMTP

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

...
Dec  2 22:04:56 ceph-admin postfix/qmgr[3723]: 46993C35EAC: from=<[email protected]>, size=513, nrcpt=1 (queue active)
Dec  2 22:05:00 ceph-admin postfix/smtp[3732]: 46993C35EAC: to=<[email protected]>, relay=smtp.gmail.com[108.177.127.109]:587, delay=4, delays=0.47/0.33/2/1.2, dsn=2.0.0, status=sent (250 2.0.0 OK  1606935899 f18sm554842edt.60 - gsmtp)
...

这就是将Postfix配置为使用Gmail作为SMTP中继主机的容易程度。这标志着我们指南的结尾,该指南关于如何安装和配置Postfix以在CentOS 8上使用Gmail SMTP中继主机。

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

Postfix基本配置

Sidebar