RH358配置电子邮件传输--自动化Postfix配置

简介: RH358配置电子邮件传输--自动化Postfix配置

RH358配置电子邮件传输–自动化Postfix配置

使用Ansible配置Postfix系统角色的SMTP。都是常用的模块的叠加运用。

RH358专栏地址:https://blog.csdn.net/qq_41765918/category_11532281.html

1. 配置带有Postfix系统角色的SMTP

rhel-system-roles包提供了rhel-system-roles.postfix (也称为linux-system-roles.postfix) Ansible角色。该角色使在托管主机上配置Postfix变得很容易。它安装postfix包,配置postfix,并根据需要启动、重新加载或重启服务。

**重要:**rhel-system-roles.postfix角色不会修改主机的防火墙规则,必须使用一个单独的任务来管理防火墙规则。

角色根据Ansible postfix_conf变量的值来配置Postfix。此变量定义一组键值对,这些键值对指定要应用于托管主机的配置设置。可以指定任何可以用postconf命令配置的Postfix参数。参数的名称是键,它的值是应该在/etc/postfix/main.cf配置文件中分配的值。

rhel-system-roles.postfix角色还有另外两个变量:postfix_backup和postfix_backup_multiple。这些变量控制如何备份/etc/postfix/main.cf Postfix配置文件。

postfix_backup_multiple变量控制角色在修改Postfix配置之前是否对/etc/postfix/main.cf进行时间戳备份。当此变量为true时,角色每次将其应用到托管主机时都会创建一个新的备份。这是默认值。

postfix_backup变量导致角色在进行配置更改之前复制/etc/postfix/main.cf转换为单个备份文。每次执行此角色时,该角色都会将当前的Postfix配置复制到/etc/postfix/main.cf.backup。如果多次运行,它将使用最新的Postfix配置覆盖备份。该变量的默认值为false。

**重要:**当postfix_backup_multiple设置为true时,角色会忽略postfix_backup的值。

例如,可以定义以下主机变量,将这些内容放在特定主机的host_vars文件中,或放在特定主机组的group_vars文件中:

postfix_conf:                          # 包含要应用的postconf设置。
  relayhost: "[smtp.example.com]"      # 将relayhost定义为公司邮件中继。
  mynetworks: "127.0.0.0/8 [::1]/128"  # 发送来自127.0.0.0/8和[::1]/128网络的消息。
  myorigin: "example.com"              # 重写发送邮件到公司域的发送者电子邮件地址example.com
  mydestination: ""                    # 通过将mydestination选项设置为空值来拒绝所有域的传送。
  inet_interfaces: "loopback-only" 
postfix_backup_multiple: true          # 创建/etc/postfix/main.cf的时间戳备份。

即使受管主机的配置已经正确,此角色当前也会重新应用更改并报告更改的任务。

2 课本练习

[student@workstation ~]$ lab smtp-automation start

该命令确保DNS、SMTP和IMAP服务对lab.example.com SMTP中继服务器提供支持。

本练习的lab命令将在~/smtp-auto中设置一个不完整的Ansible项目,以便在lab.example.com域中将一组服务器配置为Postfix空客户端。这些空客户端将使用不需要认证的smtp.lab.example.com的邮件中继。

在练习的最后,您将通过使用命令行工具向student@lab.example.com发送电子邮件来验证您的工作。然后确认消息已转发到该收件人的邮件服务器。

1. 熟悉Ansible项目的布局以及清单文件的内容。

[student@workstation ~]$ cd ~/smtp-auto
[student@workstation smtp-auto]$ tree
[student@workstation smtp-auto]$ cat inventory
[nullclients]
servera.lab.example.com
serverb.lab.example.com
serverc.lab.example.com
serverd.lab.example.com

2. 回顾并完成playbook.yml剧本。

剧本的hosts应该设置为nullclients主机组。

[student@workstation smtp-auto]$ vim playbook.yml 
---
- name: Configure Null Client Email Service
  become: true
  hosts: nullclients

  vars:
    postfix_conf:
      relayhost: "[smtp.lab.example.com]"
      inet_interfaces: "loopback-only"
      mynetworks: "127.0.0.0/8 [::1]/128"
      myorigin: "lab.example.com"
      mydestination: ""

  roles:
    - linux-system-roles.postfix

3. 语法检查并运行。

[student@workstation smtp-auto]$ ansible-playbook --syntax-check playbook.yml

playbook: playbook.yml
[student@workstation smtp-auto]$ ansible-playbook playbook.yml

4. 在服务器上测试Postfix空客户端配置。

使用mail命令向student@lab.example.com发送消息,该命令使用/usr/sbin/sendmail助手程序发送电子邮件。使用-s选项将Null client test设置为主题,输入null client test content作为内容,然后在行首加上句号(.)标记内容的结尾并发送电子邮件

[student@servera ~]$ mail -s 'Null client test' student@lab.example.com
null client test content
.
EOT

5. 验证邮件情况。

通过检查邮箱中的student@lab.example,验证服务器是否将消息传递给了邮件中继,并成功通过imap.lab.example.com地将消息传递给了收件人的邮件服务器。

