支持中心的即时邮件列表管理器
amane的Python项目详细描述
简介
Amane是一个即时邮件列表管理员。它的基本思想来自 quickml(https://github.com/masui/QuickML)但不一样。 quickml是一个常用的易于使用的邮件列表管理器,但是amane有 已开发为通过电子邮件管理请求。所以阿曼尼是 像雷德明这样的票务管理系统。
quickml和amane之间的差异
- 邮件目的地以创建新的邮件列表
- quickml:第一个邮件帐户将用于进一步的帖子。
- 阿曼:它有一个特定的邮件帐户来创建新的。 收到邮件后,将创建并使用新的邮件帐户。
- 在Amane上,您可以定义员工来注册新邮件 自动列出。不能通过成员移除来移除它们 邮件。
- Amane支持多租户。每个租户都有一个邮件帐户 创建邮件列表、主题前缀、工作人员、各种邮件 模板。
- 在amane上,每个帖子都有一个系统消息作为附件。它 可以包含基本邮件列表用法和成员列表。
雷德明和阿曼的区别
- redmine是基于web的,而amane是基于邮件的。
- redmine用户可以自定义票证状态,但amane用户不能。
- redmine用户可以定义票据的重要性,但是amane用户 不能。
- redmine用户可以定义票据工作流,但amane用户不能。
如何使用amane
- 创建新票据
- 将邮件发送到特定的邮件地址(例如ask@example.com*1) 创建一个新的。Amane将创建一个新的邮件列表 邮件地址(例如ml-000001@example.com)并转发首字母 邮寄给会员,包括地址:收件人:,抄送:和发件人:除*1以外。
- 发表新文章
- 将邮件发送到邮件列表地址(例如ml-000001@example.com)。
- 注册新成员
- 将新地址作为cc:的邮件发送到邮件列表地址。
- 注销成员
- 发送一封主题为空的邮件,并将地址作为cc: 发送到邮件列表地址。
- 关闭票据
- 发送一封邮件,邮件列表地址应为“主题:关闭”。
如何安装amane
运行以下命令:
# yum install mongodb-server # pip install amane
如何配置amane
阿曼尼有两份确认文件。
amane确认文件(/etc/amane/amane.conf)
下面是一个yaml文件:
db_name: amane db_url: mongodb://localhost/ relay_host: localhost relay_port: 25 listen_address: 192.168.0.1 listen_port: 25 log_file: /var/log/amane.log domain: example.com
- 数据库URL、数据库名称…MongoDB的uri和数据库名称
- 中继主机,中继端口…的IP地址和端口号 用于发送邮件的外部SMTP服务器(中继主机)
- 监听地址,监听端口…IP地址和端口号 Amane_smptd会听的
- 日志文件…amane命令使用的日志文件的路径
- 域…电子邮件地址的域名amane_smtpd将 把手
租户确认文件
下面是一个yaml文件:
admins: - staff1@staff.example.com - staff2@staff.example.com charset: iso-2022-jp ml_name_format: ml-%06d new_ml_account: ask days_to_close: 7 days_to_orphan: 7 readme_msg: | Please send posts to {{ ml_address }}. To register new members: send a post with their mail addresses as Cc: To unregister members: send a post with their mail addresses as Cc: and empty Subject: To close a mailing list: send a post with "Subject: close" Current members (except staffs): {{ members | join('\r\n') }} welcome_msg: | {{ mailfrom }} has created a new ticket. Please send further posts to {{ ml_address }}. To register new members: send a post with their mail addresses as Cc: To unregister members: send a post with their mail addresses as Cc: and empty Subject: To close a mailing list: send a post with "Subject: close" Current members (except staffs): {{ members | join('\r\n') }} add_msg: | {{ mailfrom }} has registered members below: {{ cc | join('\r\n') }} To register new members: send a post with their mail addresses as Cc: To unregister members: send a post with their mail addresses as Cc: and empty Subject: To close a mailing list: send a post with "Subject: close" Current members (except staffs): {{ members | join('\r\n') }} remove_msg: | {{ mailfrom }} has unregistered members below: {{ cc | join('\r\n') }} Current members and staffs only can register them again. To register new members: send a post with their mail addresses as Cc: To unregister members: send a post with their mail addresses as Cc: and empty Subject: To close a mailing list: send a post with "Subject: close" Current members (except staffs): {{ members | join('\r\n') }} goodbye_msg: | {{ mailfrom }} has closed this ticket. Please send a post {{ new_ml_address }} for a new ticket. Current members (except staffs): {{ members | join('\r\n') }} reopen_msg: | {{ mailfrom }} has reopened this ticket. To register new members: send a post with their mail addresses as Cc: To unregister members: send a post with their mail addresses as Cc: and empty Subject: To close a mailing list: send a post with "Subject: close" Current members (except staffs): {{ members | join('\r\n') }} report_subject: Daily status report report_msg: | Today's status: New Tickets =========== {% for m in new -%} - ml_name: {{ m.ml_name }} subject: {{ m.subject }} created: {{ m.created }} updated: {{ m.updated }} by: {{ m.by }} {% endfor %} Open Tickets ============ {% for m in open -%} - ml_name: {{ m.ml_name }} subject: {{ m.subject }} created: {{ m.created }} updated: {{ m.updated }} by: {{ m.by }} {% endfor %} Orphaned Tickets ================ {% for m in orphaned -%} - ml_name: {{ m.ml_name }} subject: {{ m.subject }} created: {{ m.created }} updated: {{ m.updated }} by: {{ m.by }} {% endfor %} Recently Closed Tickets ======================= {% for m in closed -%} - ml_name: {{ m.ml_name }} subject: {{ m.subject }} created: {{ m.created }} updated: {{ m.updated }} by: {{ m.by }} {% endfor %} orphaned_subject: This ticket will be closed soon orphaned_msg: | This message was sent automatically. This ticket will be closed 7 days later if no post is sent. closed_subject: This ticket was closed closed_msg: | This message was sent automatically. This ticket was closed because it was inactive in the past week. Please send a post to {{ new_ml_address }} for a new ticket.
- 管理员…员工邮件地址列表
- 字符集…消息正文的默认字符集。例如: 美国ascii
- ml_name_format…新建邮件列表帐户的格式。为了 例如,“ml-%06d”将导致如下邮件地址 “ml-000001@<;域>;”。
- 新的电子邮件帐户…用于创建新邮件列表的邮件帐户
- days_to_orphan…从系统将 将未结票的状态更改为“孤立”
- 天关闭…系统将关闭“孤儿”票的天
- 欢迎消息…新的附加文本文件的模板 门票
- 自述信息…通常附加文本文件的模板 帖子
- 删除所附文章文本文件的模板 删除成员
- 重新打开消息…重新打开的附加文本文件的模板 门票
- 再见消息…模板Of所附的帖子文本文件 关闭票
- 报表主题、报表消息…每日的主题和消息模板 员工状态报告
- 孤立的主题,孤立的消息…的主题和消息模板 关于自动生成孤立票的通知邮件
- 关闭的主题,关闭的消息…主题和消息模板 关于自动关闭门票的通知邮件
您可以向数据库注册新租户,如下所示:
# amanectl tenant create <tenant_name> --yamlfile <tenant_configuration_file>
修改租户配置
使用修改后的租户配置文件:
# amanectl tenant update <tenant_name> --yamlfile <tenant_configuration_file>
使用命令行选项:
# amanectl tenant update <tenant_name> <option> <new-value> [<option> <new-value> ...]
如何启动服务
运行amane_smtpd,如下所示:
# amane_smtpd &