【ACCESS精品源码栏目提醒】:文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。
网学会员整理了ACCESS精品源码-【精品】邮件系统postfix安装和配置 - 其它资料的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!
邮件系统 postfix 安装和配置邮件系统 postfix 安装和配置一邮件系统 postfix 安装和配置一、 postfix 概述postfix 是 Wietse Venema 在 IBM 的 GPL 协议之下研发的 MTA(邮件传输代理)软件。
下面一段话摘自 postfix 的官方站点(http://www.postfix.org):“postfix 是 Wietse Venema 想要为使用最广泛的 sendmail 提供替代品的一个尝试。
在 Internet 世界中,大部分的电子邮件都是通过 sendmail 来投递的,大约有 100 万用户使用 sendmail,每天投递上亿封邮件。
这真实一个让人吃惊的数字。
Postfix 试图更快、更容易管理、更安全,同时还和 sendmail 保持足够的兼容性。
”1.1 postfix 的特点1. postfix 是免费的: postfix 想要作用的范围是广大的 Internet 用户,试图影响大多数的 Internet 上的电子邮件系统,因此他是免费的。
2. 更快: postfix 在性能上大约比 sendmail 快三倍。
一部运行 postfix 的台式 PC 每天能够收发上百万封邮件。
3. 兼容性好: postfix 是 sendmail 兼容的,从而使 sendmail 用户能够很方便地迁移到 postfix。
Postfix 支持/var/spool/mail、/etc/aliases、 NIS、和 /.forward 文档。
4. 更健壮:postfix 被设计成在重负荷之下仍然能够正常工作。
当系统运行超出了可用的内存或磁盘空间时,postfix 会自动减少运行进程的数目。
当处理的邮件数目增长时,postfix 运行的进程不会跟着增加。
5. 更灵活:postfix 是由超过一打的小程式组成的,每个程式完成特定的功能。
您能够通过配置文档配置每个程式的运行参数。
6. 安全性postfix 具备多层防御结构,能够有效地抵御恶意入侵者。
如大多数的 postfix 程式能够运行在较低的权限之下,不能够通过网络访问安全性相关的本地投递程式等等。
1.2 postfix 的总体结构postfix 由十几个具备不同功能的半驻留进程组成,并且在这些进程中并无特定的进程间父子关系。
某一个特定的进程能够为其他进程提供特定的服务。
大多数的 postfix 进程由一个进程统一进行管理,该进程负责在需要的时候调用其他进程,这个管理进程就是 master 进程。
该进程也是个后台程式。
这些 postfix 进程是能够配置的,我们能够配置每个进程运行的数目,可重用的次数,生存的时间等等。
通过灵活的配置特性能够使整个系统的运行成本大大降低。
1.2.1 postfix 的邮件队列(mail queues)postfix 有四种不同的邮件队列,并且由队列管理进程统一进行管理:1. maildrop:本地邮件放置在 maildrop 中,同时也被拷贝到 incoming 中。
2. incoming:放置正在到达或队列管理进程尚未发现的邮件。
3. active:放置队列管理进程已打开了并正准备投递的邮件,该队列有长度的限制。
4. deferred:放置不能被投递的邮件。
队列管理进程仅仅在内存中保留 active 队列,并且对该队列的长度进行限制,这样做的目的是为了避免进程运行内存超过系统的可用内存。
1.2.2 postfix 对邮件风暴的处理当有新的邮件到达时,postfix 进行初始化,初始化时 postfix 同时只接受两个并发的连接请求。
当邮件投递成功后,能够同时接受的并发连接的数目就会缓慢地增长至一个能够配置的值。
当然,假如这时系统的消耗已到达系统不能承受的负载就会停止增长。
更有一种情况时,假如 postfix 在处理邮件过程中碰到了问题,则该值会开始降低。
当接收到的新邮件的数量超过 postfix 的投递能力时,postfix 会暂时停止投递 deferred 队列中的邮件而去处理新接收到的邮件。
这是因为处理新邮件的延迟要小于处理 deferred 队列中的邮件。
Postfix 会在空闲时处理 deferred 中的邮件。
1.2.3 postfix 对无法投递的邮件的处理当一封邮件第一次不能成功投递时,postfix 会给该邮件贴上一个将来的时间邮票。
邮件队列管理程式会忽略贴有将来时间邮票的邮件。
时间邮票到期时,postfix 会尝试再对该邮件进行一次投递,假如这次投递再次失败,postfix 就给该邮件贴上一个两倍于上次时间邮票的时间邮票,等时间邮票到期时再次进行投递,依此类推。
当然,经过一定次数的尝试之后,postfix 会放弃对该邮件的投递,返回一个错误信息给该邮件的发件人。
1.2.4 postfix 对不可到达的目的地邮件的处理postfix 会在内存中保存一个有长度限制的当前不可到达的地址列表。
这样就避免了对那些目的地为当前不可到达地址的邮件的投递尝试。
从而大大提高了系统的性能。
1.2.2 postfix 的安全性postfix 通过一系列的措施来提高系统的安全性,这些措施包括:1. 动态分配内存,从而防止系统缓冲区溢出;2. 把大邮件分割成几块进行处理,投递时再重组;3. Postfix 的各种进程不在其他用户进程的控制之下运行,而是运行在驻留主进程 master 的控制之下,和其他用户进程无父子关系,任何有很好的绝缘性。
4. Postfix 的队列文档有其特别的格式,只能被 postfix 本身识别;二、 postfix 对邮件的处理过程2.1 接收邮件的过程图二、postfix 对接收邮件的处理当 postfix 接收到一封新邮件时,新邮件最好选择在 incoming 队列处停留,然后针对不同的情况进行不同的处理:1.对于来自于本地的邮件:sendmail 进程负责接收来自本地的邮件放在 maildrop 队列中,然后 pickup 进程对maildrop 中的邮件进行完整性检测。
maildrop 目录的权限必须配置为某一用户不能删除其他用户的邮件。
2.对于来自于网络的邮件:smtpd 进程负责接收来自于网络的邮件,并且进行安全性检测。
能够通过 UCE(unsolicitedcommercial email)控制 smtpd 的行为。
3.由 postfix 进程产生的邮件:这是为了将不可投递的信息返回给发件人。
这些邮件是由 bounce 后台程式产生的。
(如 SMTP5. 由 postfix 自己产生的邮件:提示 postmaster(也即 postfix 管理员)postfix 运行过程中出现的问题。
协议问题,违反 UCE 规则的记录等等。
)关于 cleanup 后台程式的说明:cleanup 是对新邮件进行处理的最后一道工序他对新邮件进行以下的处理:添加信头中丢失的 Form 信息;为将地址重写成标准的 userfully.qualified.domain 格式进行排列;重信头中抽出收件人的地址;将邮件投入 incoming 队列中,并请求邮件队列管理进程处理该邮件;请求trivial-rewrite 进程将地址转换成标准的 userfully.qualified.domain 格式。
2.2 投递邮件的过程 新邮件一旦到达 incoming 队列,下一步就是开始投递邮件,postfix 投递邮件时的处理过程如图三所示。
相关的说明如下: 邮件队列管理进程是整个 postfix 邮件系统的心脏。
他和 local、smtp、pipe 等投递代理相联系,将包含有队列文档路径信息、邮件发件人地址、邮件收件人地址的投递请求发送给投递代理。
队列管理进程维护着一个 deferred 队列,那些无法投递的邮件被投递到该队列中。
除此之外,队列管理进程还维护着一个 active 队列,该队列中的邮件数目是有限制的,这是为了防止在负载太大时内存溢出。
邮件队列管理程式还负责将收件人地址在 relocated 表中列出的邮件返回给发件人,该表包含无效的收件人地址。
假如邮件队列管理进程请求,rewrite 后台程式对收件人地址进行解析。
但是缺省地,rewrite 只对邮件收件人是本地的还是远程的进行区分。
上一篇:
【精品】ARM应用实例
下一篇:
关于听觉掩蔽的语音增强算法及DSP实现