本文来自微信公众号:红帽

许多企业组织都需要在红帽企业Linux(RHEL)服务器上配置邮件传输代理(MTA)。这样做是为了让服务器能够通过电子邮件发送通知或报告。例如,可以配置一个脚本以在事件发生后通过电子邮件发送通知,或者可能有一个脚本在生成月度报告后通过电子邮件发送。

RHEL 7、8和9为MTA提供了两个选项:Postfix和 Sendmail。Sendmail已被弃用,本文将重点关注 Postfix。

可以按照文档说明在RHEL系统上手动安装和配置Postfix,但这会很耗时并且容易出错。红帽引入了postfix RHEL System Role,提供一个自动化的解决方案来安装和配置Postfix。postfix RHEL System Role是在RHEL 7.6中作为技术预览功能引入的。随着RHEL 8.5的发布,现在完全支持postfix RHEL System Role。

postfix RHEL System Role是RHEL中包含的Ansible角色和模块的集合,可帮助提供一致的工作流程并简化手动任务的执行。

环境概述

在我的示例环境中,有一个名为controlnode的控制节点系统,运行着RHEL 8和四个受管节点:rhel8-server1、rhel8-server2、rhel7-server1和rhel7-server2(前两个运行RHEL 8,另外两个运行RHEL 7)。

我想在每一个托管节点上配置Postfix:

  • rhel8-server1应该使用基本的Postfix配置来接受来自本地子网(包含其他受管节点)的邮件。

  • rhel8-server2、rhel7-server1和rhel7-server2应配置为只转发空客户端,并应将邮件转发到rhel8-server1。

我已经在五台服务器上设置了一个Ansible服务帐户,命名为ansible,并设置了SSH密钥身份验证,以便controlnode上的ansible帐户可以登录到每个系统。此外,ansible服务帐户已配置为通过sudo在每个主机上访问root帐户。

我还在controlnode上安装了rhel-system-roles和ansible包。有关这些任务的更多信息,请参阅RHEL System Roles博文。

在这个环境中,我使用的是RHEL 8控制节点,你也可以使用Ansible自动化控制器或红帽卫星作为RHEL系统角色控制节点。Ansible自动化控制器提供了许多使用RHEL 控制节点时,不可用的高级自动化特性和功能。

定义清单文件和角色变量

从controlnode系统开始,第一步是创建一个新的目录结构:

[ansible@controlnode ~]$ mkdir -p postfix/group_vars

这些目录将按如下方式使用:

  • postfix目录将包含playbook和库存文件。

  • postfix/group_vars文件将包含清单组的变量文件,这些文件将应用于各个Ansible清单组中的主机。

我需要定义一个Ansible清单文件来列出和分组我希望postfix系统角色配置的主机。我将在postfix/inventory.yml中创建包含以下内容的库存文件:

all:children:postfix_server:hosts:rhel8-server1.example.com:postfix_null_client:hosts:rhel8-server2.example.com:rhel7-server1.example.com:rhel7-server2.example.com:

此清单定义了两个清单组:

  • postfix_server库存组包含rhel8-server1主机。

  • postfix_null_client库存组包含rhel8-server2、rhel7-server1和rhel7-server2主机。

请注意:如果使用Ansible自动化控制器作为控制节点,则可以通过SCM项目(例如GitHub或GitLab)或使用文档中指定的awx-manage实用程序,将此清单导入红帽Ansible自动化平台。

接下来,我将定义角色变量,这些变量将控制postfix系统角色在运行时的行为。postfix角色的README.md文件,位于/usr/share/doc/rhel-system-roles/postfix/README.md,包含有关角色的重要信息,包括可用角色变量的列表以及如何使用它们。

我将通过在postfix/group_vars/postfix_server.yml中创建一个包含以下内容的文件来创建一个文件,该文件将为postfix_server库存组中列出的受管节点定义变量:

postfix_conf:mydomain: "example.com"myorigin: "$mydomain"myhostname: "{{ inventory_hostname }}"mydestination: "$myhostname, localhost.$mydomain"mynetworks: "192.168.0.0/24"inet_interfaces: "all"

这将导致postfix角色使用基本Postfix配置,来配置postfix_server库存组 (rhel8-server1) 中的主机,该配置将接受来自192.168.0.0/24子网的连接,该子网是包含所有托管节点的网络。

