为Zope 2提供的异步事务感知的MailHost替代品
项目描述
MaildropHost产品为在Zope环境中使用MaildropHost对象发送电子邮件提供支持。与内置的MailHost对象不同,发送操作是从一个单独的进程中异步进行的。此外,MaildropHost可以选择与Zope事务机制集成,以确保重试的事务不会导致创建多个电子邮件。
优势在于,由于调用邮件机制可能会很慢,因此从网页发送邮件的速度会更快。使用MaildropHost,网页将立即返回。
MaildropHost使用单独的Python进程监控产品内部的邮件队列,并按管理员设置的间隔处理邮件。产品中包含单独的启动脚本,可以用于启动此监控进程。
无法成功发送的邮件将保留在内部队列中。每次尝试发送电子邮件都会记录到监控进程维护的日志文件中。该日志文件在每次maildrop运行后关闭,因此可以在不向maildrop守护进程发送任何特殊信号的情况下安全地旋转它。
邮件投递守护进程支持StartTLS,甚至支持认证SMTP。
从Zope版本2.11.0-beta开始,标准MailHost实现也支持异步邮件处理。如果您正在运行Zope 2.11及以上版本,您应该首先查看标准MailHost产品,看看它是否符合您的需求,然后再安装MaildropHost产品。
错误跟踪器
请将问题、错误报告或功能请求发布到http://www.dataflake.org/tracker/上的错误跟踪器。
SVN版本
您可以通过setuptools或zc.buildout使用Subversion检索最新代码,使用以下URL:
http://svn.dataflake.org/svn/Products.MaildropHost/trunk#egg=Products.MaildropHost
用法
安装后,请按照以下步骤使用此产品:
编辑位于MaildropHost顶级目录中的“config”配置脚本,以反映您的特定需求,或者(可选)在文件系统中不同的位置添加自己的配置文件。有关如何从非标准位置使用配置文件的说明,请见下文。
通过运行“start_maildrop”脚本或其他包含在包中的启动脚本(位于顶级MaildropHost目录下的maildrop/bin中)来启动邮件队列检查器。编辑启动脚本,将其指向您选择的配置文件。
在ZODB中实例化一个MaildropHost对象;如果您在不同的位置创建了配置文件,请在ZMI的“编辑”选项卡上的“配置文件路径”设置中指定文件系统路径。
现在,您可以使用例如dtml-sendmail标签来创建电子邮件,并在sendmail标签中使用mailhost="XYZ"参数将sendmail标签指向MaildropHost实例,或者使用MailHost API(请参阅Zope帮助系统)。
您可以用任何您喜欢的任何方式创建电子邮件消息,而不是使用dtml-sendmail和MaildropHost实例。只要格式正确(这样邮件队列检查器可以解析它,请参阅SAMPLE_MAIL.txt文件中的示例),并将其写入位于$MAILDROP_HOME/spool(或如果已定义,则$MAILDROP_SPOOL)的队列目录,那么邮件队列检查器就会将其拾取并尝试投递。
要向ZMI中的“配置文件路径”选项添加更多选择,您需要将它们添加到您的Zope实例配置文件zope.conf中。您需要创建一个名为“product-config maildrophost”的节,并使用以“config-path”开头的键列表路径。
<product-config maildrophost> config-path-1 /tmp/myconfig config-path-2 /usr/local/mail/maildropconfig </product-config>
键必须是唯一的,因为ZConfig不允许在“product-config”配置节中存在重复的键。您必须重新启动Zope才能在ZMI中看到这些更改。
如果您使用不同的MaildropHost配置,则需要复制maildrop/bin中找到的启动/停止脚本,并相应地调整配置文件路径。
邮件文件格式
邮件文件的格式(请参阅SAMPLE_MAIL.txt)非常简单。第一行包含收件人地址,前面加“##To:”。第二行是发件人地址,前面加“##From:”。这些等同于信封的发件人和收件人地址。
接下来的几行是成为消息正文一部分的标题,它们是“To: <recipient>”,“From: <sender>”和“Subject: <subject>”。
实际消息与标题由一个空行分开。
安装要求
一个工作的SMTP服务器
Zope 2.8.0或更高版本
一个UNIX操作系统来运行maildrop守护进程。它不适用于Windows。
安装
如果您没有将MaildropHost作为egg安装,您可以将Products.MaildropHost/Products/MaildropHost目录从Products.MaildropHost/Products/MaildropHost手动复制到Zope可以找到的位置,例如“Products”目录。
$ cp -r Products.MaildropHost/Products/MaildropHost <zope>/lib/python/Products/
不要忘记之后重新启动Zope。
您将在MaildropHost目录中找到一个名为“config”的文件。此文件包含所有站点特定设置,您必须编辑它以符合您的需求。重要提示:由于此文件也被一些shell脚本引用,因此您不能在等号(=)周围放置任何空白字符!
独立maildrop守护进程的启动脚本,用于处理由MaildropHost Zope产品生成的邮件项,位于<MaildropHost>/maildrop/bin-folder中。这些脚本的功能以及如何使用它们,在该文件夹中的单独的README文件中有描述。
升级说明
1.21至1.22:配置文件解析机制已更改,不再是Python导入。现在代码将寻找名为config的文件,而不是config.py。然而,文件内容没有改变,现有的MaildropHost配置文件内容仍然有效。
MaildropHost变更日志
2.3 (2009-10-09)
特性:添加了一种程序扩展配置文件路径列表的方法。(http://www.dataflake.org/tracker/issue_00649)
2.2 (2009-05-29)
错误:如果已设置配置文件路径,但后来删除了文件,Zope将无法启动,因为MaildropHost代码尝试加载文件但失败。现在它将回退到默认文件路径。(http://www.dataflake.org/tracker/issue_00642)
错误:在stop_maildrop和testing/start_maildrop中替换指向config.py而不是新config的文件路径(http://www.dataflake.org/tracker/issue_00641)
在maildrop.py中删除了一些多余的日志文件关闭调用(http://www.dataflake.org/tracker/issue_00636)
修复测试以检测Zope trunk
2.1 (2008-11-03)
为Zope 2.11进行兼容性工作
2.0 (2008-11-01)
将MaildropHost作为egg发布
根据Zope自身设定的标准清理Python模块序言。
清理Subversion关键字标记以使用Id标签
主要测试重构和简化
MaildropHost类现在被标记为实现IMailHost,就像标准的Zope 2 MailHost。
现在可以在ZMI的“编辑”选项卡中为每个MaildropHost实例选择配置文件。默认情况下,下拉菜单将显示MaildropHost目录中的文件“config”。网站管理员可以使用Zope实例配置文件zope.conf添加更多路径。请参阅README.txt了解详情。
清理了帮助系统内容,并在可能的情况下使用“MaildropHost”而不是“Maildrop Host”。
以前版本
参见HISTORY.txt
下载
项目详情
Products.MaildropHost-2.3.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1a4a2d84ca1a04bee4f90e5d31a68add80848d2a6e9e4249899564d47db8a7e1 |
|
MD5 | abcf4a8ced8d403cb5c97d4a3c8791eb |
|
BLAKE2b-256 | 025892e9fb95261aa1981ad722230e462106a282b790abcf22c99bbfec8ec8c6 |