电子邮件服务器

目录

一、相关知识

二、邮件服务器种类

三、邮件传输协议

四、DNS中的MX记录

五、电子邮件系统工作原理

六、配置文件相关参数

七、邮件服务器配置案例

7.1设置用户别名邮箱

7.2空壳邮件服务器


一、相关知识

1、电子邮箱系统三个组成部分

MUA(telnet):邮件用户代理。主要用于撰写邮件信息并和邮件服务器之间通过SMTP协议进行向邮件服务器发送或接收邮件信息。

MTA(postfix):邮件传输代理。即SMTP邮件服务器,用于接收邮件客户端或者其它域名的SMTP邮件服务器发送过来的邮件。或者是向其它域名的MSTP邮件服务器转发邮件信息。

MDP(Dovecot): 邮件投递代理。一般使用POP3/IMAP4协议和SMTP邮件服务器安装在一起,用于向本地域名下的邮件用户提供接收邮件的服务。

二、邮件服务器种类

SMTP服务器:用于替用户发送和接受外面发送给本地用户的邮件(相当于邮局的接受部门)。

POP3/IMAP服务器:由于帮助用户读取SMTP服务器接收进来的该用户的邮件(相当于专门为前来取包裹的用户提供服务的部门)。

三、邮件传输协议

SMTP协议:定义了邮件客户端软件与SMTP服务器之间,以及两台SMTP服务器之间的通信规则。

POP3协议:客户端与POP3服务器之间的通信规则。

IMAP协议:对POP3协议的一种扩展。

四、DNS中的MX记录

记录域名和其SMTP服务器之间的映射关系;当SMTP邮件服务器接收到一个收件人地址域名不是本地域名的邮件时,通过向DNS服务器查找收件人的MX记录来获取收件人域名下的邮件服务器IP地址,然后将其邮件发送给对方MSTP邮件服务器。

五、电子邮件系统工作原理

一个QQ邮箱的A发给163邮箱B:qq邮箱用户用qq邮箱客户端发邮件给qq的SMTP服务器,然后qq的SMTP服务器会查询MX记录,找到163邮箱的SMTP服务器的信息,然后发送给它,163的SMTP收到邮件后判断该邮件是否属于该SMTP服务器的管辖范围,如果是的话就直接把邮件存储到收件人B的邮箱中。163邮箱用户就可以用客户端软件和163的POP3/IMAP建立连接通过POP3/IMAP协议查看邮件。

六、配置文件相关参数

1、Postfix服务程序主配置文件/etc/postfix/main.cf中的重要参数

myhostname------邮局系统的主机名

mydomain---------邮局系统的域名,用于指定邮件服务器所使用的域名。

myorigin-----------如果邮件发送者在通过此邮件服务器发送邮件时,在指定邮件发送者选项时只写了发送者的账户名而@后没跟域名,邮件服务器就会自动在其地址后面加myorigin参数指定的域名。

inet_interfaces--------邮件服务器监听的本机网卡接口

mydestination--------邮件服务器可接收哪些收件人是@域名后缀的邮件

mynetworks--------列出可通过本邮件系统寄出邮件的网络地址或ip地址 

relay_domains------设置本邮件服务可以转发哪些域名的邮件

home_mailbox --------指定接收到本域邮件将其存储的路径

2.Dovect投递代理配置文件参数

/etc/dovecot/dovecot.conf

protocols = imap pop3 lmtp  --------指定其支持的邮件协议

listen = *  --------表示Dovect程序监听本地所有接口

login_trusted_networks = 192.168.200.0/24       ----------指定允许那些客户登录本邮件服务器查询自己收到的邮件。

/etc/dovecot/conf.d/10-auth.conf

disable_plaintext_auth = no    ------默认情况下Dovect投递代理要求用户在登录服务器查询收到的邮件之前需要加密进行身份验证由于主机没有配置SSL加密,因此将此选项设置为不加密进行身份验证。

/etc/dovecot/conf.d/10-mail.conf

mail_location = maildir:~/Maildir      -----告诉Dovect程序本域邮件存放在哪个路径下了,需与postfix指定的路径相同;否则在用户在用telnet查找自己接收的邮件时,找不到收到的邮件。

七、邮件服务器配置案例

实验准备:

邮件服务器

IP:192.168.200.254/24

主机名:mail.qq.com

邮件客户端

IP:192.168.200.28/24

实验步骤

mail-server:

1、设置邮件服务器的主机名

