`

邮件系统-Postfix续

阅读更多
1.postfix采用文件队列来处理邮件,
从本地邮件->maildrop->incoming-.....
从外网邮件->incoming....如果是本地邮件则转到上一步

因为有文件队列保证,使得消息都不会丢失--------持久化的作用。


2.队列由queueManager几种管理,使得队列状态和消息流向都清晰可控。这里有点
像MVC的controller ,负责处理所有的请求,请求转发等等。

3.一套消息系统应该分模块。比如消息存储子模块,消息接受子模块,消息递送子模块,

安全校验子模块,用户信息子模块,等等。

4.对于一个消息系统,应该有完善的健康指标检验手段,比如队列健康情况(轻松,拥堵)

,机器健康情况(load,cpu使用率),出口健康检查(下一个结点接收消息的能力,如数据库情况,下一个邮件网关的接收能力,延迟等等)


5.The "Incomming queue"

The queue manager scans the incoming queue bringing any new mail into the

"active" queue if the active queue resource limits have not been exceeded. By

default, the active queue accommodates at most 20000 messages. Once the active

queue message limit is reached, the queue manager stops scanning the incoming

(and deferred, see below) queue.
当active queue满时,将不会在去取deferred queue 和incoming queue里的东西


The incoming queue grows when the message input rate spikes above the rate at

which the queue manager can import messages into the active queue.

当消息的入量大于消息进入active的量时incoming queue的大小增长

queueManager的效率往往是又IO拖慢的

in_flow_delay参数用来控制刷入active queue的速率


6.the "active queue"

Messages in the "maildrop", "hold", "incoming" and "deferred" queues (see

below) do not occupy memory; they are safely stored on disk waiting for their

turn to be processed. The envelope information for messages in the "active"

queue is managed in memory, allowing the queue manager to do global scheduling

以上队列并不毫内存而是存放在磁盘上,内存中只是放头信息,用于queue manager全局调



Congestion occurs in the active queue when one or more destinations drain

slower than the corresponding message input rate.

active queue的拥堵往往是因为目标节点的处理速度低于消息进入速度

Input into the active queue comes both from new mail in the "incoming" queue,

and retries of mail in the "deferred" queue. Should the "deferred" queue get

really large, retries of old mail can dominate the arrival rate of new mail.

active queue中的消息有incoming queue和deferred queue的部分重试消息构成,重试消

息的发送回牺牲新邮件的到达

The only way to reduce congestion is to either reduce the input rate or

increase the throughput. Increasing the throughput requires either increasing

the concurrency or reducing the latency of deliveries.

减少拥堵的方法要么是减少进入量要么是增加输出量,而增加输出量往往需要增加目标主

机的并发量并减少其延迟

no use increasing concurrency once the network pipe is full
当网络已经拥堵时增加并发量与事无补

The best way to avoid bottlenecks when one or more MX hosts is non-responsive

is to use connection caching.

解决MX主机无响应而造成的性能瓶颈的最好方法是使用连接缓存
(当主机不可用时缓存连接,这样就不用重试,当连接可用时再将这部分邮件逐渐发出去,

这样能减少不必要的连接数)


7.The deferred queue
  延迟队列为每条消息打上一个时间标签(the cool-off time间隔时间),时间标签用于指

定下一个发送时间。当发送时间到时,消息会再次放入active queue.当发送失败时并需要

再次重试时,时间标签会变成现在的两倍长。这样做能够让新的邮件更多的发出去,而可

能再次发送失败的邮件会被滞留的更久。

cool-off time需要设置在minimal_backoff_time和maximal_backoff_time中,当时间已经

超过maximal_backoff_time。所以当有大量defferedmail 的机器down的时候,重启后可能

会有大量的消息阻塞掉active queue 可以用更加权衡的方法处理


8.投递调度算法
如果有多封邮件要送到同一个目的地,MDA第一次最多只能同时送

initial_destination_concurrency封邮件,如果能够完成初次投递,则会尝试同时送出更

多的邮件,指导发现目的系统不能承担当前复核或者同时投递的数目超过

default_destination_concurrency_limit.如果遇到问题会降低此值

当新收到的邮件数量超过postfix的投递能力,postfix会暂时停止投递deferred队列里的

邮件而去处理新接收到的邮件。这是因为处理新邮件的延迟要小于处理deferred队列中的

邮件。然后在空闲时再去处理deferred中的邮件

Note that whenever the queue manager is restarted, there may already be

messages in the active queue directory, but the "real" active queue in memory

is empty. In order to recover the in-memory state, the queue manager moves all

the active queue messages back into the incoming queue, and then uses its

normal incoming queue scan to refill the active queue. The process of moving

all the messages back and forth, redoing transport table (trivial-rewrite(8)

resolve service) lookups, and re-importing the messages back into memory is

expensive. At all costs, avoid frequent restarts of the queue manager (e.g. via

frequent execution of "postfix reload").

当queueamanger被重启,已经存在于active queue文件夹里的消息不会丢失,但是并不真

正存在于队列中,为了将其读入内存,qm将所有在aq里的消息放入incoming队列并进行常

规的队列检查并放入aq里,这些操作都很费资源,故尽量少的重启qm


分享到:
评论

相关推荐

    实验-10-1-postfix邮件服务器

    在本实验中,我们将在RHEL-3系统上搭建一个Postfix邮件服务器,并使用Dovecot收邮件服务。同时,我们还将使用Windows 7作为客户端来测试收发邮件。 1. 安装Postfix 首先,我们需要安装Postfix邮件服务器。在终端中...

    linux-postfix-dovecot-openwebmail

    总之,`linux-postfix-dovecot-openwebmail`的组合提供了一个功能强大的邮件服务器环境,但配置过程需要对Linux系统和网络服务有深入的理解。确保每个组件正确安装和配置,以及安全设置,对于维护一个稳定可靠的邮件...

    Ansible-ansible-role-postfix.zip

    Ansible-ansible-role-postfix.zip,postfix的ansible角色mtapostfix ansible的角色,ansible是一个简单而强大的自动化引擎。它用于帮助配置管理、应用程序部署和任务自动化。

    Ansible-ansible-postfix.zip

    Ansible-ansible-postfix.zip,负责在类似于debian的systemspostfix中设置postfix的角色,ansible是一个简单而强大的自动化引擎。它用于帮助配置管理、应用程序部署和任务自动化。

    Android代码-android-postfix-plugin

    android-postfix-plugin Android postfix plugin for AndroidStudio Available templates: Postfix Expression Description Example .toast Create and show Toast. Toast.makeText(context, expr, ...

    extmail mta-postfix maildrop mail服务器搭建

    在本文中,我们将深入探讨如何搭建一个基于extmail、mta-postfix和maildrop的邮件服务器,以及如何配置相关的组件如ExtMan、Cyrus-SASL和Courier-IMAP等。首先,确保以root权限执行所有安装步骤,因为这涉及到系统...

    intellij-postfix-templates, IntelliJ IDEA的自定义后缀模板.zip

    intellij-postfix-templates, IntelliJ IDEA的自定义后缀模板 IntelliJ IDEA的自定义后缀模板自定义后缀模板是一个 IntelliJ IDEA 插件,允许你定义自己的自定义后缀模板。 目前,它支持以下编程语言: Java,Scala...

    postfix邮件系统原理

    postfix邮件系统原理postfix邮件系统原理postfix邮件系统原理

    docker-Postfix-AD:具有Microsoft AD后端的CentOS 7上的邮件服务器

    Docker-Postfix-MailServer 特征 登录帐户可以与帐户电子邮件不同。 例如,帐户:520001,电子邮件: 后缀邮件服务器 Microsoft Active Directory的用户帐户后端(2008R2,2012R2,2016) OpenDKIM 管理筛 用户电子...

    WebMail邮件服务器搭建:postfix+dovecot+roundcube (原理加全操作-详细)

    在这个邮件服务器系统中,Postfix 负责将邮件从发送者传递到接收者,Dovecot 负责将邮件从Postfix 传递到Roundcube,Roundcube 负责将邮件显示给用户。整个系统的架构图如下所示: 邮件发送者 -> Postfix -> ...

    ansible-role-postfix:Ansible角色-Postfix

    Postfix 是一个开源的、高性能的邮件传输代理,广泛用于企业级邮件系统中,提供邮件发送和接收服务。 首先,让我们深入了解一下 Ansible 角色(role)。在 Ansible 中,角色是一种组织和重用代码的方式,它们将相关...

    Eclipse-Postfix-Code-Completion:扩展到Eclipse模板系统以支持后缀代码完成

    Eclipse Postfix代码完成插件这是对Eclipse的JDT模板系统的扩展,以支持后缀代码完成为了尝试使用此功能,请添加... 请同时在查看相应的故障单。 该插件默认安装以下Postfix Code Completion模板: 模板描述类型依赖....

    docker-postfix, 在 Docker 容器中,使用smtp身份验证( sasldb ) 运行后缀.zip

    docker-postfix, 在 Docker 容器中,使用smtp身份验证( sasldb ) 运行后缀 docker后缀在 Docker 容器中运行带有smtp身份验证( sasldb )的postfix 。 TLS和OpenDKIM支持是可选的。需求Docker 1.0安装构建图像$ sudo ...

    postfix搭建邮件系统

    在本文中,我们将深入探讨如何在CentOS 5.5系统上搭建基于Postfix和Dovecot的邮件系统,同时整合ClamAV、SpamAssassin以及amavisd-new,以实现一个完整的邮件服务器解决方案。 首先,我们来看一下安装环境。在...

    ansible-postfix:Postfix和Dovecot Sasl角色

    后缀 具有系统用户角色的Postfix和Dovecot SASL。 从holms / ansible-postfix分叉 目前仅支持外发电子邮件 要求 Ansible版本2.7.8 平台类 Ubuntu 18.04 角色变量 ... - postfix-sasl-dovecot 主持人:

    Infix--to-suffix-.rar_infix-Postfix

    相反,后缀表达式(Postfix notation),也称为逆波兰表示法,是一种更便于计算的表达式形式,运算符放在操作数之后,如 `2 3 4 * +`。在后缀表达式中,通过堆栈数据结构可以高效地求解表达式值。 中缀转后缀的过程...

    POSTFIX

    POSTFIX是一款广泛使用的开源...通过深入学习和实践,您可以熟练掌握POSTFIX的各个方面,无论是小型组织还是大型企业,都能构建出高效可靠的邮件系统。阅读提供的"postfix.pdf"文档将进一步增强您的理解和操作能力。

Global site tag (gtag.js) - Google Analytics