Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将原始SMTP邮件发送到AMQP代理_Python_Smtp_Rabbitmq_Postfix Mta_Amqp - Fatal编程技术网

Python 将原始SMTP邮件发送到AMQP代理

Python 将原始SMTP邮件发送到AMQP代理,python,smtp,rabbitmq,postfix-mta,amqp,Python,Smtp,Rabbitmq,Postfix Mta,Amqp,我正在寻找一种方法来获取入站SMTP消息的GAD,并将它们放到AMQP代理上,以便进行进一步的路由和处理。邮件实际上不会在邮箱中结束,而是将SMTP用作邮件网关 我已经用Python编写了一个Postfix After Queue内容过滤器,将入站SMTP消息放到RabbitMQ代理上。这很好——我通过队列获得原始消息,消费者很好地接收到了它。问题是AMQP连接会随着每条消息一起创建和断开。。。每次都会从头开始重新执行内容筛选器脚本。我想这最终会成为一个性能问题 如果我可以利用一些可重入的东西,

我正在寻找一种方法来获取入站SMTP消息的GAD,并将它们放到AMQP代理上,以便进行进一步的路由和处理。邮件实际上不会在邮箱中结束,而是将SMTP用作邮件网关

我已经用Python编写了一个Postfix After Queue内容过滤器,将入站SMTP消息放到RabbitMQ代理上。这很好——我通过队列获得原始消息,消费者很好地接收到了它。问题是AMQP连接会随着每条消息一起创建和断开。。。每次都会从头开始重新执行内容筛选器脚本。我想这最终会成为一个性能问题


如果我可以利用一些可重入的东西,我可以重用连接。或者我只是在错误地处理整个事情…

通过普通TCP建立AMQP连接非常快。如果您使用的是SSL,则可能是另一种情况,但您确定将原始消息排入AMQP交换队列将成为瓶颈吗?我的猜测是,实际上通过SMTP传递消息的速度会慢得多,因此排队的速度不会影响系统的吞吐量

如果这篇文章确实成为一个瓶颈,我更喜欢使用Sinatra或Rack创建小型web服务器,但听起来您可能更喜欢基于Python的解决方案。让postfix内容筛选器使用curl执行HTTP POST到Web服务器,该Web服务器保持与AMQP服务器的持久连接


当然,现在您有了一个额外的活动部件,您需要考虑监控、错误处理和安全性。

使用SwiftMQ。它有一个从IMAP或POP3帐户接收您的电子邮件,将其转换为JMS消息,然后可以由JMS客户端使用。

您可以让Postfix交付您的全部或任何电子邮件,您可以将它们扔到任何您想要的地方

我认为,如果电子邮件曾经到达过邮箱,那么这肯定是一种方式。然而,他们的目标是永远不要点击邮箱,而是直接从SMTP接受到代理。。。我想知道AMQP构造/拆卸与HTTP构造/拆卸之间的时间差是多少。不涉及SSL,并且交换(应该)已经构建,因此这可能不是一个大问题。只是想把我的继任者从糟糕的决定中解救出来;)我真的不在乎Python。。。找西纳特拉解决这件事。