
Le projet MNM construit un remplacement légitime pour les e-mails: un serveur (voir ci-dessous), un client et un protocole simple entre eux.
En savoir plus sur mnmnotmail.org.
11 décembre 2020 - V0.1 est publié pour Linux!
13 avril 2019 - Un aperçu privé est maintenant en direct! Contactez l'auteur si vous souhaitez l'essayer.
19 août 2018 - Après avoir testé avec MNM Client, a fait une poignée de correctifs. Licence modifiée en MPL.
25 septembre 2017 - Une demande client est en développement.
3 août 2017 - Une simulation de 1000 clients actifs simultanés fournit 1 million de messages totalisant 6,7 Go en 46 minutes. Il utilise ~ 200 Mo de RAM, <10 Mo de disque et temps de processeur minimal. Chaque client exécute un cycle en 19 étapes qui se connecte, puis publie pour deux destinataires (15x) ou pour un groupe de 100 (2x) tous les 1-30s, puis déconnectez-vous et inactif pendant 1 à 30.
Télécharger le binaire ou la construction à partir de la source
a) Obtenez mnm-tmtpd-linux-amd64-v0.1.0.tgz
b) Extraire avec tar xzf mnm-tmtpd-linux-amd64-v0.1.0.tgz
ou
a) go get github.com/networkimprov/mnm
Activer TCP + TLS avec certificat auto-signé
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 # edit pour réviser ntp.hosts et ajuster écouter.laddr avec "hôte: port"
Remarque: Sur un hôte Internet public, le port 443 verra un filet constant des demandes de sonde (souvent avec une intention malveillante) qui pollue le journal MNM. Choisissez un port supérieur à 1024 pour éviter cela.
Exécuter le serveur
a) ./mnm # Le port par défaut 443 peut nécessiter sudo ./mnm ; journaux à stdout & stderr
b) ctrl-c pour s'arrêter
ou
a) ./mnm >> logfile 2>&1 & # Exécutez en arrière-plan, journaux à la fin de Logfile
b) kill -s INT <background_pid> # Envoyer un signal SIGINT, déclencher une fermeture gracieuse
Distribuez l'adresse du serveur aux utilisateurs
+ Use =address:port pour un certificat auto-signé, par exemple =192.168.1.2:3456
+ Utiliser +address:port pour un certificat émis par CA, par exemple +mnm.example.com:443
Le fichier "mnm.config" contient un objet JSON avec ces champs.
L'objet ntp (Network Time Protocol) définit:
hosts - un tableau de serveurs NTP
retries - le nombre de fois pour réessayer chaque hôte
L'objet listen définit:
net & laddr - Arguments à net.ListenConfig.Listen(nil, net, laddr)
certPath & keyPath - Arguments à tls.LoadX509KeyPair(certPath, keyPath)
Le paramètre name définit le champ de réponse tmtprev du .name .
Le paramètre auth définit où l'authentification tierce est requise:
0 - Non pris en charge
1 - requis pour l'inscription
2 - requis pour l'inscription et la connexion (non encore implémentée)
Le tableau authby définit un ensemble d'objets décrivant les fournisseurs de connexion OpenID:
label - le nom du fournisseur / application OIDC
login - Un tableau donnant l'URL de base, suivi de nom = paramètres de demande de valeur, pour OIDC /authorize
token - un tableau donnant l'URL de base, suivi de nom = paramètres de demande de valeur, pour OIDC /token
std - Un tableau de Name = Paramètres de demande de valeur pour ajouter aux deux demandes login et token
keys - L'URL de la clé publique nécessaire pour valider les jetons fournis par l'authentification OIDC
iss & aud - Valeurs attendues pour les réclamations dans le champ .id_token des jetons OIDC
Si le premier objet authby est vide, l'authentification OpenID Connect est facultative. Ceci est utile pour les tests.
En supposant que ce référentiel a été obtenu via git clone :
a) cd mnm
b) git stash # si nécessaire
c) git checkout <your_branch>
d) Modifier Kversiondate dans main.go
e) ./pkg.sh # faire des téléchargements de version
Séquence de test continu avec des clients simulés
a) ./mnm 10 > /dev/null # peut être 2-1000
b) ctrl-c pour s'arrêter
Le fichier test.json donne une séquence de demandes et de résultats attendus, qui s'exécute avant le test continu. Il comprend des demandes non valides, qui impriment des messages à Stderr.
Copyright 2020 Liam Breck
Publié sur https://github.com/networkimprov/mnm
Ce formulaire de code source est soumis aux termes de la licence publique de Mozilla, v. 2.0. Si une copie du MPL n'a pas été distribuée avec ce fichier, vous pouvez en obtenir un sur http://mozilla.org/mp/2.0/