
O projeto MNM está construindo uma substituição legítima para o email: um servidor (veja abaixo), um cliente e um protocolo simples entre eles.
Saiba mais em mnmnotmail.org.
11 de dezembro de 2020 - V0.1 é lançado para Linux!
13 de abril de 2019 - Uma prévia privada está agora ao vivo! Entre em contato com o autor se quiser experimentá -lo.
19 de agosto de 2018 - Depois de testar com o cliente MNM, fez algumas correções. Licença alterada para MPL.
25 de setembro de 2017 - Um aplicativo cliente está em desenvolvimento.
3 de agosto de 2017 - Uma simulação de 1000 clientes ativos simultâneos entrega 1 milhão de mensagens, totalizando 6,7 GB em 46 minutos. Ele usa ~ 200 MB de RAM, <10 MB de disco e tempo mínimo da CPU. Cada cliente executa um ciclo de 19 etapas que faz login e depois publica dois destinatários (15x) ou para um grupo de 100 (2x) a cada 1-30s, depois logout e ocioso por 1-30s.
Baixar binário ou construir da fonte
a) Obtenha mnm-tmtpd-linux-amd64-v0.1.0.tgz
b) Extrair com tar xzf mnm-tmtpd-linux-amd64-v0.1.0.tgz
ou
a) go get github.com/networkimprov/mnm
Ativar TCP+TLS com certificado autoassinado
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 # editar para revisar o ntp.hosts e ajustar out.laddr com "Host: Port"
NOTA: Em um host público da Internet, a porta 443 verá uma gota constante de solicitações de sonda (geralmente com intenção maliciosa) que polui o log do MNM. Escolha uma porta acima de 1024 para evitar isso.
Executar servidor
a) ./mnm # porta padrão 443 pode exigir sudo ./mnm ; logs para stdout e stderr
b) Ctrl-C para parar
ou
a) ./mnm >> logfile 2>&1 & de logot
b) kill -s INT <background_pid> # Enviar sinal SIGINT, desencadeando o desligamento gracioso
Distribua o endereço do servidor para os usuários
+ Use =address:port para um certificado autoassinado, por exemplo =192.168.1.2:3456
+Use +address:port para um certificado emitido pela CA, por exemplo +mnm.example.com:443
O arquivo "mnm.config" contém um objeto JSON com esses campos.
O objeto ntp (Rede Time Protocol) define:
hosts - Uma matriz de servidores NTP
retries - O número de vezes para tentar novamente cada host
O objeto listen define:
net & laddr - Argumentos para net.ListenConfig.Listen(nil, net, laddr)
certPath & keyPath - Argumentos para tls.LoadX509KeyPair(certPath, keyPath)
O parâmetro name define o campo tmtprev Response .name do servidor.
O parâmetro auth define onde é necessária autenticação de terceiros:
0 - Não suportado
1 - necessário para o registro
2 - necessário para registro e login (ainda não implementado)
A matriz authby define um conjunto de objetos que descrevem os provedores OpenID Connect:
label - o nome do provedor/aplicativo OIDC
login - Uma matriz fornecendo o URL base, seguido pelo nome = parâmetros de solicitação de valor, para OIDC /authorize
token - Uma matriz que fornece o URL base, seguido pelo nome = parâmetros de solicitação de valor, para OIDC /token
std - Uma matriz de nome = parâmetros de solicitação de valor para anexar as solicitações login e token
keys - o URL para a chave pública necessária para validar tokens fornecidos pela autenticação OIDC
iss & aud - Valores esperados para reivindicações no campo .id_token de tokens OIDC
Se o primeiro objeto authby estiver vazio, a autenticação do OpenId Connect for opcional. Isso é útil para testes.
Supondo que este repositório tenha sido obtido via git clone :
A) cd mnm
b) git stash #, se necessário
c) git checkout <your_branch>
d) Editar kversionDate em main.go
e) ./pkg.sh # faça downloads de liberação
Sequência de testes contínuos com clientes simulados
a) ./mnm 10 > /dev/null # pode ser 2-1000
b) Ctrl-C para parar
O arquivo test.json fornece uma sequência de solicitações e resultados esperados, que são executados antes do teste contínuo. Inclui solicitações inválidas, que imprimem mensagens para o Stderr.
Copyright 2020 Liam Breck
Publicado em https://github.com/networkimprov/mnm
Este formulário de código -fonte está sujeito aos termos da licença pública de Mozilla, v. 2.0. Se uma cópia do MPL não foi distribuída com este arquivo, você poderá obter um em http://mozilla.org/mpl/2.0/