
MNM项目正在建立一个合法的电子邮件替代品:服务器(见下文),客户端以及它们之间的简单协议。
在mnmnotmail.org上了解更多信息。
2020年12月11日-V0.1为Linux发布!
2019年4月13日- 私人预览现已直播!如果您想尝试,请与作者联系。
2018年8月19日- 与MNM客户进行了测试后,进行了一些修复程序。将许可证更改为MPL。
2017年9月25日- 开发客户端应用程序。
2017年8月3日- 对1000个并发客户的模拟,在46分钟内提供了100万条消息,总计6.7GB。它使用〜200MB RAM,<10MB磁盘和最小CPU时间。每个客户端运行一个19步循环,可登录,然后每1-30秒钟发布两个收件人(15倍)或100(2倍)的组,然后注销和空闲1-30。
从源头下载二进制或构建
a)获取MNM-TMTPD-Linux-AMD64-V0.1.0.0.TGZ
b)提取用tar xzf mnm-tmtpd-linux-amd64-v0.1.0.tgz提取
或者
a) go get github.com/networkimprov/mnm
启用具有自签名证书的TCP+TLS
a) cd mnm
b) openssl ecparam -genkey -name secp384r1 -out server.key
c) openssl req -new -x509 -sha256 -key server.key -out server.crt -days 3650
d) cp mnm.conf mnm.config #编辑以修改ntp.hosts,并使用“主机:端口”调整list.laddr。
注意:在公共互联网主机上,港口443将看到稳定的探针请求(通常具有恶意意图),从而污染MNM日志。选择一个上方的端口1024以避免这种情况。
运行服务器
a) ./mnm #默认端口443可能需要sudo ./mnm ;登录到stdout&stderr
b) Ctrl-C停止
或者
a) ./mnm >> logfile 2>&1 & #在后台运行,日志到logfile的结尾
b) kill -s INT <background_pid> #发送sigint信号,触发优雅的关闭
将服务器地址分配给用户
+ use =address:port ,例如=192.168.1.2:3456
+使用+address:port ,例如+mnm.example.com:443
文件“ mnm.config”包含具有这些字段的JSON对象。
ntp (网络时间协议)对象定义:
hosts - NTP服务器的数组retries - 重试每个主机的次数
listen对象定义:
net & laddr向net.ListenConfig.Listen(nil, net, laddr)争论certPath & keyPath tls.LoadX509KeyPair(certPath, keyPath)
name参数定义服务器的tmtprev响应.name字段。
auth参数定义了需要第三方身份验证的位置:
0不支持1注册要求2注册和登录所需(尚未实施)
authby数组定义了一组描述OpenID连接提供程序的对象:
label - OIDC提供商/应用程序的名称login - 给出基本URL的数组,然后是name = value请求参数,用于OIDC /authorize
token - 给出基本URL的阵列,然后是name = value请求参数,oidc /token
std名称数=值请求参数,以附加到login和token请求keys - 验证由OIDC身份验证提供的令牌所需的公共密钥的URL
iss & aud OIDC代币的.id_token字段中索赔的预期值
如果第一个authby对象为空,则OpenID连接身份验证是可选的。这对于测试很有用。
假设该存储库是通过git clone获得的:
a) cd mnm
b) git stash #如果需要
c) git checkout <your_branch>
d)在main.go中编辑kversiondate
e) ./pkg.sh #进行发布下载
与模拟客户端连续测试序列
a) ./mnm 10 > /dev/null #可能是2-1000
b)Ctrl-C停止
文件test.json给出了一系列请求和预期结果,该结果在连续测试之前运行。它包括无效的请求,这些请求将其打印到STDERR。
版权2020利亚姆·布雷克
在https://github.com/networkimprov/mnm上发布
此源代码表格遵守Mozilla公共许可证的条款,第2.0节。如果该文件未分发MPL的副本,则可以在http://mozilla.org/mpl/2.0/上获取一个副本。