一、电子邮件应用解析
标准邮件服务器(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 ~]#