[student@servera ~]$ mutt -f imaps://imap.lab.example.com
# 按a接受证书,避免以后提示。
Username at imap.lab.example.com: student
Password for student@imap.lab.example.com: student

完成实验。

[student@workstation ~]$ lab smtp-automation finish

总结

  • 使用Ansible配置Postfix系统角色的SMTP。
  • 若喜欢金鱼哥的文章,顺手点个赞。也可点个关注,因为后续会不断上干货。

目录
相关文章
|
2月前
|
运维 Linux Apache
Puppet 作为一款强大的自动化运维工具,被广泛应用于配置管理领域。通过定义资源的状态和关系,Puppet 能够确保系统始终处于期望的配置状态。
Puppet 作为一款强大的自动化运维工具,被广泛应用于配置管理领域。通过定义资源的状态和关系,Puppet 能够确保系统始终处于期望的配置状态。
64 3
|
2月前
|
Linux 应用服务中间件 Shell
利用 ACME 实现SSL证书自动化配置更新
【10月更文挑战第11天】多项式承诺原理是密码学中的重要工具,允许证明者向验证者承诺一个多项式并证明其某些性质。Kate多项式承诺是一种知名方案,基于有限域上的多项式表示,通过生成和验证简洁的证明来确保多项式的正确性和隐私。其安全性基于离散对数假设。应用场景包括区块链中的零知识证明和可验证计算,以及多方计算和身份认证协议。在区块链中,Kate多项式承诺可用于保护隐私币和智能合约中的敏感信息。
101 2
|
4月前
|
JSON JavaScript 开发者
Composerize神器:自动化转换Docker运行命令至Compose配置,简化容器部署流程
【8月更文挑战第7天】Composerize神器:自动化转换Docker运行命令至Compose配置,简化容器部署流程
Composerize神器:自动化转换Docker运行命令至Compose配置,简化容器部署流程
|
4月前
|
持续交付 jenkins Devops
WPF与DevOps的完美邂逅:从Jenkins配置到自动化部署,全流程解析持续集成与持续交付的最佳实践
【8月更文挑战第31天】WPF与DevOps的结合开启了软件生命周期管理的新篇章。通过Jenkins等CI/CD工具,实现从代码提交到自动构建、测试及部署的全流程自动化。本文详细介绍了如何配置Jenkins来管理WPF项目的构建任务,确保每次代码提交都能触发自动化流程,提升开发效率和代码质量。这一方法不仅简化了开发流程,还加强了团队协作,是WPF开发者拥抱DevOps文化的理想指南。
92 1
|
4月前
|
存储 缓存 Ubuntu
在Ubuntu 18.04上安装和配置Postfix的方法
在Ubuntu 18.04上安装和配置Postfix的方法
117 1
|
4月前
|
持续交付 jenkins C#
“WPF与DevOps深度融合:从Jenkins配置到自动化部署全流程解析,助你实现持续集成与持续交付的无缝衔接”
【8月更文挑战第31天】本文详细介绍如何在Windows Presentation Foundation(WPF)项目中应用DevOps实践,实现自动化部署与持续集成。通过具体代码示例和步骤指导,介绍选择Jenkins作为CI/CD工具,结合Git进行源码管理,配置构建任务、触发器、环境、构建步骤、测试及部署等环节,显著提升开发效率和代码质量。
80 0
|
4月前
|
Java Spring 开发者
解锁 Spring Boot 自动化配置的黑科技:带你走进一键配置的高效开发新时代,再也不怕繁琐设置!
【8月更文挑战第31天】Spring Boot 的自动化配置机制极大简化了开发流程,使开发者能专注业务逻辑。通过 `@SpringBootApplication` 注解组合,特别是 `@EnableAutoConfiguration`,Spring Boot 可自动激活所需配置。例如,添加 JPA 依赖后,只需在 `application.properties` 配置数据库信息,即可自动完成 JPA 和数据源设置。这一机制基于多种条件注解(如 `@ConditionalOnClass`)实现智能配置。深入理解该机制有助于提升开发效率并更好地解决问题。
77 0
|
4月前
|
运维 应用服务中间件 nginx
自动化运维的利剑:Ansible Role 打造标准化配置
【8月更文挑战第31天】在追求效率和稳定性的今天,自动化运维不再是奢侈品,而是必需品。Ansible Role,作为自动化配置管理的利器,它如何帮助我们实现标准化部署和维护?本文将通过一个简单示例,带你了解 Ansible Role 的魅力所在,并探讨其在现代 IT 架构中的应用价值。
|
4月前
|
Shell 网络安全 Python
网络工程师如何在ensp模拟器上玩python自动化配置交换机。
网络工程师如何在ensp模拟器上玩python自动化配置交换机。
226 0
|
4月前
|
Ubuntu Linux 数据库
如何在Ubuntu 16.04上安装和配置Postfix作为仅发送的SMTP服务器
如何在Ubuntu 16.04上安装和配置Postfix作为仅发送的SMTP服务器
44 0