我还将创建一个文件,通过在postfix/group_vars/postfix_null_client.yml中创建一个包含以下内容的文件,为postfix_null_client库存组中列出的受管节点定义变量:

postfix_conf:myhostname: "{{ inventory_hostname }}"myorigin: "$mydomain"relayhost: "rhel8-server1.example.com"inet_interfaces: "loopback-only"mydestination: ""

这将导致postfix角色将postfix_null_client库存组(rhel8-server2、rhel7-server1、rhel7-server)中的主机配置为仅转发空客户端,这些客户端将使用rhel8-server1作为其中继主机。

创建脚本

下一步是在postfix/postfix.yml创建playbook文件,内容如下:

- name: Open firewall for smtp on postfix_server grouphosts: postfix_servertasks:- firewalld:service: smtppermanent: yesimmediate: yesstate: enabled- name: Run postfix rolehosts: allroles:- rhel-system-roles.postfix

第一个任务,为postfix_server组上的smtp打开防火墙,将仅在postfix_server库存组中的rhel8-server1主机上运行,此任务将为smtp服务打开防火墙。

第二个任务,运行postfix role,将在所有四个受管节点上运行,并将使用先前定义的变量在每个主机上安装和配置Postfix。

请注意:如果您使用Ansible自动化控制器作为控制节点,可以按照此处提供的文档https://docs.ansible.com/ansible-tower/latest/html/userguide/projects.html,通过创建项目将此Ansible脚本导入红帽Ansible自动化平台。使用Git存储库来存储Ansible脚本很常见。Ansible自动化平台将自动化存储在称为作业的单元中,其中包含脚本、凭据和库存。按照此处的文档创建作业模板。

运行脚本

一切就绪,我已经准备好运行脚本了。对于此演示,我使用RHEL控制节点,并将从命令行运行playbook。我使用cd命令进入postfix目录,然后使用ansible-playbook命令运行playbook。

[ansible@controlnode ~]$ cd postfix
[ansible@controlnode postfix]$ ansible-playbook postfix.yml -b -i inventory.yml

我指定运行postfix.yml playbook,它应该升级到root(-b 标志),并且应该将inventory.yml文件用作我的Ansible清单(-i 标志)。

脚本完成后,我验证没有失败的任务:

请注意:如果使用Ansible自动化控制器作为控制节点,则可以从自动化控制器Web界面启动作业。

验证配置

为了验证配置,我将分别登录三个只进空客户端(rhel8-server2、rhel7-server1、rhel7-server2)并向brian@rhel8-server1.example.com电子邮件地址发送电子邮件。然后,我将验证rhel8-server1.example.com主机上的brian帐户是否收到了电子邮件。

我将通过发送电子邮件开始验证rhel8-server2:

[root@rhel8-server2 ~]# mail brian@rhel8-server1.example.com
Subject: Test email from rhel8-server2
EOT
Null message body; hope that's ok

按Ctrl-d发送测试消息。我将在rhel7-server1和rhel7-server2上重复此步骤以发送来自它们的电子邮件。

接下来,我将以brian帐户登录rhel8-server1并验证电子邮件是否已收到:

[brian@rhel8-server1 ~]$ mail
Heirloom Mail version 12.5 7/5/10.  Type ? for help.
"/var/spool/mail/brian": 3 messages 3 new
>N  1 root                  Wed Nov 24 10:01  21/870   "Test email from rhel8-server2"N  2 root                  Wed Nov 24 10:03  21/861   "Test email from rhel7-server1"N  3 root                  Wed Nov 24 10:03  21/863   "Test email from rhel7-server2"
&

结论

postfix RHEL System Role可以帮助你以自动化的方式在RHEL环境中快速、一致地实施Postfix MTA。

我们提供了许多RHEL系统角色,可以帮助自动化RHEL环境的其他重要方面。要探索其他角色,请查看可用RHEL系统角色列表,并立即开始以更高效、一致和自动化的方式管理RHEL服务器。

