第 2 章 部署和配置 Postfix SMTP 服务器


作为系统管理员,您可以使用邮件传输代理(MTA) (如 Postfix)来配置电子邮件基础架构,以使用 SMTP 协议在主机之间传输电子邮件消息。Postfix 是用于路由和发送邮件的服务器端应用程序。您可以使用 Postfix 建立本地邮件服务器、创建 null-client 邮件转发、使用 Postfix 服务器作为多个域的目的地,或者选择 LDAP 目录而不是文件进行查找。

postfix 软件包在 /etc/postfix/ 目录中提供多个配置文件。

要配置电子邮件基础架构,请使用以下配置文件:

  • main.cf: 包含 Postfix 的全局配置。
  • master.cf: 指定 Postfix 与各种进程的交互以完成邮件发送。
  • access :指定访问规则,例如允许连接到 Postfix 的主机。
  • 传输 :将电子邮件地址映射到中继主机。
  • 别名 :包含邮件协议所需的可配置列表,用于描述用户 ID 别名。请注意,您可以在 /etc/ 目录中找到此文件。

Postfix 的主要功能:

  • 防止常见电子邮件相关威胁的安全功能
  • 自定义选项,包括支持虚拟域和别名的选项

2.1. 安装和配置 Postfix SMTP 服务器

您可以将 Postfix SMTP 服务器配置为接收、存储和发送电子邮件消息。如果在系统安装期间没有选择邮件服务器软件包,则 Postfix 默认不可用。执行以下步骤来安装 Postfix:

先决条件

流程

  1. 删除 Sendmail 工具:

    # dnf remove sendmail
    Copy to Clipboard
  2. 安装 Postfix:

    # dnf install postfix
    Copy to Clipboard
  3. 要配置 Postfix,请编辑 /etc/postfix/main.cf 文件,并进行以下更改:

    1. 默认情况下,Postfix 仅在 loopback 接口上接收电子邮件。要将 Postfix 配置为侦听特定的接口,请将 inet_interfaces 参数更新为这些接口的 IP 地址:

      inet_interfaces = 127.0.0.1/32, [::1]/128, 192.0.2.1, [2001:db8:1::1]
      Copy to Clipboard

      要将 Postfix 配置为侦听所有接口,请设置:

      inet_interfaces = all
      Copy to Clipboard
    2. 如果您希望 Postfix 使用与 gethostname() 函数返回的完全限定域名(FQDN)不同的主机名,请添加 myhostname 参数:

      myhostname = smtp.example.com
      Copy to Clipboard

      例如,Postfix 将此主机名添加到它处理的电子邮件的标头中。

    3. 如果域名与 myhostname 参数中的不同,请添加 mydomain 参数:

      mydomain = example.com
      Copy to Clipboard
    4. 添加 myorigin 参数,并将其设置为 mydomain 的值:

      myorigin = $mydomain
      Copy to Clipboard

      使用这个设置时,Postfix 使用域名而不是主机名作为本地发送的邮件的源。

    5. 添加 mynetworks 参数,并定义允许发送邮件的可信网络的 IP 范围:

      mynetworks = 127.0.0.1/32, [::1]/128, 192.0.2.1/24, [2001:db8:1::1]/64
      Copy to Clipboard

      如果来自于不受信任的网络(如互联网)的客户端应能够通过这个服务器发送邮件,则必须在后续步骤中配置中继限制。

  4. 验证 main.cf 文件中的 Postfix 配置是否正确:

    # postfix check
    Copy to Clipboard
  5. 在引导时启用 postfix 服务,并启动它:

    # systemctl enable --now postfix
    Copy to Clipboard
  6. 允许 SMTP 流量通过防火墙并重新载入防火墙规则:

    # firewall-cmd --permanent --add-service smtp
    # firewall-cmd --reload
    Copy to Clipboard

验证

  1. 验证 postfix 服务是否正在运行:

    # systemctl status postfix
    Copy to Clipboard
    • 可选:如果输出处于停止、等待或服务没有运行,请重启 postfix 服务:

      # systemctl restart postfix
      Copy to Clipboard
    • 可选:在更改 /etc/postfix/ 目录中配置文件中的任何选项后,请重新载入 postfix 服务以应用这些更改:

      # systemctl reload postfix
      Copy to Clipboard
  2. 验证系统上本地用户之间的电子邮件通信:

    # echo "This is a test message" | mail -s <subject> <user@mydomain.com>
    Copy to Clipboard
  3. 要验证您的邮件服务器是否没有将来自外部 IP 范围的电子邮件中继到外域,请按照以下提到的流程操作:

    1. 登录到不在 mynetworks 中定义的子网内的客户端。
    2. 将客户端配置为使用您的邮件服务器。
    3. 尝试发送电子邮件到不在您邮件服务器的 mydomain 中指定的域下的电子邮件地址。例如,尝试向 non-existing-user@redhat.com 发送电子邮件。
    4. 检查 /var/log/maillog 文件:

      554 Relay access denied - the server is not going to relay.
      250 OK or similar - the server is going to relay.
      Copy to Clipboard

故障排除

  • 如果出现错误,请检查 /var/log/maillog 文件。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat