支持 zaqar_sendmail

https://blueprints.launchpad.net/zaqar/+spec/zaqar-email-delivery

问题描述

目前 Zaqar 中的邮件订阅依赖于第三方工具,例如“sendmail”。这意味着部署者需要在 Zaqar 之外安装它。如果忘记安装,Zaqar 将引发内部错误。这项工作使 Zaqar 能够使用 Python 的 smtp 库自行支持邮件订阅。

用例

此修改允许用户在没有第三方工具的情况下发送邮件订阅。

提议的变更

将添加一个新的配置选项 smtp_mode,它有两个可选值:["third_part", "self_local"]。 third_part 表示 Zaqar 将使用 smtp_command 配置选项提供的工具来发送邮件订阅。 self_local 表示 Zaqar 将使用 smtp Python 库。

还将添加一个邮件模板文件。在使用之前,应首先配置文件中的一些参数。这些参数包括 SMTP 服务帐户/密码、SMTP 服务地址等。这些值也应来自配置选项。

模板文件中的邮件正文也应进行配置。目前,它只能由 Zaqar 之外的运营商管理。将来,我们可以使用 Jinja 模板方式让 Zaqar 可以对其进行配置。

一旦使用 self_local,Zaqar 将首先填充模板文件,然后使用 stmp 库发送邮件订阅。

备选方案

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

其他部署者影响

添加了一个新的配置选项,名为 smtp_mode。为了保持向后兼容性,默认行为是继续使用第三方工具发送邮件订阅。如果您不再想安装第三方邮件工具,请将其值更改为 self_local

开发者影响

实现

负责人

changyufei<changyufei@unitedstack.com>

工作项

  1. 添加一个新的配置选项 smtp_mode

  2. 添加邮件模板

  3. 添加使用 smtp Python 库的逻辑

  4. 应该添加测试代码。

  5. 文档。

里程碑

R-3

依赖项

测试

对于功能测试,由于 OpenStack CI/CD 环境没有电子邮件服务,因此在上游环境中没有好的方法来测试它。或者我们可以请求社区帮助 Zaqar 团队在 @openstack.org 电子邮件系统中提供一个测试帐户。或者任何其他第三方公司可以为我们提供一个。否则,我们只能在本地测试它以确保其正常工作。

文档影响

将添加一种新的发送电子邮件的方式。应该记录下来。

参考资料