第 8 章 部署和配置 Postfix SMTP 服务器
作为系统管理员,您可以使用邮件传输代理(MTA) (如 Postfix)配置电子邮件基础架构,以使用 SMTP 协议在主机之间传输电子邮件消息。Postfix 是用于路由和发送邮件的服务器端应用程序。您可以使用 Postfix 建立本地邮件服务器、创建 null-client 邮件转发、使用 Postfix 服务器作为多个域的目的地,或者选择 LDAP 目录而不是文件进行查找。
postfix 软件包在 /etc/postfix/ 目录中提供多个配置文件。
要配置电子邮件基础架构,请使用以下配置文件:
-
main.cf- 包含 Postfix 的全局配置。 -
master.cf- 指定 Postfix 与各种进程的交互,以完成邮件发送。 -
access- 指定访问规则,例如允许连接到 Postfix 的主机。 -
transport- 将电子邮件地址映射到中继主机。 -
alias- 包含邮件协议所需的可配置列表,用于描述用户 ID 别名。请注意,您可以在/etc/目录中找到此文件。
Postfix 的主要功能:
- 防止常见电子邮件相关威胁的安全功能
- 自定义选项,包括支持虚拟域和别名的选项
8.1. 安装和配置 Postfix SMTP 服务器 复制链接链接已复制到粘贴板!
您可以将 Postfix SMTP 服务器配置为接收、存储和发送电子邮件消息。如果在系统安装期间没有选择邮件服务器软件包,则 Postfix 默认不可用。执行以下步骤来安装 Postfix:
先决条件
- 您有 root 访问权限。
- 注册您的系统
流程
删除 Sendmail 工具:
yum remove sendmail
# yum remove sendmailCopy to Clipboard Copied! Toggle word wrap Toggle overflow 安装 Postfix:
yum install postfix
# yum install postfixCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要配置 Postfix,请编辑
/etc/postfix/main.cf文件,并进行以下更改:默认情况下,Postfix 仅在
loopback接口上接收电子邮件。要将 Postfix 配置为侦听特定的接口,请将inet_interfaces参数更新为这些接口的 IP 地址:inet_interfaces = 127.0.0.1/32, [::1]/128, 192.0.2.1, [2001:db8:1::1]
inet_interfaces = 127.0.0.1/32, [::1]/128, 192.0.2.1, [2001:db8:1::1]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要将 Postfix 配置为侦听所有接口,请设置:
inet_interfaces = all
inet_interfaces = allCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您希望 Postfix 使用与
gethostname()函数返回的完全限定域名(FQDN)不同的主机名,请添加myhostname参数:myhostname = smtp.example.com
myhostname = smtp.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 例如,Postfix 将此主机名添加到它处理的电子邮件的标头中。
如果域名与
myhostname参数中的不同,请添加mydomain参数:mydomain = example.com
mydomain = example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 添加
myorigin参数,并将其设置为mydomain的值:myorigin = $mydomain
myorigin = $mydomainCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用这个设置时,Postfix 使用域名而不是主机名作为本地发送的邮件的源。
添加
mynetworks参数,并定义允许发送邮件的可信网络的 IP 范围:mynetworks = 127.0.0.1/32, [::1]/128, 192.0.2.1/24, [2001:db8:1::1]/64
mynetworks = 127.0.0.1/32, [::1]/128, 192.0.2.1/24, [2001:db8:1::1]/64Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果来自不受信任网络(如互联网)的客户端应能够通过这个服务器发送邮件,则您必须在后续步骤中配置中继限制。
验证
main.cf文件中的 Postfix 配置是否正确:postfix check
# postfix checkCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在引导时启用
postfix服务,并启动它:systemctl enable --now postfix
# systemctl enable --now postfixCopy to Clipboard Copied! Toggle word wrap Toggle overflow 允许 smtp 流量通过防火墙,并重新载入防火墙规则:
firewall-cmd --permanent --add-service smtp firewall-cmd --reload
# firewall-cmd --permanent --add-service smtp # firewall-cmd --reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证
postfix服务是否正在运行:systemctl status postfix
# systemctl status postfixCopy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:如果输出处于停止、等待或服务没有运行,请重启
postfix服务:systemctl restart postfix
# systemctl restart postfixCopy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:在更改
/etc/postfix/目录中配置文件中的任何选项后,请重新载入postfix服务以应用这些更改:systemctl reload postfix
# systemctl reload postfixCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证系统上本地用户之间的电子邮件通信:
echo "This is a test message" | mail -s <subject> <user@mydomain.com>
# echo "This is a test message" | mail -s <subject> <user@mydomain.com>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要验证您的邮件服务器是否没有将来自外部 IP 范围的电子邮件中继到外域,请按照以下提到的流程操作:
-
登录到不在
mynetworks中定义的子网内的客户端。 - 将客户端配置为使用您的邮件服务器。
-
尝试将电子邮件发送到不在您邮件服务器上的 mydomain 中指定的域下的电子邮件地址。例如,尝试向
non-existing-user@redhat.com发送电子邮件。 检查
/var/log/maillog文件:554 Relay access denied - the server is not going to relay. 250 OK or similar - the server is going to relay.
554 Relay access denied - the server is not going to relay. 250 OK or similar - the server is going to relay.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
登录到不在
故障排除
-
如果出现错误,请检查
/var/log/maillog文件。