首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 网络安全-> 黑客攻防
邮件系统postfix安装与配置(上)_qmail
作者:网友供稿 点击:0
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
一、 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接收到一封新邮件时,新邮件首选在incoming队列处停留,然后针对不同的情况进行不同的处理:
  1.对于来自于本地的邮件:sendmail进程负责接收来自本地的邮件放在maildrop队列中,然后pickup进程对maildrop中的邮件进行完整性检测。maildrop目录的权限必须设置为某一用户不能删除其他用户的邮件。
  2.对于来自于网络的邮件:smtpd进程负责接收来自于网络的邮件,并且进行安全性检测。可以通过UCE(unsolicited commercial email)控制smtpd的行为。
  3.由postfix进程产生的邮件:这是为了将不可投递的信息返回给发件人。这些邮件是由bounce后台程序产生的。
  4. 由postfix自己产生的邮件:提示postmaster(也即postfix管理员)postfix 运行过程中出现的问题。(如SMTP协议问题,违反UCE规则的记录等等。)

  关于cleanup后台程序的说明:cleanup是对新邮件进行处理的最后一道工序
  它对新邮件进行以下的处理:添加信头中丢失的Form信息;为将地址重写成标准的user@fully.qualified.domain格式进行排列;重信头中抽出收件人的地址;将邮件投入incoming队列中,并请求邮件队列管理进程处理该邮件;请求trivial-rewrite进程将地址转换成标准的user@fully.qualified.domain格式。

  2.2 投递邮件的过程
  新邮件一旦到达incoming队列,下一步就是开始投递邮件,postfix投递邮件时的处理过程如图三所示。相关的说明如下:
  邮件队列管理进程是整个postfix邮件系统的心脏。它和local、smtp、pipe等投递代理相联系,将包含有队列文件路径信息、邮件发件人地址、邮件收件人地址的投递请求发送给投递代理。队列管理进程维护着一个deferred队列,那些无法投递的邮件被投递到该队列中。除此之外,队列管理进程还维护着一个active队列,该队列中的邮件数目是有限制的,这是为了防止在负载太大时内存溢出。邮件队列管理程序还负责将收件人地址在relocated表中列出的邮件返回给发件人,该表包含无效的收件人地址。

  如果邮件队列管理进程请求,rewrite后台程序对收件人地址进行解析。但是缺省地,rewrite只对邮件收件人是本地的还是远程的进行区别。
  如果邮件对你管理进程请求,bounce后台程序可以生成一个邮件不可投递的报告。
  本地投递代理local进程可以理解类似UNIX风格的邮箱,sendmail风格的系统别名数据库和sendmail风格的.forward文件。可以同时运行多个local进程,但是对同一个用户的并发投递进程数目是有限制的。你可以配置local将邮件投递到用户的宿主目录,也可以配置local将邮件发送给一个外部命令,如流行的本地投递代理procmail。在流行的linux发行版本RedHat中,我们就使用procmail作为最终的本地投递代理。
  远程投递代理SMTP进程根据收件人地址查询一个SMTP服务器列表,按照顺序连接每一个SMTP服务器,根据性能对该表进行排序。在系统负载太大时,可以有数个并发的SMTP进程同时运行。
  pipe是用于UUCP协议的投递代理。