2、安装配置DNS域名解析,使网络上的客户可以通过邮件服务器域名登录邮件服务器;同时指定邮件服务器的MX记录,使其它域名上的邮件服务器在使用此DNS做域名解析时,可以通过MX记录将收到的@qq.com的邮件转发到本域的@qq.com邮件服务器。

3、安装postfix邮件传输程序。

4、修改postfix的主配置文件

94 myhostname = mail.qq.com          //指定邮件服务器的主机名

102 mydomain = qq.com                      //指定邮件服务器提供的邮件地址域名

118 myorigin = $mydomain          //引用前面定义的变量值,用于用户在发送邮件时,在填写用户名没跟域名时,邮件服务器在发给其它用户时,自动设置为myorigin指定的参数值。

138 inet_protocols = all                    //监听所有的接口,其它相同的注释掉。

183 mydestination = $myhostname, $mydomain     //允许邮件服务器接收哪些域名的邮件

438 home_mailbox = Mail_info/    //指定邮件服务器收到本域邮件存放的路径为家目录下的此目录(目录自动创建)。

5、检查配置是否有语法错误、防火墙放行postfix程序使用的SMTP协议流量和其端口、开启Postfix服务。

6、安装Dovect程序,并修改其配置文件

vim /etc/dovecot/dovecot.conf

 vim /etc/dovecot/conf.d/10-auth.conf

vim /etc/dovecot/conf.d/10-mail.conf

7、防火墙放行docvet基于的pop3、imap协议等,并开启dovecot服务。

8.给网络用户创建邮箱账号并设置其密码。

10.开始邮件服务测试。安装用户代理程序服务端telnet-server,防火墙并放行其服务端口23。

mail-Cliect

11、切换到客户端安装telnet程序,由于登录邮件服务的dovect程序收取邮件。

12、用telnet连接邮件服务器,用bajie向wukong发送邮件。

13、用telnet 110端口连接邮件服务器,wukong登录看是否收到bajie发来的邮件。

7.1设置用户别名邮箱

通过设置一个虚假的用户账号如:xujia。当其它真实的用户通过邮件服务器向收件人xujia@qq.com发邮件时,其实邮件并没有发给xujia这个并不存在的用户,而是发给了管理员指定的在邮件服务器注册了邮件账户的真实用户如:root。

1.切换到邮件服务器,编辑 /etc/aliases

2.切换到客户端,用root向xujia用户发送邮件,看看是否被真实的wukong用户接收了邮件。

观察发现发给别名用户的邮件却被真实的wukong用户接收了,实验结果成功!。

7.2空壳邮件服务器

由于用户在发电子邮件之前需要先连接上邮件服务器,这样的话用户就需要知道邮件服务器的域名或者其IP地址才能访问到邮件服务器,然后进行电子邮件的发送,因此真实邮件服务器的IP地址或者域名就暴露在公网下了很不安全。所以为了保护真实邮件服务器的安全就需要架设一台空壳邮件服务器。空壳邮件服务器和真实的邮件服务器主要的区别就是空壳邮件服务器只负责把用户发过来的邮件转发到指定的真实邮件服务器上,自己本身不保存用户发送过来的邮件。即用户连接上空壳邮件服务器之后,所发送的邮件不管收发件人的域名是否与本服务器相同(不会查找DNS的MX记录在转发给真实邮件服务器)都会将其直接转发到有管理员事先配置好的真实邮件服务器上,自己本身不存储邮件信息。空壳邮件服务器的后缀域名一般和真实邮件服务器的后缀域名一样,这样表面上看是把邮件发给空壳邮件服务器,实则空壳邮件服务器已将其邮件转发给了真实的邮件服务器上了;也可一不一样。

空壳邮件服务器搭建案例

前言:理想状态下便于理解需要两台服务器和一台客户机。本实验只使用两台Server,一台为真实邮件服务器另一台为空壳邮件服务器。真实邮件服务器上个案例已搭建完毕此处不在表述。

空壳邮件服务器:

1、设置空壳邮件服务器的主机名为null.qq.com。

2、在空壳邮件服务器所使用的DNS服务器上添加一条空壳邮件服务器的域名解析A记录。

[root@mail cur]# systemctl restart named

 

3、切换到空壳邮件服器上,安装postfix。

4、修改postfix的主配置文件/etc/postfix/main.cf,使其成为空壳邮件服务器。

94 myhostname = null.qq.com            //空壳服务器的主机名

102 mydomain = qq.com             //空壳邮件服务所使用的域名

