为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

Linux下的邮件服务器 postfix简介

2020-03-08 9页 doc 26KB 8阅读

用户头像

is_353097

暂无简介

举报
Linux下的邮件服务器 postfix简介现在,运行在Linux环境下免费的邮件服务器,或者称为MTA(Mail Transfer Agent)有若干种选择,比较常见的有Sendmail、Qmail、Postfix、exim及Zmailer 等。 本文希望通过对几种影响相对来说比较大的主流Linux环境下的MTA的特点进行阐述,并对其优缺点一一分析比较,使用户在选择Linux环境下的免费MTA 时有一个选择的依据。 Postfix: Postfix是一个由IBM资助下由Wietse Venema 负责开发的自由软件工程的一个产物,其目的是为用户提供除sendm...
Linux下的邮件服务器 postfix简介
现在,运行在Linux环境下免费的邮件服务器,或者称为MTA(Mail Transfer Agent)有若干种选择,比较常见的有Sendmail、Qmail、Postfix、exim及Zmailer 等。 本文希望通过对几种影响相对来说比较大的主流Linux环境下的MTA的特点进行阐述,并对其优缺点一一分析比较,使用户在选择Linux环境下的免费MTA 时有一个选择的依据。 Postfix: Postfix是一个由IBM资助下由Wietse Venema 负责开发的自由软件的一个产物,其目的是为用户提供除sendmail之外的邮件服务器选择。Postfix力图做到快速、易于管理、提供尽可能的安全性,同时尽量做到和sendmail邮件服务器保持兼容性以满足用户的使用习惯。起初,Postfix是以VMailer这个名字发布的,后来由于商标上的原因改名为Postfix。 一、主要目标 Postfix工程的目标是实现一个邮件服务器,提供给用户除sendmail以外的选择。其设计目标包括: 性能。Postfix要比同类的服务器产品速度快三倍以上,一个安装Postfix的台式机一天可以收发百万封信件。Postfix设计中采用了web服务器的的设计技巧以减少进程创建开销,并且采用了其他的一些文件访问优化技术以提高效率,但同时保证了软件的可靠性。 兼容性。Postfix设计时考虑了保持Sendmail的兼容性问题,以使移植变的更加容易。Postfix支持/var[/spool]/mail, /etc/aliases, NIS, 及~/.forward等文件。然而Postfix为保证管理的简单性,所以没有支持配置文件sendmail.cf。 安全和健壮性。Postfix设计上实现了程序在过量负载情况下仍然保证程序的可靠性。当出现本地文件系统没有可用空间或没有可用内存的情况时,Postfix就会自动放弃,而不是重试使情况变的更糟。 灵活性。Postfix结构上由十多个小的子模块组成,每个子模块完成特定的任务,如通过SMTP接收一个消息,发送一个消息,本地传递一个消息,重写一个地址等等。当出现特定的需求时,可以用新版本的模块来替代老的模块,而不需要更新整个程序。而且它也很容易实现关闭某个功能。 安全性。Postfix使用多层防护措施防范攻击者来保护本地系统,几乎每一个Postfix守护进程都能运行在固定低权限的chroot之下,在网络和安全敏感的本地投递程序之间没有直接的路径—一个攻击者必须首先突破若干个其他的程序,才有可能访问本地系统。Postfix甚至不绝对信任自己的队列文件或IPC消息中的内容以防止被欺骗。Postfix在输出发送者提供的消息之前会首先过滤消息。而且Postfix程序没有set-uid。 二、Postfix的一些特点 支持多传输域:sendmai支持在Internet, DECnet, X.400及UUCP之间转发消息。Postfix则灵活的设计为无须虚拟域(vistual domai)或别名来实现这种转发。但是在早期的发布里仅仅支持STMP和有限度地支持UUCP,但对于我国用户来说,多传输域的支持没有什么意义。 虚拟域:在大多数通用情况下,增加对一个虚拟域的支持仅仅需要改变一个Postfix查找信息表。其他的邮件服务器则通常需要多个级别的别名或重定向来获得这样的效果。 UCE控制(UCE,unsolicited commercial email): Postfix能限制哪个主机允许通过自身转发邮件,并且支持限定什么邮件允许接进。Postfix实现通常的控制功能:黑名单列表、RBL查找、HELO/发送者DNS核实。基于内容过滤当前没有实现。 表查看: Postfix没有实现地址重写语言,而是使用了一种扩展的表查看来实现地址重写功能。表可以是本地dbm或db文件等格式。 三、Postfix体系结构及与Sendmail的比较 Postfix是基于半驻留,互操作的进程的体系结构,每个进程完成特定的任务,没有任何特定的进程衍生关系(父子关系)。而且,独立的进程来完成不同的功能相对于“单块”程序具有更好的隔离性。此外,这种实现方式具有这样的优点:每个服务如地址重写等都能被任何一个Postfix部件所使用,无须进程创建等开销,而仅仅需要重写一个地址,当然并不是只有postfix采用这种方式。 Postfix是按照这种方式实现的:一个驻留主服务器根据命令运行Postfix守护进程,守护进程完成发送或接收网络邮件消息,在本地递交邮件等等功能。守护进程的数目由配置参数来决定的,并且根据配置决定守护进程运行的次数(re-used times),当空闲时间到达配置参数指定的限度时,自动消亡。这种方法明显地降低了进程创建开销,但是单个进程之间仍然保持了良好的隔离性。 Postfix的设计目标就是成为Sendmail的替代者。由于这个原因,Postfix系统的很多部分,如本地投递程序等,可以很容易地通过编辑修改类似inetd的配置文件来替代。 Postfix的核心是由十多个半驻留程序实现的。为了保证机密性的原因,这些Postfix进程之间通过Unix的socket或受保护的目录之下的FIFO进行通信。即使使用这种方法来保证机密性,Postfix进程并不盲目信任其通过这种方式接收到的数据。 Postfix进程之间传递的数据量是有限制的。在很多情况下,Postfix进程之间交换的数据信息只有队列文件名和接收者列表,或某些状态信息。一旦一个邮件消 息被保存进入文件,其将在其中保存到被一个邮件投递程序读出。 Postfix采用一些通常的措施来避免丢失信息:在收到确认以前通过调用flush和fsync()保存所有的数据到磁盘中。检查所有的系统调用的返回结果来避免错误状况。 大多数构建邮件服务器者都会选择sendmail,公平的来讲sendmail是一个不错的MTA(Mail Transfer Agent),最初开发时Eric Allman的设计考虑主要放在了邮件传递的成功性。不幸的是,Sendmai开发时没有太多的考虑Internet环境下可能遇到的安全性问题。Sendmail在大多数系统上只能以根用户身份运行,这就意味着任何漏洞都可能导致非常严重的后果,除了这些问题之外,在高负载的情况Sendmail运行情况不是很好。 四、postfix 的安全性 Postfix 则并一定要以root的身份运行,而只需要一个主(master)程序以root身份运行,其生成进程来处理接入、发出及本地邮件投递工作。通过使用一系列模块部件,每个任务由一个单独的程序来运行(这样使审计变的容易一些)。例如发出邮件被卸载到一个队列目录,在这里“pcikup”程序取到该邮件然后将邮件传递给“cleanup”程序,其再将邮件传递给“trivial-rewrite”,其负责处理邮件头,最后若邮件目的是别的系统则将邮件传递给“smtp”程序。而且相对于Sendmail 来说Postfix也更容易设置chroot‘ed环境。只要简单地通过编辑master.cf(一般位于/etc/postfix内)文件即可实现,并且Postfix将运行chroot‘ed,以限定在其定义的队列目录之下(通常位于/var/spool/postfix),同样可以在master.cf中对Postfix的单一模块设置进程限制。用户可以限制Postfix以哪个用户的身份运行,一般来说是以“postfix”用户(概念上该用户和Apache的nobody类似)运行,该用户可以访问特定的队列目录。Postfix其他的主要优点是起配置文件的清晰易懂性。 与Sendmail的比较如sendmail之类的邮件系统是按照一个单块的结构设计实现的,该“单块”程序实现所有的功能。当然这种结构有利于在系统的不同部分之间共享数据。但是这种结构容易出现一些致命的错误。而如qmail的邮件系统上使用一种分层次的结构,按照固定得顺序运行不同功能的子模块进程,执行完毕之后就将其释放。这种方法有良好的“绝缘”性,但是增加了进程创建开销和进程间通信开销。但是通过合理的规划子模块进程的运行顺序可以将开销保持在可以接受的范围内。 使用其他的MTA替代Sendmail是一件非常麻烦的事情,用户往往又要花大量的时间去熟悉新的MTA的配置和使用。而使用Postfix,你可以利用很多以有的配置文件。如(access, aliases, virtusertable等等),只需要简单的在master.cf中定义一下即可。此外,Postfix在行为上也很象Sendmail,用户可以使用sendmail命令来启动Postfix。 当然,使用一个软件来替代另外一个软件需要解决特定的问题。部分原因是因为Postfix的安全特性,在配置Postfix时可能会遇到一些问题。最典型的问题是向root用户发送邮件。Postfix一般不提高自身的权限(向root用户发送邮件所必须的)来投递邮件。用户需要在别名文件中为root定义别名,如:root: someuser。这同样会对若干个邮件列表模块发生影响,特别是SmartList。一般来说实现邮件列表最好使用Majordomo,它易于配置。 Sendmail一个很突出的问题就是可扩展性和性能问题。例如用户若希望每天重新启动Sendmail来实现自动更新配置文件(如为虚拟主机重定向邮件)就会出现问题。Sendmail生成新的进程来处理发送和接收邮件,这些进程会一直存在直到传输结束,之后Sendmail才能退出,这样你的脚本程序将不能正确的重起Sendmail。而对于Postfix,用户则只需要发出命令postfix reload即可,Postfix将会重新加载其配置文件。 另外,对于有数以万计的用户的邮件服务器来说,使用文件来存储如匹配用户发出邮件地址(例如bob发出的信的发信人修改为sales@example.org)。对于大量用户来讲,该文件就会变的很巨大,从而影响系统的运行效率。而Postfix则可以和一个数据库后台集成起来(当前只支持MySQL)来存放其配置信息,数据库方式要比文件方式在可扩展性方面强大很多。 遵从IBM的开放源代码版权许可证,用户可以自由地分发该软件,进行二次开发。其唯一的限制就是必须将对Postfix做的修改返回给IBM公司。因为IBM资助了Wietse的开发 在Internet世界中,大部分的电子邮件都是通过sendmail来投递的,大约有100万用户使用sendmail,每天投递上亿封邮件。这真实一个让人吃惊的数字。Postfix 试图更快、更容易管理、更安全,同时还与sendmail保持足够的兼容性。以下介绍postfix安装配置 邮件系统postfix安装配置 一、postfix概述 postfix是WietseVenema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件。下面一段话摘自postfix的官方站点:“postfix是WietseVenema想要为使用最广泛的sendmail提供替代品的一个尝试。在Internet世界中,大部分的电子邮件都是通过sendmail来投递的,大约有100万用户使用sendmail,每天投递上亿封邮件。这真实一个让人吃惊的数字。Postfix试图更快、更容易管理、更安全,同时还与sendmail保持足够的兼容性。” 二、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程序可以运行在较低的权限之下,不可以通过网络访问安全性相关的本地投递程序等等。 三、postfix的总体结构 postfix由十几个具有不同功能的半驻留进程组成,并且在这些进程中并无特定的进程间父子关系。某一个特定的进程可以为其他进程提供特定的服务。大多数的postfix进程由一个进程统一进行管理,该进程负责在需要的时候调用其他进程,这个管理进程就是master进程。该进程也是一个后台程序。这些postfix进程是可以配置的,我们可以配置每个进程运行的数目,可重用的次数,生存的时间等等。通过灵活的配置特性可以使整个系统的运行成本大大降低。 postfix的邮件队列(mailqueues) postfix有四种不同的邮件队列,并且由队列管理进程统一进行管理: 1.maildrop:本地邮件放置在maildrop中,同时也被拷贝到incoming中。 2.incoming:放置正在到达或队列管理进程尚未发现的邮件。 3.active:放置队列管理进程已经打开了并正准备投递的邮件,该队列有长度的限制。 4.deferred:放置不能被投递的邮件。 队列管理进程仅仅在内存中保留active队列,并且对该队列的长度进行限制,这样做的目的是为了避免进程运行内存超过系统的可用内存。 四、postfix对邮件风暴的处理 当有新的邮件到达时,postfix进行初始化,初始化时postfix同时只接受两个并发的连接请求。当邮件投递成功后,可以同时接受的并发连接的数目就会缓慢地增长至一个可以配置的值。当然,如果这时系统的消耗已到达系统不能承受的负载就会停止增长。还有一种情况时,如果postfix在处理邮件过程中遇到了问题,则该值会开始降低。当接收到的新邮件的数量超过postfix的投递能力时,postfix会暂时停止投递deferred队列中的邮件而去处理新接收到的邮件。这是因为处理新邮件的延迟要小于处理deferred队列中的邮件。 五、postfix对无法投递的邮件的处理 当一封邮件第一次不能成功投递时,postfix会给该邮件贴上一个将来的时间邮票。邮件队列管理程序会忽略贴有将来时间邮票的邮件。时间邮票到期时,postfix 会尝试再对该邮件进行一次投递,如果这次投递再次失败,postfix就给该邮件贴上一个两倍于上次时间邮票的时间邮票,等时间邮票到期时再次进行投递,依此类推。当然,经过一定次数的尝试之后,postfix会放弃对该邮件的投递,返回一个错误信息给该邮件的发件人。postfix对不可到达的目的地邮件的处理,postfix 会在内存中保存一个有长度限制的当前不可到达的地址列表。这样就避免了对那些目的地为当前不可到达地址的邮件的投递尝试。从而大大提高了系统的性能。 1.postfix的安全性 postfix通过一系列的措施来提高系统的安全性,这些措施包括: (1).动态分配内存,从而防止系统缓冲区溢出; (2).把大邮件分割成几块进行处理,投递时再重组; (3).Postfix的各种进程不在其他用户进程的控制之下运行,而是运行在驻留主进程master的控制之下,与其他用户进程无父子关系,所有有很好的绝缘性。 (4).Postfix的队列文件有其特殊的格式,只能被postfix本身识别;以上介绍postfix安装配置。
/
本文档为【Linux下的邮件服务器 postfix简介】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索