Postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件。Postfix是一种电子邮件服务器,它是由任职于IBM华生研究中心的荷兰籍研究员Wietse Venema为了改良sendmail邮件服务器而产生的。最早在1990年代晚期出现,是一个开放源代码的软件在网络世界中,大部分的电子邮件都是通过sendmail来投递的,大约有100万用户使用sendmail,每天投递上亿封邮件。这真是一个让人吃惊的数字。Postfix试图更快、更容易管理、更安全,同时还与sendmail保持足够的兼容性。Postfix想要作用的范围是广大的Internet用户,试图影响大多数的Internet上的电子邮件系统,因此它是免费的。Postfix在性能上大约比sendmail快三倍。一部运行Postfix的台式PC每天可以收发上百万封邮件。

Postfix是sendmail兼容的,从而使sendmail用户可以很方便地迁移到Postfix。Postfix支持/var[/spool]/mail、/etc/aliases、 NIS、和 ~/.forward 文件。Postfix被设计成在重负荷之下仍然可以正常工作。当系统运行超出了可用的内存或磁盘空间时,Postfix会自动减少运行进程的数目。当处理的邮件数目增长时,Postfix运行的进程不会跟着增加。Postfix是由超过一打的小程序组成的,每个程序完成特定的功能。你可以通过配置文件设置每个程序的运行参数。Postfix具有多层防御结构,可以有效地抵御恶意入侵者。如大多数的Postfix程序可以运行在较低的权限之下,不可以通过网络访问安全性相关的本地投递程序等等。

Postfix由十几个具有不同功能的半驻留进程组成,并且在这些进程中并无特定的进程间父子关系。某一个特定的进程可以为其他进程提供特定的服务。大多数的Postfix进程由一个进程统一进行管理,该进程负责在需要的时候调用其他进程,这个管理进程就是master进程。该进程也是一个后台程序。这些Postfix进程是可以配置的,我们可以配置每个进程运行的数目,可重用的次数,生存的时间等等。通过灵活的配置特性可以使整个系统的运行成本大大降低。队列管理进程仅仅在内存中保留active队列,并且对该队列的长度进行限制,这样做的目的是为了避免进程运行内存超过系统的可用内存。

当有新的邮件到达时,Postfix进行初始化,初始化时Postfix同时只接受两个并发的连接请求。当邮件投递成功后,可以同时接受的并发连接的数目就会缓慢地增长至一个可以配置的值。当然,如果这时系统的消耗已到达系统不能承受的负载就会停止增长。还有一种情况时,如果Postfix在处理邮件过程中遇到了问题,则该值会开始降低。当接收到的新邮件的数量超过Postfix的投递能力时,Postfix会暂时停止投递deferred队列中的邮件而去处理新接收到的邮件。这是因为处理新邮件的延迟要小于处理deferred队列中的邮件。Postfix会在空闲时处理deferred中的邮件。

当一封邮件第一次不能成功投递时,Postfix会给该邮件贴上一个将来的时间邮票。邮件队列管理程序会忽略贴有将来时间邮票的邮件。时间邮票到期时,Postfix会尝试再对该邮件进行一次投递,如果这次投递再次失败,Postfix就给该邮件贴上一个两倍于上次时[间邮票的时间邮票,等时间邮票到期时再次进行投递,依此类推。当然,经过一定次数的尝试之后,Postfix会放弃]对该邮件的投递,返回一个错误信息给该邮件的发件人。Postfix会在内存中保存一个有长度限制的当前不可到达的地址列表。这样就避免了对那些目的地为当前不可到达地址的邮件的投递尝试。从而大大提高了系统的性能。

相关导航