118 myorigin = qq.com         //空壳邮件服务器在转发源发件人账户没指定域名时,空壳邮件服务器自动在其发件人@后补齐为@qq.com

132 inet_interfaces = all      //空壳邮件服务监听本机所有接口流量。

183 mydestination =          //由于空壳邮件服务器只转发邮件,不接收存储邮件所以将此处置为空。

283 mynetworks = 192.168.200.0/24     //空壳邮件服务器只转发此网段发送过来的邮件。

332 relayhost = 192.168.200.254      //指定要把收到的邮件转发给真的邮件服务器的IP地址

5、防火墙放行postfix基于STMP协议的流量和其25号端口;然后开启postfix服务。

6、在空壳邮件服务器上安装telnet-server用于用户登录此服务器上;并放行其服务和端口号;最后开启telnet服务。

7、在真实的邮件服务器上创建user1和user2用户并设置其密码。用于邮件测试。

8、在用户的电脑上安装telnet客户端程序用于登录到邮件服务器上。此实验把空壳邮件服务器也看做是一台客户机,同样也安装telnet客户端软件。

9、在客户端上使用telnet登录到空壳邮件服务器上使用在真实的邮件服务器上创建的user1来向user2发送邮件。

10、下面使用user2用户登录到真正的邮件服务器上,看其是否收到了由空壳邮件服务器转发过来的发给user2的邮件。

通过以上观察可以发现空壳邮件服务器是把由user1发给user2的邮件转发给了真正的邮件服务器,user2成功收到邮件。

@声明:“山月润无声”博主知识水平有限,以上文章如有不妥之处,欢迎广大IT爱好者指正,小弟定当虚心受教!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/65036.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ATF(TF-A)安全通告 TFV-1 (CVE-2016-10319)

安全之安全(security)博客目录导读 ATF(TF-A)安全通告汇总 目录 一、ATF(TF-A)安全通告 TFV-1 (CVE-2016-10319) 二、CVE-2016-10319 一、ATF(TF-A)安全通告 TFV-1 (CVE-2016-10319) Title 错误的固件更新SMC可能导致意外的大数据拷贝到安全内存中CVE ID CVE-2016-10319 Da…

JSX底层渲染机制

JSX底层渲染机制 一,.步骤 1.把我们写的jsx语法编译为虚拟DOM【virtualDOM】 虚拟DOM对象:框架自己内部构建的一套对象体系(对象的相关成员都是React内部绑定的),基于这些属性描述出我们所构建视图中的DOM接的相关特征 1基于ba…

python中如何不修改字符串的前提,使其对大小写字母不敏感

如果你希望在不修改原字符串的基础上实现大小写不敏感的比较,你可以使用内置函数str.casefold(),它会将字符串转换为小写并处理一些特殊字符,使得比较更加严格。下面是如何使用它来实现大小写不敏感的比较: x input() y input()…

通讯软件014——分分钟学会Matrikon HDA Explorer

本文介绍如何使用Matrikon HDA Explorer工具软件进行OPC HDA通讯调试。相关软件可登录网信智汇(wangxinzhihui.com)下载。 1、连接OPC HDA Server数据源“Kepware.KEPServerEX HAD.V6”。 2、添加标签:右键点击“Kepware.KEPServerEX HAD.V6”…

Oracle-day6:over()函数

目录 一、over()开窗函数 二、无参over()的使用 三、over(partition by 列名) 四、over(order by 列名 asc/desc) 五、over(partition by 列名 order by 列名 asc|desc) 六、练习(笔试) 一、over()开窗函数 拓展:数据库的版本 oracle:8i 9i 10g …

信息化发展16

