- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PostFix 的邮件投递
PostFix 的邮件投递
smtp协议要求收下邮件的MTA,必须负责将邮件送到最终目的地--可能是本地系统的邮箱,也可能同一网络上的其他主机,这段工作过程称为投递(delivery)。
本 章探讨postfix将本地邮件投递到邮箱的过程以及pop/imap serer如何访问邮箱。许多用户常误以为收信与寄信是同一套软件在工作,其实不然。让用户能从邮箱取走邮件的协议是IMAP与pop,而postfix 的职责是将收下的邮件放入邮箱。也就是说,pop/imap服务是由postfix之外的软件所提供的。提供pop/imap服务的软件很多,包括 popper、wu imap kit等。
在我们讨论本地邮件的投递过程之前,先让我们理清“本地”、“外地”、“虚拟”这三种邮件的定义以及相关的MDA.
postfix的投递代理程序
postfix依据来信地址来决定是否要收下邮件以及如何选择适当的MDA来执行后续的投递任务。postfix会收下三种网域的邮件,分别是本地(local)、转发(relay)以及虚拟(virtual),它们的定义与相关的MDA,如下:
本地邮件
若邮件终点站是mydestination参数所列出的网域之一,postfix就视其为本地邮件,由local MDA(或是你指定的其他程序)执行投递任务。本地邮件的收件者必须拥有本地系统(postfix server本身所在的主机)的用户账户,或是其名称被定义在别名文件(传统上是/etc/aliases)。本地邮件会被投递到系统的邮件存储目录(通 常是/var/spool/mail/),或个人主目录下的邮件文件(~/mail/)。
转发邮件
若邮件终点站是relay_domains参数所列出的网域之一,postfix就视其为转发邮件,由relay MDA来执行投递任务。一般而言,只有在postfix被当成局域网络的邮件网关使用,而同网络上还有其他网域的邮件服务器时,才会让postfix收下 转发邮件。也就是说,所谓的“转发”,通常是指同局域网络上的其他主机,而relay其实是smtp MDA的翻版,只不过被刻意设计成特别适合传信给局域网络上主机而已。
虚拟网域邮件
一台邮件服务器通常只服务一个范围网域 (canonical domain);如果要同时服务多个网域,则额外的网域称为虚拟网域(virtual domain)。虚拟网域的邮件由virtual MDA负责投递。依据用户是否有服务器的系统账号,虚拟网域的邮件还可分成“虚拟邮箱”与“虚拟别名”两种。虚拟邮箱的收件人没有系统账户,而且每一个虚 拟邮箱网域都有自己的邮箱目录(mail spool),所有虚拟邮箱网域都必须列于virtual_mailbox_domains参数。另一方面,虚拟别名网域的收件人可以拥有本地或非本地系 统账户,postfix会改写这类邮件的收件地址,然后交给smtp MDA递送出去(如果新地址是非本地网域),或重新回到收件队列(如果新地址是本地网域)。
邮箱格式
当postfix投 递本地邮件时,邮件内容会被传送到postfix系统上的适当邮箱。最常见的两种邮箱格式,分别是传统的mbox以及较新的 maildir。两者都是使用一般的文件来储存邮件内容,差别在于文件内部的组织安排有所不同。在postfix中,当你设定任何邮件文件或目录参数时, 如果在路径末端加注一个/符号,表示你想使用maildir格式的邮箱。
mbox格式
传统上,unix系统将同一位用户 的所有邮件都塞在同一个文件里,像这样的邮箱格式通常称为mbox。邮箱文件里的每一封邮件,其第一行的前五个字符必定是“from ”。习惯上,为了方便表示,我们通常将它写成“from_“,以下划线字符强调空格的存在请勿将mbox文件内用来分隔邮件的”from “字样与邮件标头里的”from:“字段混为一谈。邮件在mbox文件里的最后一行必定为空格。因此,一行空格接着一个from_字样,就可视为下一封信 的开始。
postfix将邮件写入mbox文件之前,会先使用信封上的寄件人地址与当时的日期创建好from_文本行,并将该行字符串写到 mbox文件的末端,然后才开始填入邮件内容。如果postfix发现邮件内容本身有任何以“from”开头的文本行,它会在该文本行的开头加一个 符号,避免该文本行被误以为下一封信的开头。
当pop/imap server读取mbox文件内的邮件时,第一步是扫描文件内容,找出代表邮件开头的from文本行。在读取邮件内容时,如果遇到下一个from_文本行 (或文件结尾),就可断定当前的邮件已经读完了。有些pop/imap server会主动恢复from的原状,但有些不会。
由于 postfix和pop
文档评论(0)