
Проект MNM создает законную замену для электронной почты: сервер (см. Ниже), клиент и простой протокол между ними.
Узнайте больше на mnmnotmail.org.
11 декабря 2020 года - V0.1 выпускается для Linux!
13 апреля 2019 - Частный предварительный просмотр сейчас живет! Свяжитесь с автором, если хотите попробовать.
19 августа 2018 года - после тестирования с клиентом MNM, сделал несколько исправлений. Изменена лицензия на MPL.
25 сентября 2017 г. - Клиентское заявление находится в разработке.
3 августа 2017 года - моделирование 1000 одновременных активных клиентов доставляет 1 миллион сообщений на общую сумму 6,7 ГБ за 46 минут. Он использует ~ 200 МБ ОЗУ, <10 МБ диск и минимальное время ЦП. Каждый клиент запускает 19-шаговый цикл, который входит в систему, а затем публикует для двух получателей (15x) или для группы из 100 (2 раза) каждые 1-30, а затем выйти из системы и простоя в течение 1-30.
Скачать двоичный файл или построить из источника
A) Получить MNM-TMTPD-Linux-AMD64-V0.1.0.tgz
б) извлечение с помощью tar xzf mnm-tmtpd-linux-amd64-v0.1.0.tgz
или
а) go get github.com/networkimprov/mnm
Включить TCP+TLS с саморегистрированным сертификатом
а) 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 и отрегулировать прослушивание.
Примечание. На общедоступном интернет -хозяине в порт 443 будет постоянная струя запросов зондов (часто с злонамеренным намерением), которые загрязняют журнал MNM. Выберите порт выше 1024, чтобы избежать этого.
Запустить сервер
а) ./mnm # порт 443 по умолчанию может потребовать sudo ./mnm ; Журналы в Stdout & Stderr
б) Ctrl-C , чтобы остановиться
или
A) ./mnm >> logfile 2>&1 & # Запуск в фоновом режиме, журналы до конца logfile
б) kill -s INT <background_pid> # Отправить сигнал Sigint, запустить изящное отключение
Распределить адрес сервера среди пользователей
+ Использование =address:port для самоподнебленного сертификата, например =192.168.1.2:3456
+Использовать +address:port для полученного CA, выпущенного CA, например +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 name определяет поле tmtprev сервера.
Параметр auth определяет, где требуется сторонняя аутентификация:
0 - не поддерживается
1 - Требуется для регистрации
2 - Требуется для регистрации и входа в систему (еще не реализовано)
Массив authby определяет набор объектов, описывающих поставщиков OpenID Connect:
label - Имя поставщика/приложения OIDC
login - массив, дающий базовый URL -адрес, за которым следуют параметры запроса name = для OIDC /authorize
token - массив, дающий базовый URL, с последующим параметром запроса name = значение для OIDC /token
std - массив имени = параметры запроса значения для добавления как к запросам login и token
keys - URL для открытого ключа, необходимого для проверки токенов, предоставленных AIDC Authentication
iss & aud - Ожидаемые значения для претензий в поле .id_token
Если первый объект authby пуст, аутентификация OpenID Connect является необязательной. Это полезно для тестирования.
Предполагая, что этот репозиторий был получен с помощью git clone :
а) cd mnm
б) git stash #, если это необходимо
в) git checkout <your_branch>
г) редактировать kversionDate в Main.go
e) ./pkg.sh # сделать загрузки релиза
Непрерывная тестовая последовательность с моделируемыми клиентами
а) ./mnm 10 > /dev/null # может быть 2-1000
б) Ctrl-C, чтобы остановиться
File test.json дает последовательность запросов и ожидаемых результатов, которые запускаются до непрерывного теста. Он включает в себя неверные запросы, которые печатают сообщения в Stderr.
Copyright 2020 Лиам Брек
Опубликовано по адресу https://github.com/networkimprov/mnm
Эта форма исходного кода подлежит условиям общественной лицензии Mozilla, т. 2.0. Если копия MPL не была распространена с этим файлом, вы можете получить ее по адресу http://mozilla.org/mpl/2.0/