如何用RHEL System Role把Postfix安装和配置自动化?相关推荐

  1. Jenkins 流水线 获取git 分支列表_jenkins的安装和配置 自动化部署 码云 gitee

    目前项目使用的jenkins 自动化部署的还是比较多的 ,所以趁着脑瓜子还清醒,来写一下如何使用 jenkins 使用码云更新代码后,重新构建就是最新的代码,费话不多少了 直接上货, 首先要做一下准备 ...

  2. 安装与配置postfix邮件系统

    一. postfix概述 postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输 代理)软件.下面一段话摘自postfix的官方站点( http://www.post ...

  3. centos8安装失败 Linux dd,在RHEL 8/CentOS 8上安装Telegraf的方法

    本文介绍在RHEL 8/CentOS 8操作系统上安装Telegraf的方法.在选写本文时,RHEL 8没有官方存储库,但我们可以使用RHEL 7的InfluxData存储库,它可以正常工作.其它系统 ...

  4. 在Ubuntu 上安装和配置postfix邮箱服务器

    Postfix是一种流行的开源邮件传输代理(MTA),可用于在Linux系统上路由和传递电子邮件. 据估计,互联网上大约25%的公共邮件服务器运行Postfix. 本文介绍 如何在Ubuntu 20. ...

  5. Postfix邮件服务器搭建之roundcube webmail安装与配置

    前几篇文章,我们介绍了有关postfix的相关安装与配置,这篇文章我们再来介绍下,在web下管理postfix的软件roundcube webmail. 注意:本篇文章所需的基础环境都是根据<烂 ...

  6. rhel6.2安装oracle11g,RHEL 6.2 x86_64 下安装Oracle 11g步骤

    RHEL 6.2 x86_64 下安装Oracle 11g步骤, 在安装过程中如遇到问题可以一起讨论,,共同学习,如有错误,还请告知,谢谢 1.首先 修改 /etc/sysctl.conf文件 添加参 ...

  7. 烂泥:Postfix邮件服务器搭建之软件安装与配置

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb Postfix邮件服务器的搭建需要使用到几个软件,分别是cyrus-sasl.postf ...

  8. RHEL 8 Linux环境下安装部署DHCP

    目录 一.DHCP介绍 二.DHCP涉及的常见术语 三.关闭防火墙和selinux 四.DHCP安装和配置本地软件仓库 五.查看配置文件 五.DHCP启动 一.DHCP介绍 DHCP(Dynamic ...

  9. 安装和配置Postfix

    本文转自http://chloerei.com/2015/04/22/install-and-configure-postfix/ Postfix 是一个 MTA(Mail Transfer Agen ...

最新文章

  1. hadoop 2 java hdfs_Hadoop2.6.0学习笔记(二)HDFS访问
  2. 中国信通院发布《区块链基础设施研究报告(2021年)》
  3. java lombok 视频_Java开发神器Lombok使用详解
  4. MYSQL 生成UUID() 即 ORACLE 中的guid()函数
  5. 计算机职称excel2007,职称计算机Excel2007中文电子表格考试大纲
  6. 使用C++实现YUV格式图像与RGB格式图像之间相互转换
  7. 【Python数据结构】 抽象数据类型 Python类机制和异常
  8. 全连接条件随机场_CRF条件随机场
  9. python读取hdf5文件_Python处理HDF5文件
  10. bootstrp-table 获取checkbox选中行的数据id
  11. notepad php源码,GitHub - CharlesKiki/Web-Notepad: 这是一个仿制有道云笔记的原生PHP小玩具。...
  12. 如何获取 WebAssembly 代码
  13. mysql最大述_MySQL优化(1):Mysql简述
  14. web测试 结果存储类型为“Database”,但尚未指定结果储存库连接字符串
  15. MyBatis中foreach的用法
  16. 黑手安全网-------那些年我们抓过的肉鸡课程笔记
  17. 显卡更新后重启计算机就没了,电脑重启后显卡出现问题怎么办
  18. 海康硬盘录像机管理员密码初始化方法
  19. oracle北京时区,ORACLE中的时区(time zone)
  20. 双臂UR5的Gazebo配置

热门文章

  1. [FlareOn2]very_success [FlareOn3]Challenge1
  2. 【漏洞实战】从信息泄露到内网滲透
  3. aliyun服务器安装nc工具
  4. PC微信逆向:分析@群成员call
  5. Sublime Text 3143 注册码
  6. Java多线程(3)—生产者/消费者
  7. Linux之grep
  8. 新建Angular2项目
  9. 将Datatable一分为二
  10. 不同域名cookie共享_cookie在二级域名间共享完成sso