将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
,就我们而言。
您始终可以通过执行以下命令在安装后通过重新配置后缀来重置这些设置。
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_enable
至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服务器的连接将使用
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身份验证的帐户并启用 安全性较低的应用程序访问。
之后,重试发送测试邮件并检查日志和欢呼声,我们的测试邮件已送达, 状态=已发送。
... 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配置的更多信息;
。