第 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 sendmail- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 安装 Postfix: - yum install postfix - # yum install postfix- Copy 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 = all- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 如果您希望 Postfix 使用与 - gethostname()函数返回的完全限定域名(FQDN)不同的主机名,请添加- myhostname参数:- myhostname = smtp.example.com - myhostname = smtp.example.com- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 例如,Postfix 将此主机名添加到它处理的电子邮件的标头中。 
- 如果域名与 - myhostname参数中的不同,请添加- mydomain参数:- mydomain = example.com - mydomain = example.com- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 添加 - myorigin参数,并将其设置为- mydomain的值:- myorigin = $mydomain - myorigin = $mydomain- Copy 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]/64- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 如果来自不受信任网络(如互联网)的客户端应能够通过这个服务器发送邮件,则您必须在后续步骤中配置中继限制。 
 
- 验证 - main.cf文件中的 Postfix 配置是否正确:- postfix check - # postfix check- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 在引导时启用 - postfix服务,并启动它:- systemctl enable --now postfix - # systemctl enable --now postfix- Copy 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 --reload- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
验证
- 验证 - postfix服务是否正在运行:- systemctl status postfix - # systemctl status postfix- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 可选:如果输出处于停止、等待或服务没有运行,请重启 - postfix服务:- systemctl restart postfix - # systemctl restart postfix- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 可选:在更改 - /etc/postfix/目录中配置文件中的任何选项后,请重新载入- postfix服务以应用这些更改:- systemctl reload postfix - # systemctl reload postfix- Copy 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文件。