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