2.2. 安装和配置 Postfix SMTP 服务器
您可以将 Postfix SMTP 服务器配置为接收、存储和发送电子邮件消息。如果在系统安装期间没有选择邮件服务器软件包,则 Postfix 默认不可用。执行以下步骤来安装 Postfix:
先决条件
- 您有 root 访问权限。
- 注册您的系统
流程
禁用并删除 Sendmail 工具:
# dnf remove sendmail
安装 Postfix:
# dnf install postfix
要配置 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]
要将 Postfix 配置为侦听所有接口,请设置:
inet_interfaces = all
如果您希望 Postfix 使用与
gethostname()
函数返回的完全限定域名(FQDN)不同的主机名,请添加myhostname
参数:myhostname = <smtp.example.com>
例如,Postfix 将此主机名添加到其处理的电子邮件的标头中。
如果域名与
myhostname
参数中的不同,请添加mydomain
参数:mydomain = <example.com>
添加
myorigin
参数,并将其设置为mydomain
的值:myorigin = $mydomain
使用这个设置时,Postfix 使用域名作为本地发布的邮件的源,而不是主机名。
添加
mynetworks
参数,并定义允许发送邮件的可信网络的 IP 范围:mynetworks = 127.0.0.1/32, [::1]/128, 192.0.2.1/24, [2001:db8:1::1]/64
如果来自不信任网络(如互联网)的客户端应该能够通过这个服务器发送邮件,则您必须在后续步骤中配置中继限制。
验证
main.cf
文件中的 Postfix 配置是否正确:$ postfix check
启用
postfix
服务,以在引导时启动:# systemctl enable --now postfix
允许 smtp 流量通过防火墙,并重新载入防火墙规则:
# firewall-cmd --permanent --add-service smtp # firewall-cmd --reload
验证
验证
postfix
服务是否正在运行:# systemctl status postfix
可选:如果输出处于停止、等待状态或服务没有运行,请重启
postfix
服务:# systemctl restart postfix
可选:在更改
/etc/postfix/
目录中配置文件中的任何选项后,重新载入postfix
服务,以应用这些更改:# systemctl reload postfix
验证系统上本地用户之间的电子邮件通信:
# echo "This is a test message" | mail -s <SUBJECT> <user@mydomain.com>
要验证您的邮件服务器是否没有将来自外部 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.
-
登录到不在
故障排除
-
如果出现错误,请检查
/var/log/maillog
文件。
其他资源
-
/etc/postfix/main.cf
配置文件 -
/usr/share/doc/postfix/README_FILES
目录 - 使用和配置 firewalld