三、 postfix的安装过程

  3.1源代码包的安装
  1. 获取postfix的源代码包
  从postfix官方站点www.postfix.org取得postfix的源代码包postfix-19991231-pl08.tar.gz。将其拷贝到/tmp
  2.解开源代码包,将生成/tmp/ postfix-19991231-pl08目录。
  tar xvzf postfix-19991231-pl08.tar.gz
  3.编译源代码包
  cd /tmp/ postfix-19991231-pl08
  make
  4.建立一个新用户“postfix”,该用户必须具有唯一的用户id和组id号,同时应该让该用户不能登录到系统,也即不为该用户指定可执行的登录外壳程序和可用的用户宿主目录。我们可以先用adduser postfix 添加用户再编辑/etc/passwd文件中的相关条目如下所示:
   postfix:*:12345:12345:postfix:/no/where:/no/shell
  5.确定/etc/aliases文件中包含如下的条目:
   postfix: root
  6. 以root用户登录,在/tmp/ postfix-19991231-pl08目录下执行命令:
  ./INSTALL.sh
  7. 启动postfix
  # postfix start
  8.关于maildrop目录权限的说明:
  postfix可以使用一个所有用户都可写的(也即目录权限为1773)的maildrop
  目录来让本地用户提交邮件。这种方法避免了使用set-uid 或 set-gid 软件,并且在邮件系统不可用时,用户仍然可以提交邮件。其他用户没有访问该目录中的队列文件的权限。接收来自网络的邮件时postfix不使用maildrop目录。但是,由于该目录的权限是733,其他用户可以建立一个硬连接到该目录中的文件从而导致该邮件被投递多次或无法删除,也就是说这将导致安全性问题。如果你想要使用这种方式来让用户提交邮件,就要在INSTALL.sh 脚本问你是否需要set-gid 时回答no。
  如果你的系统有多个用户的话,最好取消以上的方式而采用利用set-gid 用户权限提交邮件的方式。这时,我们首先需要建立一个组id唯一的组"maildrop" 并且确定该组中没有用户成员。然后在INSTALL.sh 问你是否需要set-gid 时指定"maildrop"。
  提示:在安装postfix之前,请删除已经安装的sendmail。

  3.2 rpm包的安装
  1. 获取postfix的rpm软件包。
   我们可以从http://www.alltrading.es/postfix/RPMS/i386/ 获得postfix的rpm软件包。当前的最新版本是postfix-20000531-2.i386.rpm。
  2. 备份你的/etc/aliases和/etc/aliases.db,因为postfix要使用该别名数据库。
  3. 用以下命令查看系统是否安装了sendmail:
   [root@mail /root]# rpm -qa |grep sendmail
   sendmail-doc-8.9.3-15
   sendmail-8.9.3-15
   sendmail-cf-8.9.3-15
  4. 用以下命令强行卸载sendmail:
   [root@mail /root]# rpm -e sendmail sendmail-cf sendmail-doc --nodeps
  5. 用以下命令杀死运行中的sendmail进程:
  [root@mail /root]# killall sendmail
  6. 安装postfix:
   [root@mail /root]# rpm -Uvh postfix-20000531-2.i386.rpm
   postfix ##################################################
   postfix-script: warning: creating missing Postfix pid directory
   postfix-script: warning: creating missing Postfix incoming directory
   postfix-script: warning: creating missing Postfix active directory
   postfix-script: warning: creating missing Postfix bounce directory
   postfix-script: warning: creating missing Postfix defer directory
   postfix-script: warning: creating missing Postfix deferred directory
   postfix-script: warning: creating missing Postfix saved directory
   postfix-script: warning: creating missing Postfix corrupt directory
   postfix-script: warning: creating missing Postfix public directory
   postfix-script: warning: creating missing Postfix private directory
  [root@mail /root]#
  7. 启动postfix
   [root@mail /root]# /etc/rc.d/init.d/postfix start

  3.3 配置系统每次启动时自动启动postfix
  1.如果你安装的是postfix的源代码包,可以在/etc/rc.d/rc.local文件中加入如下的语句让系统每次启动时自动启动postfix:
  if [ -f /usr/libexec/postfix ]; then
  /usr/libexec/postfix start
  fi
  2.如果你安装的是postfix的rpm包,可以通过setup命令来设置在系统启动时启动postfix。


文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·J2EE平台介绍-JSP教程,J2ME开发
·自己制作友好的页面“确认对话框”-ASP教程,ASP应用
·DataAdapter是如何更新数据库数据的?-.NET教程,数据库应用
·jsp项目中实现关闭浏览器后吊线,只要不关闭不操作也保持在线-JSP教程,Jsp/Servlet
·企业Java技术开发技巧2则-JSP教程,Java技巧及代码
·刚刚整理好-汉字转拼音缩写的函数-.NET教程,评论及其它
·关于数据返回给调用页面-ASP教程,数据库相关
·如何使用C#压缩文件及注意的问题!-.NET教程,C#语言
·数据库安装程序-.NET教程,数据库应用
·DataGrid的自定义分页UserControl-.NET教程,数据库应用
最新文章
·王通:网站推广的18种秘笈_营销推广
·什么是mfa,以及停止mfa的好处_网赚技巧
·google adsense 域名保护功能是否作恶_网赚技巧
·关于无效点击-adsense团队资深专员如是说_网赚技巧
·google adsense将以人民币支付_站长访谈
·bbmao的神秘配方:打破中文聚类搜索的低迷_站长访谈
·你的网站为什么粘不住流量?_站长心得
·决定网站成败重要的六个因素_站长心得
·widnows vista是吃内存大户 优化vista攻略_windows vista
·首页所应该达到的几个目标(1)_站长心得
相关主题
  • 邮件系统postfix安装与配置(下)_qmail
  • 邮件系统postfix安装与配置(二)-网管专栏,邮件服务
  • 邮件系统postfix安装与配置(一)-网管专栏,邮件服务
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