日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時間:2025/3/20 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何用RHEL System Role把Postfix安装和配置自动化? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文來自微信公眾號:紅帽

?

許多企業(yè)組織都需要在紅帽企業(yè)Linux(RHEL)服務(wù)器上配置郵件傳輸代理(MTA)。這樣做是為了讓服務(wù)器能夠通過電子郵件發(fā)送通知或報告。例如,可以配置一個腳本以在事件發(fā)生后通過電子郵件發(fā)送通知,或者可能有一個腳本在生成月度報告后通過電子郵件發(fā)送。

RHEL 7、8和9為MTA提供了兩個選項:Postfix和 Sendmail。Sendmail已被棄用,本文將重點關(guān)注 Postfix。

可以按照文檔說明在RHEL系統(tǒng)上手動安裝和配置Postfix,但這會很耗時并且容易出錯。紅帽引入了postfix?RHEL System Role,提供一個自動化的解決方案來安裝和配置Postfix。postfix?RHEL System Role是在RHEL 7.6中作為技術(shù)預(yù)覽功能引入的。隨著RHEL 8.5的發(fā)布,現(xiàn)在完全支持postfix?RHEL System Role。

postfix RHEL System Role是RHEL中包含的Ansible角色和模塊的集合,可幫助提供一致的工作流程并簡化手動任務(wù)的執(zhí)行。

環(huán)境概述

在我的示例環(huán)境中,有一個名為controlnode的控制節(jié)點系統(tǒng),運行著RHEL 8和四個受管節(jié)點:rhel8-server1、rhel8-server2、rhel7-server1和rhel7-server2(前兩個運行RHEL 8,另外兩個運行RHEL 7)。

我想在每一個托管節(jié)點上配置Postfix:

  • rhel8-server1應(yīng)該使用基本的Postfix配置來接受來自本地子網(wǎng)(包含其他受管節(jié)點)的郵件。

  • rhel8-server2、rhel7-server1和rhel7-server2應(yīng)配置為只轉(zhuǎn)發(fā)空客戶端,并應(yīng)將郵件轉(zhuǎn)發(fā)到rhel8-server1。

我已經(jīng)在五臺服務(wù)器上設(shè)置了一個Ansible服務(wù)帳戶,命名為ansible,并設(shè)置了SSH密鑰身份驗證,以便controlnode上的ansible帳戶可以登錄到每個系統(tǒng)。此外,ansible服務(wù)帳戶已配置為通過sudo在每個主機上訪問root帳戶。

我還在controlnode上安裝了rhel-system-roles和ansible包。有關(guān)這些任務(wù)的更多信息,請參閱RHEL System Roles博文。

在這個環(huán)境中,我使用的是RHEL 8控制節(jié)點,你也可以使用Ansible自動化控制器或紅帽衛(wèi)星作為RHEL系統(tǒng)角色控制節(jié)點。Ansible自動化控制器提供了許多使用RHEL 控制節(jié)點時,不可用的高級自動化特性和功能。

定義清單文件和角色變量

從controlnode系統(tǒng)開始,第一步是創(chuàng)建一個新的目錄結(jié)構(gòu):

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

這些目錄將按如下方式使用:

  • postfix目錄將包含playbook和庫存文件。

  • postfix/group_vars文件將包含清單組的變量文件,這些文件將應(yīng)用于各個Ansible清單組中的主機。

我需要定義一個Ansible清單文件來列出和分組我希望postfix系統(tǒng)角色配置的主機。我將在postfix/inventory.yml中創(chuàng)建包含以下內(nèi)容的庫存文件:

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自動化控制器作為控制節(jié)點,則可以通過SCM項目(例如GitHub或GitLab)或使用文檔中指定的awx-manage實用程序,將此清單導(dǎo)入紅帽Ansible自動化平臺。

接下來,我將定義角色變量,這些變量將控制postfix系統(tǒng)角色在運行時的行為。postfix角色的README.md文件,位于/usr/share/doc/rhel-system-roles/postfix/README.md,包含有關(guān)角色的重要信息,包括可用角色變量的列表以及如何使用它們。

