
โครงการ MNM กำลังสร้างการเปลี่ยนอีเมลที่ถูกต้องตามกฎหมาย: เซิร์ฟเวอร์ (ดูด้านล่าง) ไคลเอนต์และโปรโตคอลง่าย ๆ ระหว่างพวกเขา
เรียนรู้เพิ่มเติมที่ mnmnotmail.org
11 ธันวาคม 2020 - v0.1 เปิดตัวสำหรับ Linux!
13 เมษายน 2019 - ตัวอย่างส่วนตัวตอนนี้มีชีวิตอยู่! ติดต่อผู้เขียนหากคุณต้องการลอง
19 สิงหาคม 2561 - หลังจากทดสอบกับไคลเอนต์ MNM ทำการแก้ไขจำนวนหนึ่ง เปลี่ยนใบอนุญาตเป็น MPL
25 กันยายน 2560 - แอปพลิเคชันลูกค้าอยู่ในระหว่างการพัฒนา
3 สิงหาคม 2560 - การจำลองลูกค้าที่ใช้งานร่วมกัน 1,000 รายส่งข้อความ 1 ล้านข้อความรวม 6.7GB ใน 46 นาที มันใช้ ~ 200MB RAM, <10MB ดิสก์และเวลา CPU น้อยที่สุด ลูกค้าแต่ละรายรันรอบ 19 ขั้นตอนที่เข้าสู่ระบบจากนั้นโพสต์สำหรับผู้รับสองคน (15x) หรือสำหรับกลุ่ม 100 (2x) ทุก 1-30 จากนั้นออกจากระบบและไม่ได้ใช้งานสำหรับ 1-30s
ดาวน์โหลดไบนารีหรือสร้างจากแหล่งที่มา
A) รับ mnm-tmtpd-linux-amd64-v0.1.0.tgz
B) แยกด้วย tar xzf mnm-tmtpd-linux-amd64-v0.1.0.tgz
หรือ
A) go get github.com/networkimprov/mnm
เปิดใช้งาน TCP+TLS ด้วยใบรับรองที่ลงนามด้วยตนเอง
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 # แก้ไขเพื่อแก้ไข NTP.Hosts และปรับฟัง LISHY.laddr ด้วย "โฮสต์: พอร์ต"
หมายเหตุ: ในโฮสต์อินเทอร์เน็ตสาธารณะพอร์ต 443 จะเห็นการร้องขอการสอบสวนอย่างต่อเนื่อง (มักจะมีเจตนาร้าย) ซึ่งทำให้เกิดการบันทึก MNM เลือกพอร์ตที่สูงกว่า 1024 เพื่อหลีกเลี่ยงสิ่งนี้
เรียกใช้เซิร์ฟเวอร์
a) ./mnm # พอร์ตเริ่มต้น 443 อาจต้องใช้ sudo ./mnm ; บันทึกเป็น stdout & stderr
b) Ctrl-c หยุด
หรือ
a) ./mnm >> logfile 2>&1 & # รันในพื้นหลังบันทึกไปยังจุดสิ้นสุดของ logfile
b) kill -s INT <background_pid> # ส่งสัญญาณ sigint ทำให้เกิดการปิดตัวลงอย่างสง่างาม
แจกจ่ายที่อยู่เซิร์ฟเวอร์ให้กับผู้ใช้
+ ใช้ =address:port สำหรับใบรับรองที่ลงนามด้วยตนเองตัวอย่างเช่น =192.168.1.2:3456
+ใช้ +address:port สำหรับใบรับรอง CA-isoed ตัวอย่างเช่น +mnm.example.com:443
ไฟล์ "MNM.Config" มีวัตถุ JSON พร้อมฟิลด์เหล่านี้
วัตถุ ntp (Network Time Protocol) กำหนด:
hosts - อาร์เรย์ของเซิร์ฟเวอร์ NTP
retries - จำนวนครั้งที่จะลองใหม่โฮสต์ใหม่
วัตถุ listen กำหนด:
net & laddr - อาร์กิวเมนต์ to 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 พื้นฐานตามด้วยพารามิเตอร์ชื่อ = ค่าขอค่าสำหรับ OIDC /token
std - อาร์เรย์ของ NAME = พารามิเตอร์การร้องขอค่าเพื่อผนวกกับคำขอ login และ token ทั้งสอง
keys - URL สำหรับคีย์สาธารณะที่จำเป็นในการตรวจสอบโทเค็นที่ได้รับจากการตรวจสอบความถูกต้องของ OIDC
iss & aud - ค่าที่คาดหวังสำหรับการเรียกร้องในฟิลด์ .id_token ของโทเค็น OIDC
หากวัตถุ authby แรกว่างเปล่าการตรวจสอบความถูกต้องของ OpenId Connect เป็นทางเลือก สิ่งนี้มีประโยชน์สำหรับการทดสอบ
สมมติว่าพื้นที่เก็บข้อมูลนี้ได้รับผ่าน git clone :
A) cd mnm
b) git stash # ถ้าจำเป็น
c) git checkout <your_branch>
d) แก้ไข kversiondate ใน main.go
e) ./pkg.sh # make release ดาวน์โหลด
ลำดับการทดสอบอย่างต่อเนื่องกับลูกค้าจำลอง
a) ./mnm 10 > /dev/null # อาจเป็น 2-1000
b) Ctrl-c หยุด
File test.json ให้ลำดับของคำขอและผลลัพธ์ที่คาดหวังซึ่งทำงานก่อนการทดสอบอย่างต่อเนื่อง มันมีคำขอไม่ถูกต้องซึ่งพิมพ์ข้อความไปยัง Stderr
ลิขสิทธิ์ 2020 Liam Breck
เผยแพร่ที่ https://github.com/networkimprov/mnm
แบบฟอร์มซอร์สโค้ดนี้อยู่ภายใต้ข้อกำหนดของใบอนุญาตสาธารณะ Mozilla, v. 2.0 หากสำเนาของ MPL ไม่ได้แจกจ่ายกับไฟล์นี้คุณสามารถรับไฟล์ได้ที่ http://mozilla.org/mpl/2.0/