在讨论email服务器以前,理解电子邮件的工作机制是非常重要的。在通常的情况下,一封电子邮件的发送需要经过用户代理,传输代理和投递代理等三个程序的参与。
当用户发送一封电子邮件时,他并不能直接将信件发送到对方邮件地址指定的服务器上,而是必须首先试图去寻找一个信件传输代理,把邮件提交给它;信件传输代理得到了邮件后,首先将它保存在自身的缓冲队列中,然后,根据邮件的目标地址,信件传输代理程序查询到应对这个目标地址负责的邮件传输代理服务器,并且通过网络将邮件传送给它。对方的服务器接收到邮件之后,将其缓冲存储在本地,直到电子邮件的接收者察看自己的电子信箱。显然,邮件传输是从服务器到服务器的,而且每个用户必须拥有服务器上存储信息的空间(称为信箱)才能接受邮件。(发送邮件不受这个限制)。
而投递代理则从信件传输代理取得信件传送至最终用户的邮箱。显然,最终用户只能看到用户投递代理。常见的投递代理包括procmail等。
用户代理接受用户输入的各种指令,将用户的邮件传送至信件传输代理或者通过pop、Imap将信件从传输代理服务器处取到本机上。常见的用户代理有“foxmail”,“outlook express”等邮件客户程序。
可以看到,一个邮件传输代理的主要工作是监视用户代理的请求,根据电子邮件的目标地址找出对应的邮件服务器,将信件在服务器之间传输并且将接收到的邮件缓冲或者提交给最终投递程序。
有许多的程序可以作为信件传输代理,包括qmail、sendmail、postfix等等。
无论什么产品,它们必须支持同样的规范,如传输信件的报文格式,监听的端口等等。一般来说,系统管理员并不需要了解信件传输的命令标准,用户代理会生成正确的命令。但是,了解一些相关信息是重要的。
信件传输代理默认监听25号端口接受请求,当接受用户的请求时,它不需要了解用户的真实身份,或者说不需要身份验证。因此用户不需要提交用户口令就可以发出电子邮件,这意味着任何用户都可以冒充成另外一个用户发出假的电子邮件,这是电子邮件原始设计时导致的一个特点,无法消除。(关于这一点目前有一点说明。许多基于UNIX的系统运行indentd,可以记录客户机器上的用户的登录名字。不过,这个功能实际上用处不大,毕竟大部分人不会用UNIX/Linux作为他的个人机器)。
当邮件服务器程序得到一封待发送的邮件时,它首先需要根据目标地址确定将信件投递给哪一个服务器,这是通过DNS服务实现的。例如,有一封邮件的目标地址是someone@yahoo.com,那么,sendmail首先确定这个地址是用户名(someone)+机器名(yahoo.com)的格式,然后,通过查询DNS来确定需要把信件投递给某个服务器。
DNS数据中,与电子邮件相关的是MX记录,这可以在查询DNS时设置查询类型为mx来得到:
[wanghy@mail ~]$ nslookup
Default Server: www.linuxaid.com.cn
Address: 202.99.11.120
>set q=mx
>yahoo.com
Server: www.linuxaid.com.cn
Address: 202.99.11.120
Non-authoritative answer:
yahoo.com preference = 0, mail exchanger = mx1.mail.yahoo.com
yahoo.com preference = 1, mail exchanger = mx2.mail.yahoo.com
mx1.mail.yahoo.com internet address = 128.11.68.225
mx2.mail.yahoo.com internet address = 128.11.68.217
显然,在DNS中说明yahoo.com有两个信件交换(MX)服务器,于是,sendmail试图将邮件发送给两者之一。一般来说,排在前面的的MX服务器的优先级别比较高,因此服务器将试图连接mx1.mail.yahoo.com的25端口,试图将信件报文转发给它。如果成功,你的smtp服务器的任务就完成了,在这以后的任务,将由mx1.mail.yahoo.com来完成。在一般的情况下,mx交换器会自动把信件内容转交给目标主机,不过,也存在这样的情况,目标主机(比如yahoo.com)可能并不存在,或者不执行smtp服务,而是由其mx交换器来执行信件的管理,这时候,最终的信件将保存在mx机器上,直到用户来察看它。
可以简单地在DNS记录中用MX关键字设置信件交换,例如,在我们的设置中:
$TTL 3600
@ IN SOA linuxaid.com.cn. webmaster.linuxaid.com.cn. (
2001050902 ;Serial
10800 ;Refresh after 3 hours
3600 ;Retry hourly
604800 ;Expire after 1 week
10800 ;Time to live
)
IN NS ns.linuxaid.com.cn.
IN A 202.99.11.120
IN MX 10 mx.linuxaid.com.cn.
IN MX 20 mx1.linuxaid.com.cn.
ns IN A 202.99.11.120
www IN A 202.99.11.120
mx IN A 202.99.11.120
mx1 IN A 202.99.11.121
sales IN MX 10 sales-mail.linuxaid.com.cn.
这里面定义了二个MX记录,MX记录的规则是“[机器名/域名] IN MX [优先级] [服务器]”。优先级是一个整数,数值越小优先级越高。第一个IN MX 10 mx.linuxaid.com.cn.,因为没有机器名,使用来自named.conf的缺省后缀,就是linuxaid.com.cn,这就是让所有some@linuxaid.com.cn的信件传送到mx.linuxaid.com.cn。IN MX 20 mx1.linuxaid.com.cn.的概念差不多,只是其优先数为20,也就是说只有当mx.linuxaid.com.cn拒绝接受(比如服务器忙或者当机)的时候,信件才会投递到mx1.linuxaid.com.cn。“sales IN MX 10 sales-mail.linuxaid.com.cn.”定义凡是someone@sales.linuxaid.com.cn的信件要发送到sales-mail.linuxaid.com.cn。
MX记录可以使得整个子域内的用户使用同样的邮件主机和传输代理。另外如果你的主机暂时宕机了,那么信件可以暂时存储在你的信件交换主机上,直到你自己的机器恢复为止。比如说,mail.yourdomain.com是一台smtp主机,而mx2.yourdomain.com是另外一个smtp主机,你希望在mail.yourdomain.com正常的时候直接由其自身收发邮件,而万一mail崩溃,mx2为它暂时存储一段时间的邮件直到mail恢复正常工作-这是常见的设置,那么,你需要把mail以比较高的优先数设置成自己的信件交换主机,而mx2作为一个优先数较低的信件交换主机,也就是,在你的DNS配置文件中,应该这样配置:
IN MX 0 mail
IN MX 10 mx2
如果DNS查询无法找出对某个地址的MX记录(通常因为对方没有信件交换主机),那么sendmail将是试图直接与对方的主机(来自邮件地址)对话并且发送邮件。例如,test@www.linuxaid.com.cn在DNS中没有对应的MX记录,因此sendmail在确定MX交换器失败后,将从DNS取得邮件地址服务器部分内容对应的IP地址,并直接和其通信来发送邮件。
分享到:
相关推荐
**IP组网技术入门课件概述** IP组网技术是计算机网络中的核心组成部分,它涉及到互联网的连接、数据传输和网络资源的管理。本课件是针对初学者设计的,旨在通过理论与实践相结合的方式,深入浅出地介绍IP网络的基础...
### GPRS基本原理与入门 #### 第1章 GPRS概述 **1.1 GPRS的产生** GPRS(General Packet Radio Service,通用分组无线服务)作为一种过渡技术,在2G到3G移动通信系统演进过程中起着承上启下的作用。它是在原有的...
- **SMTP**:简单邮件传输协议,用于电子邮件的传输。 - **DNS**:域名系统,用于将域名转换为IP地址。 #### 八、结论 《TCPIP最佳入门(第六版)》是一本非常适合Web开发者学习TCP/IP协议的经典教材。通过本书的...
#### 一、传输层概述及作用 传输层作为OSI模型中的第四层,在网络通信中起着至关重要的作用。它位于网络层之上,应用层之下,主要负责提供端到端的数据传输服务。这一层不仅确保了数据从源主机到目的主机的正确传递...
### Kafka从入门到源码分析原理课知识点梳理 #### 一、Kafka概述与应用场景 - **Kafka定义**:Apache Kafka是一种分布式流处理平台,主要用于构建实时数据管道和流应用,具有高吞吐量、低延迟的特点。 - **应用...
8. **互联网应用**:探讨互联网在日常生活和工作中的各种应用,如电子邮件、在线购物、云服务等,以及相关的网络安全问题。 9. **网络故障排查**:学习基本的网络问题诊断技巧,如使用ping、tracert命令检查网络...
### XML基础入门教程知识点详解 #### 一、XML概述与入门 **1.1 什么是XML?** XML(Extensible Markup Language)是一种扩展性标记语言,用于存储和传输数据。与HTML不同,XML的设计目的是传输和存储数据,而不是...
3G的关键特性在于它的数据传输速率,相比于1G和2G的语音主导服务,3G能够提供最高几百kbps至几Mbps的速率,这对于手机上网、流媒体播放、移动电子邮件等应用至关重要。国际电信联盟(ITU)为3G设定了严格的技术标准...
最后,我们会讨论应用层的各种服务,如HTTP(超文本传输协议)用于网页浏览,FTP(文件传输协议)用于文件传输,DNS(域名系统)用于名称解析,以及电子邮件的SMTP、POP3和IMAP协议。 通过这七个章节的学习,你将...
- 互联网的工作原理:简单介绍TCP/IP协议栈,以及数据在网络中的传输过程。 2. **网络连接**: - 宽带连接类型:讲解ADSL、光纤、无线Wi-Fi等不同类型的网络接入方式,以及它们的特点和优缺点。 - 设置网络连接...
本篇文章将从以下几个方面详细介绍Linux内核的入门知识: 一、Linux内核概述 Linux内核是由林纳斯·托瓦兹(Linus Torvalds)在1991年创建的,它是一个自由、开放源码的类Unix操作系统内核。Linux内核被设计成模块...
随后,对于计算机网络的标准化工作及相关组织进行了介绍,这些组织例如ISO(国际标准化组织)和IEEE(电气和电子工程师协会),它们定义了通信协议和网络体系结构的标准,推动了计算机网络技术的发展和广泛应用。...
总的来说,GSM系统是一个复杂而全面的通信架构,它的理论知识涵盖了许多方面,从基础的网络结构和接口协议到具体的业务功能和数据传输机制,都体现了移动通信技术的发展和演进。学习GSM系统理论,有助于理解现代移动...
综上所述,《Nginx从入门到精通》这本书涵盖了Nginx的基础知识、模块开发以及内部原理等多个方面,适合希望深入了解Nginx的开发人员和技术爱好者阅读。通过对本书的学习,读者不仅可以掌握Nginx的基本用法,还能学会...
#### 四、其他功能介绍及相关配置说明 **1. 产品线怎么添加** - 在CAT管理后台,通过“产品线”模块添加新的产品线信息。 - 设置产品线名称、描述等基本信息。 **2. 监控的配置** - 在CAT管理界面中,可以对...
4. 计算机网络:涵盖网络的基本原理,如TCP/IP协议栈、网络拓扑结构、数据传输、网络安全,还有Internet的使用和应用,如电子邮件、网页浏览等。 5. 数据库基础:介绍数据库管理系统DBMS的概念,SQL语言的基础操作...