我將通過在postfix/group_vars/postfix_server.yml中創(chuàng)建一個包含以下內(nèi)容的文件來創(chuàng)建一個文件,該文件將為postfix_server庫存組中列出的受管節(jié)點定義變量:

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

這將導(dǎo)致postfix角色使用基本Postfix配置,來配置postfix_server庫存組 (rhel8-server1) 中的主機,該配置將接受來自192.168.0.0/24子網(wǎng)的連接,該子網(wǎng)是包含所有托管節(jié)點的網(wǎng)絡(luò)。

我還將創(chuàng)建一個文件,通過在postfix/group_vars/postfix_null_client.yml中創(chuàng)建一個包含以下內(nèi)容的文件,為postfix_null_client庫存組中列出的受管節(jié)點定義變量:

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

這將導(dǎo)致postfix角色將postfix_null_client庫存組(rhel8-server2、rhel7-server1、rhel7-server)中的主機配置為僅轉(zhuǎn)發(fā)空客戶端,這些客戶端將使用rhel8-server1作為其中繼主機。

創(chuàng)建腳本

下一步是在postfix/postfix.yml創(chuàng)建playbook文件,內(nèi)容如下:

- 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

第一個任務(wù),為postfix_server組上的smtp打開防火墻,將僅在postfix_server庫存組中的rhel8-server1主機上運行,此任務(wù)將為smtp服務(wù)打開防火墻。

第二個任務(wù),運行postfix role,將在所有四個受管節(jié)點上運行,并將使用先前定義的變量在每個主機上安裝和配置Postfix。

請注意:如果您使用Ansible自動化控制器作為控制節(jié)點,可以按照此處提供的文檔https://docs.ansible.com/ansible-tower/latest/html/userguide/projects.html,通過創(chuàng)建項目將此Ansible腳本導(dǎo)入紅帽Ansible自動化平臺。使用Git存儲庫來存儲Ansible腳本很常見。Ansible自動化平臺將自動化存儲在稱為作業(yè)的單元中,其中包含腳本、憑據(jù)和庫存。按照此處的文檔創(chuàng)建作業(yè)模板。

運行腳本

一切就緒,我已經(jīng)準備好運行腳本了。對于此演示,我使用RHEL控制節(jié)點,并將從命令行運行playbook。我使用cd命令進入postfix目錄,然后使用ansible-playbook命令運行playbook。

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

我指定運行postfix.yml playbook,它應(yīng)該升級到root(-b?標志),并且應(yīng)該將inventory.yml文件用作我的Ansible清單(-i?標志)。

腳本完成后,我驗證沒有失敗的任務(wù):

請注意:如果使用Ansible自動化控制器作為控制節(jié)點,則可以從自動化控制器Web界面啟動作業(yè)。

驗證配置

為了驗證配置,我將分別登錄三個只進空客戶端(rhel8-server2、rhel7-server1、rhel7-server2)并向brian@rhel8-server1.example.com電子郵件地址發(fā)送電子郵件。然后,我將驗證rhel8-server1.example.com主機上的brian帳戶是否收到了電子郵件。

我將通過發(fā)送電子郵件開始驗證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發(fā)送測試消息。我將在rhel7-server1和rhel7-server2上重復(fù)此步驟以發(fā)送來自它們的電子郵件。

接下來,我將以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" &

結(jié)論

postfix RHEL System Role可以幫助你以自動化的方式在RHEL環(huán)境中快速、一致地實施Postfix MTA。

我們提供了許多RHEL系統(tǒng)角色,可以幫助自動化RHEL環(huán)境的其他重要方面。要探索其他角色,請查看可用RHEL系統(tǒng)角色列表,并立即開始以更高效、一致和自動化的方式管理RHEL服務(wù)器。

《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的如何用RHEL System Role把Postfix安装和配置自动化?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。