一、电子邮件应用解析

 

标准邮件服务器(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 ~]#

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