- 浏览: 779591 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (258)
- J2SE (18)
- J2EE (33)
- AJAX (4)
- JQuery (1)
- DWR (3)
- Linux/Unix (32)
- PHP (1)
- JSF (8)
- Oracle (34)
- JavaScript (17)
- 批处理 (13)
- ASP (7)
- VBScript (3)
- SqlServer (9)
- Ant (1)
- JDBC (1)
- XML (0)
- MySql (0)
- hibernate (9)
- windows (6)
- .net (0)
- 测试 (2)
- 汇编 (2)
- 网络 (13)
- 其它 (11)
- IDE工具 (6)
- freemarker (4)
- 存储过程 (1)
- 生活 (9)
- python (11)
最新评论
-
d99520y:
hdd unlock我这直接提示can't open driv ...
用PC3000和HDD Unlock解笔记本硬盘密码 -
javaersu:
几个学习Shell的不错网站:shell为您提供了对UNIX系 ...
shell脚本实例 -
zh89233:
一段恶意脚本的分析及思考 -
tiancaicao:
hdd unlock老要联网,一联网就说我这破解不了,让我付费 ...
用PC3000和HDD Unlock解笔记本硬盘密码 -
pythoner126com:
不错,学习了,跟这个作者写的有点像,http://www.yi ...
python对文件进行读写操作
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协议的投递代理。
发表评论
-
巩固shell基础知识
2010-04-09 17:01 1492以下这些知识是在编写s ... -
Bash的测试和比较函数
2010-03-28 00:29 1410您是否为 Bash shell 中大量的测试和比较选项而困惑呢 ... -
shell脚本语法规则
2010-03-27 10:01 2831shell脚本语法规则1、变量赋值的时候"=&quo ... -
shell脚本实例
2010-03-27 09:09 205221. 写一个脚本,利用循环计算10的阶乘 #!/ ... -
在shell中自动输入密码
2010-03-23 22:11 3948在写shell脚本的时候,如果要切换到root身份下,在需要输 ... -
useradd、adduser和userdel在使用时的注意事项
2010-03-04 09:50 18671. 使用useradd时,如果后面不添加任何参数选项,例如: ... -
ubuntu启动时的初始化信息
2010-03-04 08:49 3634如果想知道Linux在启动时是如何加载硬件的,那就用dmesg ... -
ubuntu下网页显示乱码的解决方法
2010-02-26 16:28 1980在Linux下用Firefox浏览有Flash的网页时,经常碰 ... -
ubuntu分区方案
2010-02-20 15:07 745280G分区方案如下: /boot 分区,256M,文件系 ... -
linux sed命令详解
2010-02-04 17:27 13821. Sed简介 sed 是一种在 ... -
debfoster & deborphan
2010-02-04 09:22 1096从moto知道了这两个软件 ... -
tar 由于前面延迟的错误而退出
2010-01-28 14:22 5268今天在解压的时候出现:tar 由于前面延迟的错误而退出,这个错 ... -
debian下安装和配置ldap及phpldapadmin
2010-01-26 17:25 41211.安装ldap安装slapd 以及相关ldap工具#apt- ... -
在vim中使用查找命令查找指定字符串
2010-01-26 09:58 10846要自当前光标位置向上搜索,请使用以下命令: ... -
解析 Linux 中的 VFS 文件系统机制
2010-01-21 14:43 1396本文阐述 Linux 中的文件系统部分,源代码来自基于 IA3 ... -
wget 使用技巧
2010-01-13 09:05 1227wget 是一个命令行的下载工具。对于我们这些 Linux 用 ... -
debian中resolv.conf配置文件的用法
2010-01-13 09:04 2869debian中resolv.conf 的一个重要功能就是提供一 ... -
debian下修改mysql登陆密码
2010-01-12 12:56 2796今天在搭建postfix时要用到mysql数据库,在创建的时候 ... -
linux 内核代码构架图
2010-01-11 09:02 1292linux 内核代码构架图 -
scp的使用
2009-12-10 15:34 716linux 的 scp 命令 可以 在 linux 之间复制 ...
相关推荐
### Postfix概述 Postfix是一款开源邮件传输代理(MTA),由Wietse Venema在1996年开发,目的是为了提供一种安全、可靠且易于管理的邮件服务解决方案。Postfix因其高效的性能、较低的资源消耗以及高度可定制性而受...
#### 一、Postfix概述 Postfix是一款由Wietse Venema在IBM的支持下开发的邮件传输代理(MTA)软件,其目的是为广泛使用的sendmail提供一个替代方案。互联网上大部分电子邮件通过sendmail进行传输,约有100万用户...
#### Postfix概述 Postfix是一款由IBM资助,Wietse Venema领导开发的开源邮件服务器软件。它的设计理念旨在为用户提供一个高效、安全且易于管理的邮件服务解决方案,同时也努力与Sendmail保持一定程度的兼容性。 #...
以下是一些关键知识点的概述: 1. **Postfix基础**:了解Postfix的历史、设计原则以及它在邮件传递中的角色。学习如何安装Postfix,包括选择正确的软件包、配置编译选项以及安装后的基本检查。 2. **系统架构**:...
### Postfix服务全面部署知识点详解 #### 一、概述 本文档主要介绍如何全面部署一台邮件服务器,包括但不限于Postfix的安装配置、邮件认证、邮件加密、邮件病毒扫描以及广告邮件拦截等内容。通过本篇文章的学习,您...
#### 九、系统架构概述 为了实现上述目标,整个系统架构包含以下几个关键组件: 1. **Postfix**:负责邮件的接收与转发。 2. **Cyrus IMAP服务器**:存储用户的邮件,并通过IMAP协议为用户提供访问邮件的功能。 3....
#### 一、概述 Postfix是一款非常强大的邮件传输代理(MTA)软件,由Wietse Venema开发并维护。它在Linux系统中被广泛使用,用以实现邮件发送与接收的功能。本文将详细介绍Postfix的基本配置方法以及相关参数设置。...
### Postfix 邮件服务器概述 Postfix 是一种广泛使用的MTA(邮件传输代理),用于发送、接收以及转发电子邮件。它以其高效、稳定和安全性著称,在众多企业级环境中被广泛应用。从标题和标签来看,“postfix.txt”...
概述 这个Docker容器使启动和运行postfix实例变得容易。 基于,但有一些小技巧: 由Packer Docker构建器和Ansible Provisioner打包在单层中 用处理ENTRYPOINT 快速开始 启动后缀: # Pull latest image docker ...
#### 一、Postfix与Dovecot概述 在深入探讨如何编译安装Postfix之前,我们先简要介绍这两个软件的功能及其重要性。 - **Postfix**:是一款开源的MTA(Mail Transfer Agent)软件,用于处理电子邮件的接收和发送。...
#### 概述 本篇文章主要介绍如何在Linux环境下搭建一套基于Web页面的邮件系统,该系统包括了Postfix作为MTA(Mail Transfer Agent)、Extmail作为整体框架、以及Dovecot作为MDA(Mail Delivery Agent)。通过这一套...
#### 概述 本文档旨在详细介绍如何在CentOS 5操作系统上安装和配置Postfix与Extmail来搭建邮件服务器。Postfix是一款开源的MTA(邮件传输代理),以其高效稳定而闻名,被广泛应用于企业级邮件服务。Extmail则是一款...
#### 一、邮件系统概述 在现代通信中,电子邮件作为一种重要的交流工具,其重要性不言而喻。本文档主要介绍如何安装和配置Postfix邮件服务器,并结合SpamAssassin进行垃圾邮件过滤以及Dovecot作为IMAP服务器,以...
#### 概述 传统的Linux邮件服务器往往采用Sendmail作为主要的邮件传输代理(MTA),然而由于Sendmail的配置复杂度较高,许多系统管理员选择转向Postfix,后者以其更为简洁的配置文件和易用性受到广泛欢迎。本文旨在...
#### 二、组件选择与功能概述 接下来我们将了解各个组件的选择及它们的主要功能: - **AMP (Apache + MySQL + PHP):** 提供Web服务、数据库支持以及PHP脚本处理能力。 - **Postfix:** MTA (Mail Transfer Agent) ...
#### 一、概述 本文档主要介绍如何在CentOS 5.6系统上搭建一套完整的邮件服务器解决方案,其中包括Postfix作为邮件传输代理(MTA),Dovecot用于提供POP3和IMAP服务,以及Extmail作为Web界面的邮件管理系统。此外还...