计算机网络 从网络的作用范围可将网络类别划分为个人局域网( Per sona l Area Net work,PAN) >局域网C Local Area Net work, LAN ) > 城域网( Metropoli tan Areaetwork , MAN ) 、广域网( Wide Area Net…

王道考研数据结构

文章目录 C 环境准备官方文档环境准备在线运行VSCode 环境报错解决 绪论线性表顺序表链表错题 栈、队列和数组栈队列栈的应用之中缀转后缀特殊矩阵用数组压缩存储错题 串模式匹配之暴力和KMP 树与二叉树二叉树树和森林哈夫曼树和哈夫曼编码并查集错题 图图的基本概念图的存储及…

一文读懂MQTT各参数定义(非ChatGPT生成版)

文章目录 前言主流使用MQTT协议的云平台连接参数连接参数详解1.服务器地址(Server Address)2.端口(Port)3.客户端标识符(Client Identifier)4.用户名和密码(Username and Password)5…

[音视频] SDL 渲染

调用的 API SDL_INIT # 初始化 SDL 库 SDL_CreateWIndow # 创建窗口 SDL_CreateRenderer # 创建渲染器 需要指定渲染窗口 SDL_CreateTexture # 需要指定纹理的上下文 和 数据修改频率 SDL_UpdateTexuture # 把 cpu 数据拷贝到 gpu 纹理中 SDL_RenderClear # 清空窗口纹理 SDL_…

Python 新版本有75个内置函数,你不会不知道吧

目录 Python 内置函数 前言 属性分类 模块 module 29. format() 35. help() 对象 object 17. copyright() 18. credits() 26. exit() 44. license() 59. quit() 类 class 08. bool() 10. bytearray() 11. bytes() 14. classmethod() 16. complex() 20. dict…

记一次postgres导致cpu100%

周末想打两把训练赛,没想到朋友发来一个截图 我:嗯??wtf 于是我上服务器看了一下日志,诶我超,还真的 查看进程详情 [rootiZ7xv7q4im4c48qen2do2bZ project]# pstree -tp postgres memory(904475)─┬─…

【Spring面试题】IOC控制反转和DI依赖注入(详解)

IOC Inversion of Control 控制反转,是一种面向对象的思想。 控制反转就是把创建和管理 bean 的过程转移给了第三方。而这个第三方,就是 Spring IoC Container,对于 IoC 来说,最重要的就是容器。 通俗点讲,因为项目…

SASS的@规则

1,import sass扩展了import导入,对于css,import导入在页面加载的时候去下载导入的外部文件,而sass的导入,在编译成css文件的时候就将外部的sass文件导入合并编译成一个css文件。 他支持同时导入多个文件;…

Xubuntu16.04系统中解决无法识别exFAT格式的U盘

问题描述 将exFAT格式的U盘插入到Xubuntu16.04系统中,发现系统可以识别到此U盘,但是打不开,查询后发现需要安装exfat-utils库才行。 解决方案: 1.设备有网络的情况下 apt-get install exfat-utils直接安装exfat-utils库即可 2.设备…

ZigBee案例笔记 -- RFID卡片读写(模拟饭卡)

RFID模拟饭卡应用 RFID(射频识别技术)RFID通讯协议RFID发展历史RFID操作流程说明RFID卡片读写流程RFID寻卡RFID防碰撞RFID选卡RFID卡密验证RFID读卡RFID写卡读写数据流程 RFID饭卡模拟案例驱动代码串口协议饭卡操作案例结果优化建议 RFID(射频…

C语言入门 Day_12 一维数组

目录 前言 1.创建一维数组 2.使用一维数组 3.易错点 4.思维导图 前言 存储一个数据的时候我们可以使用变量, 比如这里我们定义一个记录语文考试分数的变量chinese_score,并给它赋值一个浮点数(float)。 float chinese_scoe…

详细介绍如何基于ESP32实现低功耗的电子纸天气显示器--附完整源码

实现界面展示 这是一款天气显示器,由支持 wifi 的 ESP32 微控制器和 7.5 英寸电子纸(又名电子墨水)显示器供电。当前和预测的天气数据是从 OpenWeatherMap API 获取的。传感器为显示屏提供准确的室内温度和湿度。 该项目在睡眠时消耗约 14μA,在约 10 秒的清醒期…

GitHub打不开解决方法——授人以渔

打不开GitHub的原因之一,DNS地址解析到了无法访问的ip。(为什么无法访问?) 1、打开GitHub看是哪个域名无法访问,F12一下 2、DNS解析看对应的域名目前哪个IP可以访问 DNS解析的网址: (1&#x…

阿里云日志服务Logstore与MySQL数据库关联

前提条件 已采集日志到日志服务。更多信息,请参见数据采集。已为日志字段创建索引。更多信息,请参见创建索引。已有可用的MySQL数据库。更多信息,请参见创建数据库和账号。 操作步骤 1、在MySQL数据库中,创建用户属性表&#xf…

上海的正西边有哪些城市

背景 上海一路向西,来一趟拉萨之行,那么上海出现,所经过的那么多城市,哪些是在上海的正西边呢? 画一幅地图 基于这个背景需求,我们需要拿来一幅地图,一看便知。下面的python代码生成了一幅地…