邮件系统-Postfix学习

邮件系统本来就是一个信息密集,并发请求大的系统。看一看主流邮件系统的一些结构对自己以后设计和实现更高效,更稳健的系统有帮助。
这里记录了一些POSTFIX的应用结构,在一些并发问题的处理等方面的特性。


==================我是悲催的分界线=============================


1.Postfix简介

Postfix最初是由Wietse Venema开发后来由IBM research支持的邮件发送程序。


2.Postfix的结构特点

区别于"单体式应用",postfix是一种“模块化设计”的方式组织应用。应用的各个功能被设计成不同的module,并应驻留在内存中的后台进程形式工作。包括完成SMTP发送的smtp daemon,完成日志记录功能的log daemon,完成邮件清理的cleanup daemon等等。这些模块由master daemon在启动时统一加载。

(反思:这样设计的目的好处在于能够将不同功能分离,权限分离,更加安全和更易管理和维护)

3.邮件发送走向


[img]http://dl.iteye.com/upload/attachment/454679/37580281-3a9e-3f5c-8ca7-b6cd200965e9.jpg[/img]


3-1如何接收邮件

[img]http://dl.iteye.com/upload/attachment/454647/63f26699-84b7-3997-b730-0eff242898c0.jpg[/img]

从上图我们可以看到,POSTFIX邮件的来源主要有以下2种
(1)接收来自本机系统的邮件(本机用户或自主进程提交)
(2)来自外部网络的邮件

来自本机的邮件
i.来自本机的邮件会被postdrop程序放到postfix队列目录下的maildrop/子目录
ii.pickup daemon会定期(服务器配置)唤醒检查maildrop中是否又待发送的邮件
iii.送到cleanup daemon进行清洗工作,以后同来自网络的邮件


来自网络的邮件

i.来自网络的邮件通常分为两种
一。外界寄个postfix所控制网域的邮件(终点),
二。外界寄给POSTFIX的其他网域的邮件,需要转发rely
不过不论是哪种情况POSTFIX都会直接将邮件交由cleanup daemon处理。

CleanUp daemon是邮件进入队列前的最后一站,用于添加一些邮件缺失信息,或者进行一些内容校验等工作。由此接受功能完成。

3-2 如果递送邮件(POSTFIX的队列结构)


[img]http://dl.iteye.com/upload/attachment/454649/8d08e99d-b188-3238-b39a-7d7ecfd3c6f7.jpg[/img]

在3-1之后,邮件进入到incoming队列开始进入递送流程

Postfix是以队列结点的形式来递送邮件的,图中提到的是以下几种队列
incoming(收件队列),active(活动队列) ,deferred(延迟队列)
这三种队列的工作方式
i.incoming queue用来存放新邮件,是邮件队列的入口
ii.下一站是active queue,这个队列存放着已经准备被递送的邮件
iii,如果递送失败(网络断开,或者收件夹满等),会被移到deferred queue
延迟队列会每隔一段时间被扫描,如果重试时间到,邮件将会被重放到active queue里(重试时间取决于-1.重试时间是否到达2.重试时间在配置的最大值最小值之间),延迟队列里的邮件默认将存放5天,如果5天内邮件被递送则邮件会被删除,如果超过5天,在删除的同时,会被认为邮件不可递送,有bounce daemon发送一封弹回通知给发件者。

PS:对于队列的设计,可以是内存队列,也可以是文件队列,那么POSTFIX的队列是什么样的呢。
POSTFIX的队列是以文件形式存在的,queue manager管理了一定数量的的队列文件夹,这些文件夹就是队列的存在。每一个队列在queue_directory参数中指定存储路径。默认为/var/spool/postfix/,那么我们的几种队列就分别是
/var/spool/postfix/incoming/
/var/spool/postfix/deferred/..。等

(反思:为什么POSTFIX会采用文件夹形式描述队列,个人认为是为了可靠性,在发送过程中难免出现掉电,down机,网络异常等情况,用文件形式存储邮件可以保证邮件在任何时候都有实体存在,不会丢失)
当然POSTFIX的队列还有诸如故障队列,hold队列等,这里就不阐述了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值