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

使用 postfix 角色,您可以统一简化 Postfix 服务的自动配置,该服务是一个具有模块化设计和各种配置选项的 Sendmail 兼容的邮件传输代理(MTA)。rhel-system-roles 软件包中包含这个系统角色以及参考文档。

10.1. 使用 postfix 系统角色自动化基本的 Postfix MTA 管理

您可以使用 postfix RHEL 系统角色在受管节点上安装、配置和启动 Postfix 邮件传输代理。

先决条件

  • 您已准备好控制节点和受管节点
  • 以可在受管主机上运行 playbook 的用户登录到控制节点。
  • 用于连接到受管节点的帐户在其上有 sudo 权限。
  • 要在其上运行此 playbook 的受管节点或受管节点组列在 Ansible 清单文件中。

流程

  1. 创建一个定义 postfix 角色的 playbook:

    1. 创建一个新的 YAML 文件,如 ~/postfix-playbook.yml,并在文本编辑器中打开它,例如:

      # vi postfix-playbook.yml
    2. 配置 relay_domains=$mydestinationrelayhost=example.com 变量:

      - name: Manage postfix
        hosts: all
        vars:
      	postfix_conf:
        		relay_domains: $mydestination
        		relayhost: example.com
        roles:
      	- linux-system-roles.postfix
    3. 如果您希望 Postfix 使用与 gethostname () 函数返回的完全限定域名(FQDN)不同的主机名,请在文件中的 postfix_conf: 行下添加 myhostname 参数:

      myhostname = smtp.example.com
    4. 如果域名与 myhostname 参数中的域名不同,请添加 mydomain 参数。否则,会使用 $myhostname 减去第一个组件。

      mydomain = <example.com>
    5. 使用 postfix_manage_firewall: true 变量来确保 SMTP 端口在服务器的防火墙中打开。

      管理 SMTP 相关的端口 25/tcp465/tcp587/tcp。如果变量设为 false,则 postfix 角色不管理防火墙。默认值为 false

      注意

      postfix_manage_firewall 变量仅限于添加端口。它不能用来删除端口。如果要删除端口,请直接使用 firewall RHEL 系统角色。

    6. 如果您的场景涉及使用非标准端口,请设置 postfix_manage_selinux: true 变量,以确保端口在服务器上为 SELinux 正确标记。

      注意

      postfix_manage_selinux 变量仅限于向 SELinux 策略中添加规则。它不能从策略中删除规则。如果要删除规则,请直接使用 selinux 系统角色。

  2. 对特定清单运行 playbook:

    # ansible-playbook -i <inventory-file> </path/to/file/postfix-playbook.yml>

    其中:

    • <inventory-file> 是清单文件。
    • <postfix-playbook.yml> 是您使用的 playbook。

其他资源