6个稳定版本
1.1.1 | 2020年8月10日 |
---|---|
1.1.0 | 2020年7月11日 |
1.0.3 | 2020年7月7日 |
1.0.1 | 2020年7月6日 |
#159 在 电子邮件
22KB
458 行
mulm,一个小型邮件列表管理器
非商业用途免费。商业用途请 购买许可证
快速入门
使用以下命令安装此包:cargo install mulm --root /usr/local
。然后
mkdir/path/to/list/store.list
创建 /path/to/list/store.list/config.toml
,内容如下
[config]
name = "A List"
slug = "listname"
在您的MTA的别名文件中,添加 listname: |/usr/local/bin/mulm /path/to/list/store.list
发送邮件到 listname@yourdomain
以发表帖子;使用主题行 "subscribe" 来订阅,使用 "unsubscribe" 来从列表中移除自己。
功能
- 带内命令:我们尊重发送到列表地址的取消订阅和订阅。
- 如果中断,可以恢复发送
- 将所有消息存档到一个mbox组中
当前状态
没有隐私,它运行得很好,但非常简单。最好用于彼此信任的组。
配置
config.name
— 列表的面向用户的标题。字符串,必需。config.slug
— 列表的标识符,最好是地址的本地部分。字符串,必需。config.open_posting
— 发帖者是否必须是列表成员。布尔值,可选,默认为false。config.tag_subject
- 是否将[list slug]
添加到消息的主题中。布尔值,可选。默认为false。
内部设计
该软件的设计适用于小型系统。每个列表都存储在Maildir中,这使得在出现故障时消息存档非常可靠。
将控制文件和队列目录添加到maildir中。
config.toml
是列表配置文件。
正在中继到MTA的消息队列是可恢复的(尽管这使用了文件锁定,与普通的maildir不同,因此老式的NFS在这里是个隐患——如果文件锁定不起作用,可能会发生重复投递)。
队列集成在maildir的queue
目录中。每个队列条目有三个文件:一个位置文件({id}.pos
),跟踪已发送到目标列表的位置以及此消息的停止位置;一个目标列表({id}.dest
),每行一个收件人,以及消息({id}.msg
)。当发送条目时,这三个文件都会被删除,并且消息在发送时会被锁定。目标列表可以是当前订阅列表的硬链接,而消息则是maildir中投递的消息文件的硬链接。
收件人列表在订阅时被追加,在退订时被重写为新的文件。
许可协议
此代码受零许可繁荣协议许可。它不是免费软件!但是,它可以免费用于非商业用途,并且欢迎贡献。请参见下文。
未来工作
- 更完整的单元测试
- 添加列表管理头
- 解析HTML部分并将它们简化为简单标记
- 审查原始头以保护隐私
- 完全隐藏电子邮件地址
- 欢迎信息
- 用于退订检测的VERP
- 尽管它仍然需要在
/etc/mail/aliases
中的单行上工作,因此也许现在是时候转向+
地址而不是更复杂的东西了。
- 尽管它仍然需要在
- 审查队列
- 连接
- 发布
- 一个Web界面
- 实际上应该是一个独立的项目。
- 用于订阅和退订人员的命令行
如果您想从事这些工作中的任何一项,请随时。和我谈谈,我们可以讨论付款。您不需要有丰富的经验——这是我的第一个Rust项目,也是学习项目。如果您想尝试,上面的一些事情相当简单。
依赖项
~5.5MB
~159K SLoC