一、電子郵件應用解析
?
標準郵件服務器(qq郵箱):
????1)提供電子郵箱(lvbu@qq.com)及存儲空間
????2)為客戶端向外發送郵件給其他郵箱(diaochan@163.com)
????3)接收/投遞其他郵箱用戶發給本郵箱用戶的郵件
?
####?關于postfix郵件服務
軟件包:postfix
協議和端口:SMTP協議(TCP 25端口)
配置文件:/etc/postfix/main.cf
配置工具:postconf、vim
系統服務:postfix
日志文件:/var/log/maillog
?
####?配置工具postconf、語法檢查
[root@servera?~]#?postconf?????????//列出main.cf文件中的有效配置參數
[root@servera?~]#?postconf??-d?????//列出默認的配置參數
[root@servera?~]#?postconf??-n?????//只列出非默認的(修改過的)配置參數
[root@servera?~]#?postconf???-e??'關鍵詞?=?值'???????//修改配置文件,設置??關鍵詞?=?值
[root@servera?~]# postfix??check??//檢查配置是否有錯
?
#### mail.cf常見配置
inet_interfaces?= all???????//在本機哪些接口(all、localhost、loopback-only等)提供發信服務
mydomain?= lab.example.com????????????????//本服務器管轄的主要郵件域
mynetworks?= 127.0.0.1/32 [::1]/128????//本機網絡范圍
myorigin?= $myhostname??????//發件域,即從本機向外發郵件時,發件人地址@后面的部分顯示啥
mydestination?= $mydomain, $myhostname,?localhost.$mydomain, localhost????//投遞域,對于收件人地址@后面是指定后綴的,會投遞到本地用戶的郵箱
?
?
####?郵件服務器的DNS解析環境
例如:將servera.lab.example.com作為lab.example.com域的郵件服務器
1)修改區域的地址庫文件
[root@servera?~]#?vim??/var/named/lab.example.com.zone
.. ..
@???????NS??????dns.lab.example.com.
???????MX 10???servera.lab.example.com.???????//設置MX郵件服務器記錄
dns?????A???????172.25.250.10
servera?A???????172.25.250.10?????????????//為郵件服務器提供正確的IP地址記錄
?
[root@servera?~]#?systemctl??restart??named??//重啟域名服務
?
2)配置客戶機使用此DNS服務器
[root@servera?~]# vim??/etc/resolv.conf???????//臨時使用可直接修改此文件
# Generated by?NetworkManager
search lab.example.com example.com
nameserver 172.25.250.10
?
3)測試結果
[root@servera?~]# host??-t??mx??lab.example.com??????//查詢MX類型的解析記錄
lab.example.com mail is handled by 10 servera.lab.example.com.
?
?
####?將servera配置為標準郵件服務器
????!!!!?監聽地址為?all,允許為其他客戶機發送郵件
????!!!!?提供本地郵件用戶zhsan,對應郵箱為zhsan@servera.lab.example.com
????!!!!?負責接收/投遞發往@servera.lab.example.com郵件域的郵件
1)裝包
[root@servera?~]#?dnf??-y??install??postfix
?
2)調整main.cf配置文件
[root@servera?~]#?cp??/etc/postfix/main.cf{,.bak}
[root@servera?~]#?postconf??-e??'inet_interfaces?= all'????????//在所有接口上提供發信服務
[root@servera?~]#?postconf??-e??'mydomain?= lab.example.com'???????//設置郵件域
[root@servera?~]#?postconf??-e??'mydestination?= $mydomain, $myhostname, localhost.$mydomain, localhost'????//指定投遞域
[root@servera?~]# postfix??check???????//確認配置無誤
[root@servera?~]#
?
3)啟動postfix服務
[root@servera?~]#?firewall-cmd??--permanent??--add-service=smtp
[root@servera?~]#?firewall-cmd??--reload
[root@servera?~]#?systemctl??enable??postfix??--now
?
4)發郵件、收郵件測試
[root@servera?~]#?dnf??-y??install??mailx????????//安裝收發信工具
[root@servera?~]#?useradd??zhsan??//為本機添加一個名為zhsan的郵箱賬號
[root@servera?~]# echo "AAAA"??|??mail??-s??"SMTP Test"??zhsan?????//給本機用戶zhsan發一封測試郵件
[root@servera?~]# mail??-u??zhsan??????//收取用戶zhsan的郵件
Heirloom Mail version 12.5 7/5/10.??Type ??for help.
"/var/mail/zhsan": 1 message 1 new
>N??1?root??????????????????Wed Sep??8 14:45??18/625???"SMTP Test"
& 1????//閱讀第1封郵件
Message??1:
From?root@servera.lab.example.com??Wed?Sep??8 14:45:06 2021
.. ..
To: zhsan@servera.lab.example.com
Subject: SMTP Test
User-Agent: Heirloom?mailx?12.5 7/5/10
Content-Type: text/plain; charset=us-ascii
From: root <root@servera.lab.example.com>
Status: R
?
AAAA
& q????????//退出mail工具
[root@servera?~]#
?
?
?
二、配置Postfix郵件服務-nullclient
?
空客戶郵件服務器(機房內網): ——?nullclient?只發不收
????1)不提供電子郵箱
????2)為客戶端向外發送郵件給其他郵箱(diaochan@163.com)
????3)不接收/投遞其他郵箱用戶發給本服務器的郵件
?
????屬性配置:有一臺后端標準郵件服務器、發件來源
?
????例如:旅游景點(海南三亞)代寄禮品(10個椰子)的代辦點
?
####?空客戶郵件服務器應用場景
假設運維工程師的郵箱是?stu@163.com、CTO主管boss@qq.com
存放在IDC數據中心的服務器?A,向外發送報警郵件:
????收件人地址:stu@163.com,抄送給?boss@qq.com
????發件人地址:root@服務器A的IP地址
?
問題:
1)服務器A不方便接收郵件
2)就算服務器A能收到郵件,運維工程師不方便收取郵件
?
解決辦法:偽裝發件人來源(服務A的IP地址?==》stu@163.com)
????收件人地址:stu@163.com,抄送給?boss@qq.com
????發件人地址:stu@163.com
?
####?將serverb配置為空客戶郵件服務器
????!!!!?監聽地址為loopback-only,只為本機發送郵件
????!!!!?不提供本地郵件用戶、也沒有郵箱空間,不接收、不投遞任何郵件
????!!!!?從本機發出的郵件自動relay給后端的標準郵件服務器servera.lab.example.com,并顯示是從servera.lab.example.com發出去的
?
1)裝包
[root@serverb?~]#?dnf??-y??install??postfix
?
2)調整main.cf配置文件
[root@serverb?~]#?cp??/etc/postfix/main.cf{,.bak}
[root@serverb?~]#?postconf??-e??'inet_interfaces?= loopback-only'?????????//指定僅提供本地郵件(僅回環)服務
[root@serverb?~]#?postconf??-e??'myorigin?= servera.lab.example.com'?????????//偽裝外發郵件來源
[root@serverb?~]#?postconf??-e??'mydestination?= '??????//指定無需在本地投遞郵件
[root@serverb?~]#?postconf??-e??'relayhost?= [servera.lab.example.com]'??????//指定需要中繼到哪一臺后端郵件服務器
[root@serverb?~]# postfix??check???????//確認配置無誤
[root@serverb?~]#
?
3)啟動postfix服務
[root@serverb?~]#?firewall-cmd??--permanent??--add-service=smtp
[root@serverb?~]#?firewall-cmd??--reload
[root@serverb?~]#?systemctl??enable??postfix??--now
?
4)發郵件、收郵件測試
[root@serverb?~]#?dnf??-y??install??mailx????????//安裝收發信工具
[root@serverb?~]# id??zhsan????????//本機并沒有zhsan這個郵箱用戶
id: ‘zhsan’: no such user
[root@serverb?~]# echo??"CCCC" | mail??-s??"nullclient?Test"??zhsan???//給本機zhsan發一封測試郵件
[root@serverb?~]# mail??-u??zhsan?????????//不管本機是否有zhsan用戶,本機的zhsan都不會收到這封郵件
"zhsan" is not a user of this?system
?
—— 轉去servera上,用戶zhsan可以收到剛剛從serverb上發出的郵件
[root@servera?~]# mail??-u??zhsan?????????//收取用戶zhsan的郵件
Heirloom Mail version 12.5 7/5/10.??Type ??for help.
"/var/mail/zhsan": 2 messages 1 new
????1 root??????????????????Wed?Sep??8?14:45??19/636???"SMTP Test"
>N??2?root??????????????????Wed Sep??8 14:56??21/860???"nullclient?Test"
& 2????//閱讀第2封郵件
Message??2:
.. ..
To: zhsan@servera.lab.example.com
Subject:?nullclient?Test
User-Agent: Heirloom?mailx?12.5 7/5/10
Content-Type: text/plain; charset=us-ascii
From: root <root@servera.lab.example.com>??//顯示是從servera發出的(實際是從serverb發出的)
Status: R
?
CCCC
& q????????//退出mail工具
[root@servera?~]#