
Das MNM -Projekt erstellt einen legitimen Ersatz für E -Mails: einen Server (siehe unten), einen Client und ein einfaches Protokoll zwischen ihnen.
Erfahren Sie mehr unter mnmnotmail.org.
11. Dezember 2020 - V0.1 wird für Linux veröffentlicht!
13. April 2019 - Eine private Vorschau ist jetzt live! Wenden Sie sich an den Autor, wenn Sie es versuchen möchten.
19. August 2018 - Nach dem Testen mit dem MNM -Client haben er eine Handvoll Korrekturen vorgenommen. Die Lizenz in Mpl geändert.
25. September 2017 - Eine Kundenanwendung ist in der Entwicklung.
3. August 2017 - Eine Simulation von 1000 gleichzeitigen aktiven Kunden liefert 1 Million Nachrichten von insgesamt 6,7 GB in 46 Minuten. Es verwendet ~ 200 MB RAM, <10 MB und minimale CPU -Zeit. Jeder Client führt einen 19-Stufen-Zyklus aus, der sich anmeldet, dann für zwei Empfänger (15x) oder für eine Gruppe von 100 (2x) pro 1-30S und dann für 1-30S logout und im Leerlauf.
Laden Sie Binärdienste oder Build von der Quelle herunter
a) Mnm-Tmtpd-Linux-Amd64-V0.1.0.tgz erhalten
b) mit tar xzf mnm-tmtpd-linux-amd64-v0.1.0.tgz extrahieren
oder
a) go get github.com/networkimprov/mnm
Aktivieren Sie TCP+TLS mit selbstsigniertem Zertifikat
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 # bearbeiten, um NTP.Hosts zu überarbeiten und hören. Laddr mit "Host: Port" anpassen
Hinweis: Auf einem öffentlichen Internet -Host wird Port 443 ein stetiges Rinnsal von Sondenanfragen (oft mit böswilliger Absicht), die das MNM -Protokoll verschmutzt. Wählen Sie einen Port über 1024, um dies zu vermeiden.
Server ausführen
a) ./mnm # Standard -Port 443 erfordert möglicherweise sudo ./mnm ; Protokolle bei Stdout & Stderr
b) Strg-C , um zu stoppen
oder
a) ./mnm >> logfile 2>&1 & # im Hintergrund ausführen, protokolliert bis zum Ende der Logfile
b) kill -s INT <background_pid> # Sigint -Signal senden und anmutiges Abschalten auslösen
Verteilen Sie die Serveradresse an Benutzer
+ Verwendung =address:port für ein selbstsigniertes Zertifikat, zum Beispiel =192.168.1.2:3456
+Verwendung +address:port für ein CA-ausgestelltes Zertifikat, zum Beispiel +mnm.example.com:443
Die Datei "Mnm.config" enthält ein JSON -Objekt mit diesen Feldern.
Das ntp -Objekt (Network Time Protocol) definiert:
hosts - eine Reihe von NTP -Servern
retries - die Häufigkeit, um jeden Host wiederzuholen
Das listen definiert:
net & laddr - Argumente an net.ListenConfig.Listen(nil, net, laddr)
certPath & keyPath - Argumente tls.LoadX509KeyPair(certPath, keyPath)
Der name Parameter definiert das tmtprev -Antwort des Servers .name .
Der auth -Parameter definiert, wo die Authentifizierung von Drittanbietern erforderlich ist:
0 - nicht unterstützt
1 - Für die Registrierung erforderlich
2 - für die Registrierung und Anmeldung erforderlich (noch nicht implementiert)
Das authby -Array definiert eine Reihe von Objekten, die OpenID Connect -Anbieter beschreiben:
label - Der Name des OIDC -Anbieters/der Anwendung
login - Ein Array, das die Basis -URL angibt, gefolgt von Namen = Wertanforderungsparametern, für OIDC /authorize
token - Ein Array, das die Basis -URL anschließt, gefolgt von Namensanforderungsparametern für OIDC /token
std - Ein Array von Name = Wertanforderungsparametern, die sowohl an login als auch an token -Anforderungen angehängt werden sollen
keys - Die URL für den öffentlichen Schlüssel, der zur Validierung von Token erforderlich ist, die von der OIDC -Authentifizierung bereitgestellt werden
iss & aud - Erwartete Werte für Ansprüche im Feld .id_token von OIDC -Token
Wenn das erste authby -Objekt leer ist, ist die OpenID -Connect -Authentifizierung optional. Dies ist nützlich für das Testen.
Unter der Annahme, dass dieses Repository über git clone erhalten wurde:
A) cd mnm
b) git stash # falls erforderlich
c) git checkout <your_branch>
d) KversionDate in Main.go bearbeiten
e) ./pkg.sh # Machen Sie Release -Downloads
Kontinuierliche Testsequenz mit simulierten Clients
a) ./mnm 10 > /dev/null # kann 2-1000 sein
b) Strg-C, um zu stoppen
Die Datei test.json gibt eine Abfolge von Anforderungen und erwarteten Ergebnissen an, die vor dem kontinuierlichen Test ausgeführt werden. Es enthält ungültige Anforderungen, die Nachrichten an STDERR drucken.
Copyright 2020 Liam Breck
Veröffentlicht unter https://github.com/networkimprov/mnm
Dieses Quellcodeformular unterliegt den Bestimmungen der Mozilla Public Lizenz, v. 2.0. Wenn eine Kopie der MPL nicht mit dieser Datei verteilt wurde, können Sie eine unter http://mozilla.org/mpl/2.0/ erhalten