第 20 章 使用 RHEL 系统角色配置 Postfix MTA


您可以使用 postfix RHEL 系统角色,以自动的方式一致地管理 Postfix 邮件传输代理(MTA)的配置。当您需要时,部署这样的配置很有用,例如:

  • 稳定的邮件服务器:使系统管理员能够配置快速且可扩展的服务器,以发送和接收电子邮件。
  • 保护通信:支持 TLS 加密、身份验证、域黑名单等功能,以确保安全的电子邮件传输。
  • 改进了电子邮件管理和路由:实施过滤器和规则,以便您控制电子邮件流量。
重要

postfix_conf 字典保存支持的 Postfix 配置参数的键值对。Postfix 无法识别为支持的密钥将被忽略。postfix RHEL 系统角色直接将您提供的键值对传递给 postfix_conf 字典,而不验证其语法或限制它们。因此,角色对于熟悉 Postfix 的以及知道如何配置它的人特别有用。

空客户端是一种特殊配置,其中设置 Postfix 服务器只为发送传出电子邮件,但不接收任何传入电子邮件。在您需要发送通知、警报或日志,但不需要接收或管理电子邮件的情况,这种设置被广泛使用。通过使用 Ansible 和 postfix RHEL 系统角色,您可以自动化这个过程,并远程将 Postfix 服务器配置为空客户端,以便仅发送传出电子邮件。

先决条件

流程

  1. 创建一个包含以下内容的 playbook 文件,如 ~/playbook.yml

    ---
    - name: Manage Postfix
      hosts: managed-node-01.example.com
      tasks:
        - name: Configure null client for only sending outgoing emails
          ansible.builtin.include_role:
            name: redhat.rhel_system_roles.postfix
          vars:
            postfix_conf:
              myhostname: server.example.com
              myorigin: "$mydomain"
              relayhost: smtp.example.com
              inet_interfaces: loopback-only
              mydestination: ""
              relay_domains: "{{ postfix_default_database_type }}:/etc/postfix/relay_domains"
            postfix_files:
              - name: relay_domains
                postmap: true
                content: |
                  example.com OK
                  example.net OK
    Copy to Clipboard Toggle word wrap

    示例 playbook 中指定的设置包括如下:

    myhostname: <server.example.com>
    此邮件系统的互联网主机名。默认为完全限定域名(FQDN)。
    myorigin: $mydomain
    本地发布的邮件似乎来自的域名,并且本地发布的邮件被递送到的域名。默认为 $myhostname
    relayhost: <smtp.example.com>
    非本地邮件的下一跳目的地,覆盖收件人地址中的非本地域。默认为空字段。
    inet_interfaces: loopback-only
    对于传入电子邮件连接,定义 Postfix 服务器侦听哪个网络接口。它控制 Postfix 服务器是否以及如何接收来自网络的电子邮件。
    mydestination
    定义哪些域和主机名被视为本地。
    relay_domains: "{{ postfix_default_database_type }}:/etc/postfix/relay_domains"
    在充当中继服务器(SMTP 转发)时,指定 Postfix 可将电子邮件转发到的域。在这种情况下,域将由 postfix_files 变量生成。postfix_default_database_type 变量包含在 "default_database_type" Postfix 参数中设置的数据库类型。在 RHEL 10 上,您必须使用 relay_domains: "{{ postfix_default_database_type }}:/etc/postfix/relay_domains"
    postfix_files
    定义将放在 /etc/postfix/ 目录中的文件的列表。如果需要,这些文件可以被转换为 Postfix 查找表。在这种情况下,postfix_files 为 SMTP 转发生成域名。

    有关 playbook 中使用的角色变量和 Postfix 配置参数的详情,请查看控制节点上的 /usr/share/ansible/roles/rhel-system-roles.postfix/README.md 文件和 postconf(5) 手册页。

  2. 验证 playbook 语法:

    $ ansible-playbook --syntax-check ~/playbook.yml
    Copy to Clipboard Toggle word wrap

    请注意,这个命令只验证语法,不能防止错误的、但有效的配置。

  3. 运行 playbook:

    $ ansible-playbook ~/playbook.yml
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat