作为系统管理员,您可以使用邮件传输代理(MTA)(如 Postfix)来配置电子邮件基础设施,以使用 SMTP 协议在主机之间传输电子邮件消息。Postfix 是用于路由和发送邮件的服务器端应用程序。您可以使用 Postfix 建立本地邮件服务器、创建 null-client 邮件转发、使用 Postfix 服务器作为多个域的目的地,或者选择 LDAP 目录而不是文件进行查找。
postfix 软件包在 /etc/postfix/ 目录中提供多个配置文件。
要配置电子邮件基础架构,请使用以下配置文件:
main.cf: 包含 Postfix 的全局配置。
master.cf: 指定 Postfix 与各种进程进行交互以完成邮件发送。
access :指定访问规则,例如允许连接到 Postfix 的主机。
transport :将电子邮件地址映射到中继主机。
aliases :包含一个邮件协议所需的可配置列表,其描述用户 ID 别名。请注意,您可以在 /etc/ 目录中找到此文件。
Postfix 的主要功能:
防止常见电子邮件相关威胁的安全功能
自定义选项,包括支持虚拟域和别名的选项
2.1. 安装和配置 Postfix SMTP 服务器复制链接链接已复制到粘贴板!
您可以将 Postfix SMTP 服务器配置为接收、存储和发送电子邮件消息。如果在系统安装期间没有选择邮件服务器软件包,则 Postfix 默认不可用。执行以下步骤来安装 Postfix:
先决条件
您有 root 访问权限。
注册您的系统
流程
删除 Sendmail 工具:
dnf remove sendmail
# dnf remove sendmail
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
安装 Postfix:
dnf install postfix
# dnf 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
# echo "This is a test message" | mail -s
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 文件。
其他资源
/etc/postfix/main.cf 配置文件
/usr/share/doc/postfix/README_FILES 目录
使用和配置 firewalld