Files
mailgoserver/graphify-out/cache/semantic/pd5fd89c46bb5/c0740eae58ec2c25c28838011d464fc75658f4193799d0f1284fd5aa38f6d4fa.json
T

1 line
7.6 KiB
JSON

{"nodes": [{"id": "readme_mailgoserver_project", "label": "mailgoserver (Go Binary)", "file_type": "document", "source_file": "README.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null, "rationale": "Single static Go binary that runs the SMTP listeners and web UI in one process (no GIL), removing the need to split into separate systemd services the way the Python version did."}, {"id": "readme_systemd_unit", "label": "systemd Unit (mailgoserver.service)", "file_type": "document", "source_file": "README.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "readme_nginx_reverse_proxy_setup", "label": "nginx Reverse Proxy Setup", "file_type": "document", "source_file": "README.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null, "rationale": "mailgoserver listens on the same host:port (127.0.0.1:5000) as the old Python service by default, so the existing nginx config works unmodified."}, {"id": "readme_admin_dashboard_login", "label": "Admin Dashboard Login", "file_type": "document", "source_file": "README.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null, "rationale": "First run seeds one admin/Password123! account; logging in with it forces an immediate username+password change before anything else is reachable, so default credentials can never be left in place."}, {"id": "readme_totp_mfa", "label": "Authenticator App (TOTP) MFA", "file_type": "document", "source_file": "README.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "readme_webauthn_passkeys", "label": "Passkeys / Security Keys (WebAuthn)", "file_type": "document", "source_file": "README.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null, "rationale": "WebAuthn credentials are bound to the exact origin the dashboard is served at, so rp_id/rp_origin in settings.ini must match the real public domain before registering passkeys in production; the localhost defaults only work for local testing, and WebAuthn requires either HTTPS or the literal host localhost, so production passkeys need the nginx+TLS setup."}, {"id": "readme_setcap_cap_net_bind_service", "label": "setcap cap_net_bind_service", "file_type": "document", "source_file": "README.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null, "rationale": "Lets the compiled binary bind privileged ports 25/587 without running as root, applied to the Go binary in place of the setcap step that used to target the Python venv."}, {"id": "readme_smtp_web_service_split", "label": "--smtp-only / --web-only Service Split", "file_type": "document", "source_file": "README.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null, "rationale": "Both flags exist purely to let operators optionally match the old Python two-service split, even though the Go binary doesn't need it for its own sake."}, {"id": "readme_script_setup_py_environment_sh", "label": "script_setup_py_environment.sh", "file_type": "document", "source_file": "README.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "readme_script_install_service_sh", "label": "script_install_service.sh", "file_type": "document", "source_file": "README.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "readme_script_nginx_setup_sh", "label": "script_nginx_setup.sh", "file_type": "document", "source_file": "README.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "readme_settings_ini", "label": "settings.ini [Auth] Config", "file_type": "document", "source_file": "README.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "readme_license", "label": "LICENSE", "file_type": "document", "source_file": "README.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "readme_pymta_smtp_service", "label": "pymta-smtp.service", "file_type": "document", "source_file": "README.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}, {"id": "readme_pymta_web_service", "label": "pymta-web.service", "file_type": "document", "source_file": "README.md", "source_location": null, "source_url": null, "captured_at": null, "author": null, "contributor": null}], "edges": [{"source": "readme_mailgoserver_project", "target": "readme_systemd_unit", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "README.md", "source_location": null, "weight": 1.0}, {"source": "readme_systemd_unit", "target": "readme_smtp_web_service_split", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "README.md", "source_location": null, "weight": 1.0}, {"source": "readme_script_install_service_sh", "target": "readme_pymta_smtp_service", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "README.md", "source_location": null, "weight": 1.0}, {"source": "readme_script_install_service_sh", "target": "readme_pymta_web_service", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "README.md", "source_location": null, "weight": 1.0}, {"source": "readme_smtp_web_service_split", "target": "readme_script_install_service_sh", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "README.md", "source_location": null, "weight": 1.0}, {"source": "readme_setcap_cap_net_bind_service", "target": "readme_script_setup_py_environment_sh", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "README.md", "source_location": null, "weight": 1.0}, {"source": "readme_nginx_reverse_proxy_setup", "target": "readme_script_nginx_setup_sh", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "README.md", "source_location": null, "weight": 1.0}, {"source": "readme_admin_dashboard_login", "target": "readme_totp_mfa", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "README.md", "source_location": null, "weight": 1.0}, {"source": "readme_admin_dashboard_login", "target": "readme_webauthn_passkeys", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "README.md", "source_location": null, "weight": 1.0}, {"source": "readme_webauthn_passkeys", "target": "readme_settings_ini", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "README.md", "source_location": null, "weight": 1.0}, {"source": "readme_webauthn_passkeys", "target": "readme_nginx_reverse_proxy_setup", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "README.md", "source_location": null, "weight": 1.0}, {"source": "readme_mailgoserver_project", "target": "readme_license", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "README.md", "source_location": null, "weight": 1.0}, {"source": "readme_mailgoserver_project", "target": "readme_admin_dashboard_login", "relation": "references", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "README.md", "source_location": null, "weight": 1.0}], "hyperedges": []}