
El proyecto MNM está creando un reemplazo legítimo para el correo electrónico: un servidor (ver más abajo), un cliente y un protocolo simple entre ellos.
Obtenga más información en mnmnotmail.org.
11 de diciembre de 2020 - ¡V0.1 se lanza para Linux!
13 de abril de 2019 : ¡ahora está en vivo una vista previa privada! Póngase en contacto con el autor si desea probarlo.
19 de agosto de 2018 - Después de probar con MNM Client, hizo un puñado de soluciones. Se cambió de licencia a MPL.
25 de septiembre de 2017 : una aplicación de cliente está en desarrollo.
3 de agosto de 2017 - Una simulación de 1000 clientes activos concurrentes ofrece 1 millón de mensajes por un total de 6.7 GB en 46 minutos. Utiliza ~ 200 MB de RAM, disco de <10 MB y tiempo mínimo de CPU. Cada cliente ejecuta un ciclo de 19 pasos que inicia sesión, luego publique para dos destinatarios (15x) o para un grupo de 100 (2x) cada 1-30, luego cierreaba e inactivo durante 1-30.
Descargar binario o construir desde la fuente
a) Obtenga mnm-tmtpd-linux-amd64-v0.1.0.tgz
b) Extraer con tar xzf mnm-tmtpd-linux-amd64-v0.1.0.tgz
o
a) go get github.com/networkimprov/mnm
Habilitar TCP+TLS con certificado autofirmado
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 ntp.hosts y ajustar escear.laddr con "host: puerto"
Nota: En un anfitrión público de Internet, el puerto 443 verá un goteo constante de solicitudes de sonda (a menudo con intención maliciosa) que contamina el registro MNM. Elija un puerto superior a 1024 para evitar esto.
Ejecutar servidor
a) ./mnm # El puerto predeterminado 443 puede requerir sudo ./mnm ; registros a stdout y stderr
b) Ctrl-C para detener
o
a) ./mnm >> logfile 2>&1 & # ejecutar en segundo plano, registra el final del archivo de registro
b) kill -s INT <background_pid> # Enviar señal Sigint, desencadenando el cierre elegante
Distribuir la dirección del servidor a los usuarios
+ Use =address:port para un certificado autofirmado, por ejemplo =192.168.1.2:3456
+Uso +address:port para un certificado emitido por CA, por ejemplo +mnm.example.com:443
El archivo "mnm.config" contiene un objeto JSON con estos campos.
El objeto ntp (Protocolo de tiempo de red) define:
hosts : una matriz de servidores NTP
retries : el número de veces para volver a intentar cada anfitrión
El objeto listen define:
net & laddr - Argumentos a net.ListenConfig.Listen(nil, net, laddr)
certPath & keyPath - Argumentos a tls.LoadX509KeyPair(certPath, keyPath)
El parámetro name define la respuesta tmtprev del servidor .name
El parámetro auth define dónde se requiere autenticación de terceros:
0 - No compatible
1 - Requerido para el registro
2 - Requerido para el registro y el inicio de sesión (aún no se implementó)
La matriz authby define un conjunto de objetos que describen proveedores de OpenID Connect:
label : el nombre del proveedor/aplicación OIDC
login : una matriz que proporciona la URL base, seguida de los parámetros de solicitud de nombre = Valor, para OIDC /authorize
token : una matriz que da la URL base, seguido de los parámetros de solicitud de nombre = Valor, para OIDC /token
std : una matriz de parámetros de solicitud de nombre = valor para agregar a las solicitudes de login y token
keys : la URL para la clave pública necesaria para validar los tokens proporcionados por la autenticación OIDC
iss & aud - Valores esperados para reclamos en el campo .id_token de tokens OIDC
Si el primer objeto authby está vacío, la autenticación OpenID Connect es opcional. Esto es útil para las pruebas.
Suponiendo que este repositorio se haya obtenido a través git clone :
a) cd mnm
b) git stash # si es necesario
c) git checkout <your_branch>
d) Editar kversiondate en main.go
e) ./pkg.sh # hacer descargas de lanzamiento
Secuencia de prueba continua con clientes simulados
a) ./mnm 10 > /dev/null # puede ser 2-1000
b) Ctrl-C para detener
El archivo test.json proporciona una secuencia de solicitudes y resultados esperados, que se ejecuta antes de la prueba continua. Incluye solicitudes no válidas, que imprimen mensajes a Stderr.
Copyright 2020 Liam Breck
Publicado en https://github.com/networkimprov/mnm
Este formulario de código fuente está sujeto a los términos de la licencia pública de Mozilla, v. 2.0. Si no se distribuyó una copia del MPL con este archivo, puede obtener una en http://mozilla.org/mpl/2.0/