added IMAP, LetsEncrypt, update layout
This commit is contained in:
+236
-192
@@ -1,248 +1,292 @@
|
||||
# Graph Report - . (2026-08-12)
|
||||
|
||||
## Corpus Check
|
||||
- Corpus is ~39,032 words - fits in a single context window. You may not need a graph.
|
||||
- 130 files · ~65,011 words
|
||||
- Verdict: corpus is large enough that graph structure adds value.
|
||||
|
||||
## Summary
|
||||
- 426 nodes · 861 edges · 39 communities (33 shown, 6 thin omitted)
|
||||
- Extraction: 92% EXTRACTED · 8% INFERRED · 0% AMBIGUOUS · INFERRED: 71 edges (avg confidence: 0.62)
|
||||
- Token cost: 243,577 input · 0 output
|
||||
- 1025 nodes · 2084 edges · 69 communities (57 shown, 12 thin omitted)
|
||||
- Extraction: 79% EXTRACTED · 21% INFERRED · 0% AMBIGUOUS · INFERRED: 434 edges (avg confidence: 0.8)
|
||||
- Token cost: 88,541 input · 0 output
|
||||
|
||||
## Community Hubs (Navigation)
|
||||
- DKIM/SPF DNS Management UI
|
||||
- Web UI Database & Settings Utils
|
||||
- Admin Template Pages
|
||||
- App Bootstrap & Domain Models
|
||||
- DKIM Key Manager
|
||||
- SMTP Custom Protocol & Controllers
|
||||
- Sender/IP Authentication Logic
|
||||
- Models Core & Logging Utils
|
||||
- Email Relay Delivery
|
||||
- Unified App Entry Point
|
||||
- Dashboard & Auth Log Web UI
|
||||
- IP Whitelist Web UI
|
||||
- SMTP Handler Message Processing
|
||||
- Sender Management Web UI
|
||||
- Domain Management Web UI
|
||||
- README Unified: Structure & Deployment
|
||||
- README Unified & Requirements: SMTP/DB Deps
|
||||
- Manual Testing Docs (swaks/CLI)
|
||||
- Settings Loader & TLS Utils
|
||||
- DKIM/Custom Header Models
|
||||
- Combined Authenticators
|
||||
- CLI Usage & IP Whitelisting Docs
|
||||
- Message Viewer Web UI
|
||||
- DKIM/DNS Dependencies
|
||||
- README: License & Auth Features
|
||||
- systemd Install Script
|
||||
- Auth Order Fix Notes
|
||||
- Sender Model
|
||||
- send_email.py Test Script
|
||||
- SMTP Management JS (Frontend)
|
||||
- SMTP Handler Module & Message ID Util
|
||||
- Template Datetime Filter
|
||||
- Dashboard Route
|
||||
- nginx Setup Script
|
||||
- email_server Package Init
|
||||
- DKIM Management JS (Frontend)
|
||||
- Python Env Setup Script
|
||||
- bash_send_email Test Script
|
||||
- Hello.jpg Test Fixture (Doge Meme)
|
||||
- Domain Access Web Requests
|
||||
- Admin User & Session Management
|
||||
- IMAP Fetch/Append Protocol Types
|
||||
- Dashboard & Login Tests
|
||||
- Admin Web UI Add-Forms
|
||||
- Spam/DKIM Verification & Attachments
|
||||
- Mailbox App Passwords & Schema
|
||||
- DKIM Web Routes & Tests
|
||||
- DKIM Key Management
|
||||
- Admin Session Auth Middleware
|
||||
- Webmail Session Auth Middleware
|
||||
- Mailbox Alias SMTP Tests
|
||||
- Mailbox CRUD Queries
|
||||
- Dashboard Web UI
|
||||
- Email Log Persistence
|
||||
- Mailboxes Web UI Handlers
|
||||
- Admin Dashboard & Deployment Docs
|
||||
- TLS Cert & Mailstore Master Key
|
||||
- Mailbox Rules/Lists/Sessions Queries
|
||||
- Mailbox App Password Auth
|
||||
- Mailbox Message Storage Queries
|
||||
- Sender/Domain/IP Lookup Queries
|
||||
- SPF Heuristic Tests
|
||||
- DKIM Key CRUD
|
||||
- Domain CRUD
|
||||
- Sender CRUD
|
||||
- Outbound Relay Delivery
|
||||
- Mailbox Allow/Block List
|
||||
- IP Whitelist CRUD
|
||||
- Config Loading & Settings
|
||||
- Mailbox Session/WebAuthn Queries
|
||||
- Toolbox Logger & Utilities
|
||||
- Mailbox Alias Queries
|
||||
- DKIM Key Queries
|
||||
- SMTP Server Listeners
|
||||
- Auth/Custom Header Models
|
||||
- Logger Levels
|
||||
- SMTP Backend & Session
|
||||
- Relay Email Logging
|
||||
- Filter Rule Evaluation
|
||||
- List/Edit Web UI Pages
|
||||
- Login & MFA Setup Pages
|
||||
- Webmail Auth Handlers
|
||||
- Domain DKIM/Sender Counts
|
||||
- SMTP Management JS
|
||||
- Login Server Middleware
|
||||
- Mailstore Quota Status
|
||||
- DKIM Management JS
|
||||
- Logs & Message Viewer Pages
|
||||
- Deployment Scripts
|
||||
- Error Page
|
||||
- Server Settings Page
|
||||
- Project Root
|
||||
|
||||
## God Nodes (most connected - your core abstractions)
|
||||
1. `DKIMManager` - 34 edges
|
||||
2. `load_settings()` - 22 edges
|
||||
3. `get_logger()` - 21 edges
|
||||
4. `Domain` - 20 edges
|
||||
5. `EmailLog` - 20 edges
|
||||
6. `SMTPServerApp` - 19 edges
|
||||
7. `EmailRelay` - 17 edges
|
||||
8. `Sender` - 17 edges
|
||||
9. `EnhancedCustomSMTPHandler` - 17 edges
|
||||
10. `Base Layout Template` - 17 edges
|
||||
1. `setFlash()` - 66 edges
|
||||
2. `newTestApp()` - 35 edges
|
||||
3. `parseTime()` - 34 edges
|
||||
4. `HashPassword()` - 33 edges
|
||||
5. `Session` - 26 edges
|
||||
6. `DB` - 25 edges
|
||||
7. `startTestServer()` - 23 edges
|
||||
8. `Base Layout Template` - 23 edges
|
||||
9. `requireDomainAccess()` - 22 edges
|
||||
10. `writeJSON()` - 21 edges
|
||||
|
||||
## Surprising Connections (you probably didn't know these)
|
||||
- `PyMTA-server README` --semantically_similar_to--> `SMTP Server with Web Management Frontend README (legacy layout)` [INFERRED] [semantically similar]
|
||||
README.md → README_unified.md
|
||||
- `DKIM Support (auto key gen + signing)` --conceptually_related_to--> `DKIM Key Generation (manual test setup)` [INFERRED]
|
||||
README_unified.md → tests/run_tests_manually.md
|
||||
- `Lorem Ipsum Test Email Body` --semantically_similar_to--> `PDF Test Document (French Lipsum)` [INFERRED] [semantically similar]
|
||||
tests/email_body.txt → tests/pdf_test_1.pdf
|
||||
- `SMTPServerApp` --uses--> `DKIMManager` [INFERRED]
|
||||
app.py → email_server/dkim_manager.py
|
||||
- `SMTPServerApp` --uses--> `AuthLog` [INFERRED]
|
||||
app.py → email_server/models.py
|
||||
- `main()` --calls--> `Load()` [INFERRED]
|
||||
main.go → internal/config/config.go
|
||||
- `main()` --calls--> `AbsoluteSQLitePath()` [INFERRED]
|
||||
main.go → internal/config/config.go
|
||||
- `main()` --calls--> `Open()` [INFERRED]
|
||||
main.go → internal/db/schema.go
|
||||
- `main()` --calls--> `LoadOrCreateMasterKey()` [INFERRED]
|
||||
main.go → internal/mailstore/mailstore.go
|
||||
- `main()` --calls--> `ResolveBanner()` [INFERRED]
|
||||
main.go → internal/smtpserver/server.go
|
||||
|
||||
## Import Cycles
|
||||
- None detected.
|
||||
|
||||
## Hyperedges (group relationships)
|
||||
- **Domain CRUD Flow** — email_server_server_web_ui_templates_add_domain_page, email_server_server_web_ui_templates_domains_page, email_server_server_web_ui_templates_edit_domain_page, email_server_server_web_ui_templates_domains_domain_model [INFERRED 0.80]
|
||||
- **DKIM/SPF DNS Verification Flow** — email_server_server_web_ui_templates_dkim_page, email_server_server_web_ui_templates_edit_dkim_page, email_server_server_web_ui_templates_dkim_dkim_key_model, email_server_server_web_ui_templates_domains_domain_model [INFERRED 0.80]
|
||||
- **Email Log Message Viewer Flow** — email_server_server_web_ui_templates_logs_page, email_server_server_web_ui_templates_view_message_content_page, email_server_server_web_ui_templates_logs_email_log_model, email_server_server_web_ui_templates_view_message_content_attachment_model [INFERRED 0.80]
|
||||
- **SMTP Authentication & IP Whitelist Flow** — tests_note_authentication_order_fix_authentication_order_fix, tests_note_authentication_order_fix_ip_whitelisting_fallback, readme_unified_user_authentication, readme_unified_ip_whitelisting [INFERRED 0.85]
|
||||
- **Manual SMTP Testing Workflow** — tests_general_cli_usage_swaks, tests_run_tests_manually_swaks, tests_email_body_lorem_ipsum, tests_general_cli_usage_send_email_script [INFERRED 0.80]
|
||||
- **DKIM Key Generation & DNS Verification Flow** — readme_unified_dkim_support, readme_unified_dns_configuration, tests_general_cli_usage_dkim_key_management, tests_run_tests_manually_dkim_key_generation [INFERRED 0.85]
|
||||
- **Optional MFA / Second-Factor Setup Flow** — readme_admin_dashboard_login, internal_webui_templates_account_account_settings_page, internal_webui_templates_account_totp_mfa_section, internal_webui_templates_account_passkey_management [INFERRED 0.85]
|
||||
- **Delegated Admin Management CRUD Flow** — internal_webui_templates_admins_manage_admins_page, internal_webui_templates_add_admin_add_admin_page, internal_webui_templates_edit_admin_edit_admin_access_page [INFERRED 0.85]
|
||||
- **Domain DNS / DKIM / SPF Verification Workflow** — internal_webui_templates_dkim_dkim_key_management_page, internal_webui_templates_domains_domain_management_page, internal_webui_templates_add_domain_add_domain_page [INFERRED 0.80]
|
||||
- **IP Whitelist Management Flow** — internal_webui_templates_ips_ips_list_page, internal_webui_templates_edit_ip_edit_ip_whitelist_page, internal_webui_templates_sidebar_email_sidebar_navigation [INFERRED 0.80]
|
||||
- **Multi-Factor Authentication Flow** — internal_webui_templates_login_login_page, internal_webui_templates_login_mfa_login_mfa_page, internal_webui_templates_totp_setup_totp_setup_page [INFERRED 0.80]
|
||||
- **Sender Management Flow** — internal_webui_templates_senders_senders_list_page, internal_webui_templates_edit_sender_edit_sender_page, internal_webui_templates_sidebar_email_sidebar_navigation [INFERRED 0.80]
|
||||
- **Mailbox Management Flow (Aliases, App Passwords, Lists, Rules)** — internal_webui_templates_mailboxes_mailboxes_list_page, internal_webui_templates_edit_mailbox_edit_mailbox_page, internal_webui_templates_mailbox_aliases_aliases_page, internal_webui_templates_mailbox_apppasswords_app_passwords_page, internal_webui_templates_mailbox_lists_allow_block_list_page, internal_webui_templates_mailbox_rules_filter_rules_page [INFERRED 0.85]
|
||||
- **Self-Service Webmail Login-to-Account Flow** — internal_webui_templates_webmail_login_login_page, internal_webui_templates_webmail_login_mfa_mfa_verification_page, internal_webui_templates_webmail_totp_setup_totp_setup_page, internal_webui_templates_webmail_account_account_dashboard_page [INFERRED 0.85]
|
||||
- **Admin Base Layout Template System** — internal_webui_templates_base_base_layout, internal_webui_templates_dashboard_dashboard_page, internal_webui_templates_mailboxes_mailboxes_list_page, internal_webui_templates_add_mailbox_add_mailbox_page, internal_webui_templates_edit_mailbox_edit_mailbox_page, internal_webui_templates_mailbox_aliases_aliases_page, internal_webui_templates_mailbox_apppasswords_app_passwords_page, internal_webui_templates_mailbox_lists_allow_block_list_page, internal_webui_templates_mailbox_rules_filter_rules_page, internal_webui_templates_sidebar_email_sidebar_navigation [INFERRED 0.85]
|
||||
|
||||
## Communities (39 total, 6 thin omitted)
|
||||
## Communities (69 total, 12 thin omitted)
|
||||
|
||||
### Community 0 - "DKIM/SPF DNS Management UI"
|
||||
Cohesion: 0.11
|
||||
Nodes (30): check_dkim_dns(), check_spf_dns(), create_dkim(), dkim_list(), edit_dkim(), route, DKIM blueprint for the SMTP server web UI. This module provides DKIM key…, Regenerate DKIM key for domain. (+22 more)
|
||||
### Community 0 - "Domain Access Web Requests"
|
||||
Cohesion: 0.06
|
||||
Nodes (39): Request, requireDomainAccess(), scopeFromContext(), domainRemovedMessage(), Request, ResponseWriter, App, isValidDomainName() (+31 more)
|
||||
|
||||
### Community 1 - "Web UI Database & Settings Utils"
|
||||
### Community 1 - "Admin User & Session Management"
|
||||
Cohesion: 0.05
|
||||
Nodes (22): AdminSession, AdminUser, WebAuthnCredential, Time, DB, Duration, Row, newSessionToken() (+14 more)
|
||||
|
||||
### Community 2 - "IMAP Fetch/Append Protocol Types"
|
||||
Cohesion: 0.06
|
||||
Nodes (40): AppendData, AppendOptions, CopyData, Envelope, ExpungeWriter, FetchOptions, FetchResponseWriter, FetchWriter (+32 more)
|
||||
|
||||
### Community 3 - "Dashboard & Login Tests"
|
||||
Cohesion: 0.10
|
||||
Nodes (28): import_or_install_driver(), install_package(), Database utilities for the SMTP server., Install a Python package using pip. Args: package_name: Name of the package to…, Import database driver, installing it if necessary. Args: db_type: Type of…, Test if a database connection can be established. Args: url: Database…, test_database_connection(), allowed_file() (+20 more)
|
||||
Nodes (50): HashPassword(), T, TestDashboardShowsMailboxNearQuota(), T, TestLoginRequiresTOTPWhenEnabled(), TestLoginSuccessWithoutMFA(), TestLoginWrongPasswordRejected(), createMailboxFor() (+42 more)
|
||||
|
||||
### Community 2 - "Admin Template Pages"
|
||||
Cohesion: 0.23
|
||||
Nodes (27): Add Domain Page, Add IP Whitelist Page, Add Sender Page, check_health() Service Status Pattern, Base Layout Template, Dashboard Page, DKIM Key Data Model, DKIM Key Management Page (+19 more)
|
||||
### Community 4 - "Admin Web UI Add-Forms"
|
||||
Cohesion: 0.06
|
||||
Nodes (54): Add Admin Page, Add Domain Page, Add IP Whitelist Page, Add Mailbox Form, Add Mailbox Page, Add Sender Page, Manage Admins Page, Base Layout Template (+46 more)
|
||||
|
||||
### Community 3 - "App Bootstrap & Domain Models"
|
||||
Cohesion: 0.15
|
||||
Nodes (15): Initialize the database with sample data for testing, create_tables(), Domain, Check if this IP can send emails for the given domain. Args: domain_name: The…, Create all database tables using ESRV schema., Domain model with enhanced security features., IP whitelist model with domain-specific authentication. Security feature: - IPs…, WhitelistedIP (+7 more)
|
||||
### Community 5 - "Spam/DKIM Verification & Attachments"
|
||||
Cohesion: 0.06
|
||||
Nodes (37): VerifyInbound(), CheckRspamd(), CheckDNSBL(), SpamScore(), attachmentStoragePath(), cleanMessageIDPrefix(), Time, parseMessage() (+29 more)
|
||||
|
||||
### Community 4 - "DKIM Key Manager"
|
||||
### Community 6 - "Mailbox App Passwords & Schema"
|
||||
Cohesion: 0.07
|
||||
Nodes (38): GreetingData, GenerateAppPassword(), DB, DB, migrateAddedColumns(), Open(), Client, T (+30 more)
|
||||
|
||||
### Community 7 - "DKIM Web Routes & Tests"
|
||||
Cohesion: 0.11
|
||||
Nodes (24): Request, ResponseWriter, App, isAjax(), writeJSON(), T, TestIsValidDomainName(), TestVerificationRecordNameAndValue() (+16 more)
|
||||
|
||||
### Community 8 - "DKIM Key Management"
|
||||
Cohesion: 0.07
|
||||
Nodes (29): DNSRecord, Manager, FuncMap, encodeKeyPair(), GenerateSelector(), DB, New(), rawBase64FromPEM() (+21 more)
|
||||
|
||||
### Community 9 - "Admin Session Auth Middleware"
|
||||
Cohesion: 0.11
|
||||
Nodes (22): clearSessionCookie(), ResponseWriter, setSessionCookie(), clearPendingMFACookie(), Request, ResponseWriter, App, isStrongPassword() (+14 more)
|
||||
|
||||
### Community 10 - "Webmail Session Auth Middleware"
|
||||
Cohesion: 0.12
|
||||
Nodes (11): DKIMManager, Get the active DKIM key for a domain (only one active per selector)., Get DKIM private key for a domain., Get DKIM public key DNS record for a domain (active key only)., Sign email content with DKIM. Only add one DKIM header, after all modifications., Manages DKIM keys and email signing., Initialize DKIM keys for existing domains that don't have them., Initialize DKIMManager with a selector. If not provided, use random. (+3 more)
|
||||
Nodes (19): clearMailboxSessionCookie(), ResponseWriter, setMailboxSessionCookie(), clearMailboxPendingMFACookie(), Request, ResponseWriter, App, pendingMailboxMFAID() (+11 more)
|
||||
|
||||
### Community 5 - "SMTP Custom Protocol & Controllers"
|
||||
Cohesion: 0.13
|
||||
Nodes (11): AIOSMTP, Controller, EmailAttachment, Attachment metadata and file path, linked to EmailLog., CustomSMTP, PlainController, Custom SMTP class with configurable banner and secure AUTH handling., Override AUTH command to close connection after failed authentication. (+3 more)
|
||||
|
||||
### Community 6 - "Sender/IP Authentication Logic"
|
||||
Cohesion: 0.14
|
||||
Nodes (15): get_authenticated_domain_id(), Enhanced authentication modules for the SMTP server using ESRV schema. Security…, Check if IP can authenticate for a specific domain. Args: ip_address: Client IP…, Validate if the authenticated entity can send as the specified from address.…, Get the domain ID for the authenticated entity. Args: session: SMTP session…, validate_sender_authorization(), check_password(), get_domain_by_name() (+7 more)
|
||||
|
||||
### Community 7 - "Models Core & Logging Utils"
|
||||
### Community 11 - "Mailbox Alias SMTP Tests"
|
||||
Cohesion: 0.16
|
||||
Nodes (13): Email relay functionality for the SMTP server., EmailRecipientLog, log_email(), Database models for the SMTP server using ESRV schema. Enhanced security…, Log for each recipient of an email, including status and error details., Log an email send attempt. Args: from_address: Sender email to_address:…, ensure_folder_exists(), get_logger() (+5 more)
|
||||
Nodes (30): createAlias(), Backend, T, TestLocalDeliveryToAliasLandsInOwningMailbox(), TestMailboxAppPasswordCannotSendAsReceiveOnlyAlias(), TestMailboxAppPasswordCanSendAsEnabledAlias(), TestMailboxAppPasswordCanSendAsPrimaryButNotArbitraryAddress(), Backend (+22 more)
|
||||
|
||||
### Community 8 - "Email Relay Delivery"
|
||||
### Community 12 - "Mailbox CRUD Queries"
|
||||
Cohesion: 0.11
|
||||
Nodes (6): Mailbox, MailboxWithDomain, DB, Row, scanMailbox(), Store
|
||||
|
||||
### Community 13 - "Dashboard Web UI"
|
||||
Cohesion: 0.16
|
||||
Nodes (13): authLogDomain(), emailDomain(), emailOrBareDomain(), Request, ResponseWriter, App, Request, ResponseWriter (+5 more)
|
||||
|
||||
### Community 14 - "Email Log Persistence"
|
||||
Cohesion: 0.15
|
||||
Nodes (9): EmailRelay, Relay email to recipients' mail servers asynchronously with encryption.…, Handles relaying emails to recipient mail servers., Synchronous wrapper for relay_email_async for compatibility., Modify email headers to set To and Cc fields, preserving original structure for…, Log email activity to database, including per-recipient results., Prepare a copy of the email for a specific recipient without modifying original…, EmailLog (+1 more)
|
||||
Nodes (8): EmailAttachment, EmailLog, EmailRecipientLog, DB, Row, scanEmailLog(), DB, App
|
||||
|
||||
### Community 9 - "Unified App Entry Point"
|
||||
Cohesion: 0.18
|
||||
Nodes (8): main(), Start the SMTP server in async context, Run the unified application, Check the health of all services, Unified SMTP Server and Web Frontend Application, Convert relative database URL to absolute path for Flask-SQLAlchemy, Create and configure the Flask application, SMTPServerApp
|
||||
### Community 15 - "Mailboxes Web UI Handlers"
|
||||
Cohesion: 0.29
|
||||
Nodes (5): Request, ResponseWriter, App, parseQuotaGB(), localPartOf()
|
||||
|
||||
### Community 10 - "Dashboard & Auth Log Web UI"
|
||||
### Community 16 - "Admin Dashboard & Deployment Docs"
|
||||
Cohesion: 0.13
|
||||
Nodes (16): Account Settings Page, Passkey / WebAuthn Management, TOTP MFA Section, Admin Dashboard Login, LICENSE, mailgoserver (Go Binary), nginx Reverse Proxy Setup, pymta-smtp.service (+8 more)
|
||||
|
||||
### Community 17 - "TLS Cert & Mailstore Master Key"
|
||||
Cohesion: 0.16
|
||||
Nodes (12): CreateOptions, LoadOrCreateMasterKey(), CreateSSLContext(), GenerateSelfSignedCert(), Config, EnsureFolderExists(), GetLogger(), absPath() (+4 more)
|
||||
|
||||
### Community 18 - "Mailbox Rules/Lists/Sessions Queries"
|
||||
Cohesion: 0.19
|
||||
Nodes (9): AuthLog, Authentication log model for security auditing., Dashboard routes for the SMTP server web UI. This module provides the main…, SMTP Server Web UI Package This package provides a web interface for managing…, logs(), route, Logs blueprint for the SMTP server web UI. This module provides email and…, Display email and authentication logs. (+1 more)
|
||||
Nodes (7): MailboxAllowBlockEntry, MailboxAppPassword, MailboxFilterRule, MailboxSession, MailboxWebAuthnCredential, DB, Time
|
||||
|
||||
### Community 11 - "IP Whitelist Web UI"
|
||||
Cohesion: 0.20
|
||||
Nodes (13): add_ip(), disable_ip(), edit_ip(), enable_ip(), ips_list(), route, IP Whitelist blueprint for the SMTP server web UI. This module provides IP…, Enable whitelisted IP. (+5 more)
|
||||
|
||||
### Community 12 - "SMTP Handler Message Processing"
|
||||
### Community 19 - "Mailbox App Password Auth"
|
||||
Cohesion: 0.18
|
||||
Nodes (8): EnhancedCustomSMTPHandler, Ensure all required email headers are present and properly formatted., Handle incoming email data with improved header management and logging., Handle RCPT TO command - validate recipients., Handle MAIL FROM command with enhanced sender validation. Security Features: -…, Generate the storage path for attachments based on sender domain,…, Get the correct content type for a file, trying multiple methods., Enhanced custom SMTP handler with security controls.
|
||||
Nodes (4): DB, CheckPassword(), Server, Session
|
||||
|
||||
### Community 13 - "Sender Management Web UI"
|
||||
Cohesion: 0.24
|
||||
Nodes (12): hash_password(), Hash a password using bcrypt., add_sender(), delete_sender(), edit_sender(), enable_sender(), route, Senders blueprint for the SMTP server web UI. This module provides sender… (+4 more)
|
||||
### Community 20 - "Mailbox Message Storage Queries"
|
||||
Cohesion: 0.21
|
||||
Nodes (5): MailboxMessage, DB, Time, Time, parseTime()
|
||||
|
||||
### Community 14 - "Domain Management Web UI"
|
||||
Cohesion: 0.24
|
||||
Nodes (11): add_domain(), delete_domain(), domains_list(), edit_domain(), route, Domains blueprint for the SMTP server web UI. This module provides domain…, Toggle domain active status (Enable/Disable)., Permanently remove domain and all associated data. (+3 more)
|
||||
|
||||
### Community 15 - "README Unified: Structure & Deployment"
|
||||
Cohesion: 0.17
|
||||
Nodes (12): REST API Endpoints (/health, /api/server/status, /api/server/restart), SMTP Server with Web Management Frontend README (legacy layout), Domain Management, Email Relay (forward to external servers), Project Structure (app.py, main.py, email_server/, email_frontend/), Nginx Reverse Proxy, settings.ini Configuration File, Systemd Service (production deployment) (+4 more)
|
||||
|
||||
### Community 16 - "README Unified & Requirements: SMTP/DB Deps"
|
||||
Cohesion: 0.20
|
||||
Nodes (12): SQLite Database Schema (domains, users, whitelisted_ips, dkim_keys, email_logs, auth_logs, custom_headers), Full SMTP Server (send/receive with auth), aiosmtpd (dependency), aiosmtplib (dependency), Unified Requirements File, Flask-SQLAlchemy (dependency), Jinja2 (dependency), python-dotenv (dependency) (+4 more)
|
||||
|
||||
### Community 17 - "Manual Testing Docs (swaks/CLI)"
|
||||
Cohesion: 0.18
|
||||
Nodes (11): Lorem Ipsum Test Email Body, tests/send_email.py script, swaks (SMTP test CLI tool), PDF Test Document (French Lipsum), Beach Pebbles Photo (embedded image), Check DB Logs (sqlite3 email_logs query), DKIM Key Generation (manual test setup), Manual Test Setup Instructions (+3 more)
|
||||
|
||||
### Community 18 - "Settings Loader & TLS Utils"
|
||||
Cohesion: 0.31
|
||||
Nodes (8): ConfigParser, generate_settings_ini(), load_settings(), Settings loader for the SMTP server. Automatically generates settings.ini with…, Generate settings.ini with default values and comments if it does not exist., Load settings from settings.ini, generating it if needed., TLS utilities for the SMTP server., Path
|
||||
|
||||
### Community 19 - "DKIM/Custom Header Models"
|
||||
Cohesion: 0.25
|
||||
Nodes (6): Base, DKIM key management and email signing functionality., CustomHeader, DKIMKey, DKIM key model for email signing., Custom header model for domain-specific email headers.
|
||||
|
||||
### Community 20 - "Combined Authenticators"
|
||||
Cohesion: 0.33
|
||||
Nodes (6): EnhancedAuthenticator, EnhancedIPAuthenticator, Enhanced username/password authenticator with sender validation. Features: -…, Enhanced IP-based authenticator with domain-specific authorization. Features: -…, EnhancedCombinedAuthenticator, Enhanced combined authenticator with sender validation support. Features: -…
|
||||
|
||||
### Community 21 - "CLI Usage & IP Whitelisting Docs"
|
||||
### Community 21 - "Sender/Domain/IP Lookup Queries"
|
||||
Cohesion: 0.22
|
||||
Nodes (9): Sender IP Whitelisting, IP Whitelisting (auth-free sending), Direct sqlite3 DB Access/Queries, CLI/Web Usage Guide (tests), Domain Management (web UI: /email/domains), IP Whitelist Management (web UI: /email/ips), User Management (web UI: /email/users), Web Interface Setup Workflow (dev/prod) (+1 more)
|
||||
Nodes (6): Domain, DB, WhitelistedIP, Row, WhitelistedIP, scanDomain()
|
||||
|
||||
### Community 22 - "Message Viewer Web UI"
|
||||
Cohesion: 0.38
|
||||
Nodes (6): delete_attachment(), download_attachment(), route, Route to view full email message content if stored., View the full message content for an email log if stored., view_message_content()
|
||||
### Community 22 - "SPF Heuristic Tests"
|
||||
Cohesion: 0.31
|
||||
Nodes (11): T, TestEvalSPF(), TestSpamScoreArithmetic(), CheckSPF(), domainOf(), evalSPF(), lookupSPFRecord(), matchA() (+3 more)
|
||||
|
||||
### Community 23 - "DKIM/DNS Dependencies"
|
||||
### Community 23 - "DKIM Key CRUD"
|
||||
Cohesion: 0.23
|
||||
Nodes (3): DKIMKeyWithDomain, DB, scanDKIMKeysWithDomain()
|
||||
|
||||
### Community 25 - "Sender CRUD"
|
||||
Cohesion: 0.18
|
||||
Nodes (3): Sender, SenderWithDomain, DB
|
||||
|
||||
### Community 26 - "Outbound Relay Delivery"
|
||||
Cohesion: 0.29
|
||||
Nodes (7): DKIM (planned feature), DKIM Support (auto key gen + signing), DNS Configuration (DKIM/SPF/MX records), cryptography (dependency), dkimpy (dependency), dnspython (dependency), DKIM Key Management (web UI: /email/dkim)
|
||||
Nodes (8): domainOf(), DB, Duration, File, Relay, New(), prepareEmailForRecipient(), Result
|
||||
|
||||
### Community 24 - "README: License & Auth Features"
|
||||
Cohesion: 0.29
|
||||
Nodes (7): PyMTA-server README, AGPL-3.0 License, SPF DNS Records (delivery success), Optional Storing of Sent Emails, MIT License, Username/Password Authentication, gunicorn (dependency)
|
||||
### Community 27 - "Mailbox Allow/Block List"
|
||||
Cohesion: 0.24
|
||||
Nodes (4): DB, matchesAllowBlock(), domainPart(), equalFold()
|
||||
|
||||
### Community 25 - "systemd Install Script"
|
||||
Cohesion: 0.52
|
||||
Nodes (6): remove_system_services(), remove_user_services(), script_install_service.sh script, usage(), write_system_services(), write_user_services()
|
||||
### Community 28 - "IP Whitelist CRUD"
|
||||
Cohesion: 0.20
|
||||
Nodes (3): WhitelistedIPWithDomain, DB, WhitelistedIP
|
||||
|
||||
### Community 26 - "Auth Order Fix Notes"
|
||||
### Community 29 - "Config Loading & Settings"
|
||||
Cohesion: 0.27
|
||||
Nodes (8): defaultKV, AbsoluteSQLitePath(), GenerateSettingsIni(), File, Load(), T, TestAbsoluteSQLitePath(), TestGenerateAndLoadRoundTrip()
|
||||
|
||||
### Community 30 - "Mailbox Session/WebAuthn Queries"
|
||||
Cohesion: 0.20
|
||||
Nodes (3): DB, Duration, newMailboxSessionToken()
|
||||
|
||||
### Community 31 - "Toolbox Logger & Utilities"
|
||||
Cohesion: 0.31
|
||||
Nodes (7): Configure(), GenerateMessageID(), GetCurrentTime(), File, Time, parseLevel(), Level
|
||||
|
||||
### Community 33 - "DKIM Key Queries"
|
||||
Cohesion: 0.43
|
||||
Nodes (4): DKIMKey, DB, Row, scanDKIMKey()
|
||||
|
||||
### Community 34 - "SMTP Server Listeners"
|
||||
Cohesion: 0.32
|
||||
Nodes (7): Backend, Config, File, Server, NewPlainServer(), NewTLSServer(), ResolveBanner()
|
||||
|
||||
### Community 35 - "Auth/Custom Header Models"
|
||||
Cohesion: 0.43
|
||||
Nodes (4): AuthLog, CustomHeader, WhitelistedIP, Time
|
||||
|
||||
### Community 37 - "SMTP Backend & Session"
|
||||
Cohesion: 0.33
|
||||
Nodes (6): Per-user/per-domain User Authentication, bcrypt (dependency), AuthResult / email_server/auth.py __call__ (code snippet), AUTH Advertised on Both Plain SMTP and TLS Ports, SMTP Authentication Order Fix (June 2025), STARTTLS Not Advertised (direct TLS only)
|
||||
Nodes (4): Backend, DB, Session, Store
|
||||
|
||||
### Community 27 - "Sender Model"
|
||||
### Community 38 - "Relay Email Logging"
|
||||
Cohesion: 0.33
|
||||
Nodes (4): File, Relay, overallStatus(), peerIP
|
||||
|
||||
### Community 39 - "Filter Rule Evaluation"
|
||||
Cohesion: 0.50
|
||||
Nodes (3): Store, matchCondition(), FilterAction
|
||||
|
||||
### Community 40 - "List/Edit Web UI Pages"
|
||||
Cohesion: 0.50
|
||||
Nodes (5): Edit IP Whitelist Entry Page, Edit Sender Page, Client-side IP Detection (ifconfig.me), Whitelisted IPs List Page, Senders List Page
|
||||
|
||||
### Community 41 - "Login & MFA Setup Pages"
|
||||
Cohesion: 0.40
|
||||
Nodes (3): Sender model with enhanced authentication controls. Security features: -…, Check if this sender can send emails as the given from_address. Args:…, Sender
|
||||
Nodes (5): First Login / Set Up Account Page, Login Page, Login MFA Verification Page, Passkey/WebAuthn Login Flow, TOTP Authenticator Setup Page
|
||||
|
||||
### Community 28 - "send_email.py Test Script"
|
||||
Cohesion: 0.40
|
||||
Nodes (4): Send a test email using plain SMTP., Send a test email using STARTTLS., send_test_email(), send_test_email_tls()
|
||||
### Community 42 - "Webmail Auth Handlers"
|
||||
Cohesion: 0.50
|
||||
Nodes (3): Handler, Request, App
|
||||
|
||||
### Community 29 - "SMTP Management JS (Frontend)"
|
||||
### Community 44 - "SMTP Management JS"
|
||||
Cohesion: 0.50
|
||||
Nodes (3): DNSVerification, FormValidation, SMTPManagement
|
||||
|
||||
### Community 30 - "SMTP Handler Module & Message ID Util"
|
||||
Cohesion: 0.50
|
||||
Nodes (3): Enhanced SMTP handler for processing incoming emails with security controls.…, generate_message_id(), Generate a consistent Message-ID for both email headers and database storage.…
|
||||
|
||||
### Community 31 - "Template Datetime Filter"
|
||||
Cohesion: 0.67
|
||||
Nodes (3): app_template_filter, format_datetime(), Format datetime with the correct timezone from settings or argument.
|
||||
|
||||
### Community 32 - "Dashboard Route"
|
||||
Cohesion: 0.67
|
||||
Nodes (3): dashboard(), route, Main dashboard showing overview of the email server.
|
||||
|
||||
## Ambiguous Edges - Review These
|
||||
- `Edit Domain Page` → `Sidebar Navigation Partial` [AMBIGUOUS]
|
||||
email_server/server_web_ui/templates/edit_domain.html · relation: references
|
||||
- `AGPL-3.0 License` → `MIT License` [AMBIGUOUS]
|
||||
README.md · relation: conceptually_related_to
|
||||
|
||||
## Knowledge Gaps
|
||||
- **36 isolated node(s):** `DKIMManagement`, `SMTPManagement`, `DNSVerification`, `FormValidation`, `script_nginx_setup.sh script` (+31 more)
|
||||
- **47 isolated node(s):** `mailgoserver`, `defaultKV`, `WhitelistedIP`, `Store`, `Store` (+42 more)
|
||||
These have ≤1 connection - possible missing edges or undocumented components.
|
||||
- **6 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
|
||||
- **12 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
|
||||
|
||||
## Suggested Questions
|
||||
_Questions this graph is uniquely positioned to answer:_
|
||||
|
||||
- **What is the exact relationship between `Edit Domain Page` and `Sidebar Navigation Partial`?**
|
||||
_Edge tagged AMBIGUOUS (relation: references) - confidence is low._
|
||||
- **What is the exact relationship between `AGPL-3.0 License` and `MIT License`?**
|
||||
_Edge tagged AMBIGUOUS (relation: conceptually_related_to) - confidence is low._
|
||||
- **Why does `DKIMManager` connect `DKIM Key Manager` to `DKIM/SPF DNS Management UI`, `App Bootstrap & Domain Models`, `SMTP Custom Protocol & Controllers`, `Unified App Entry Point`, `SMTP Handler Message Processing`, `Domain Management Web UI`, `DKIM/Custom Header Models`, `Combined Authenticators`, `SMTP Handler Module & Message ID Util`?**
|
||||
_High betweenness centrality (0.098) - this node is a cross-community bridge._
|
||||
- **Why does `load_settings()` connect `Settings Loader & TLS Utils` to `DKIM/SPF DNS Management UI`, `Web UI Database & Settings Utils`, `App Bootstrap & Domain Models`, `Models Core & Logging Utils`, `Unified App Entry Point`, `Dashboard & Auth Log Web UI`, `DKIM/Custom Header Models`, `SMTP Handler Module & Message ID Util`, `Template Datetime Filter`?**
|
||||
_High betweenness centrality (0.041) - this node is a cross-community bridge._
|
||||
- **Why does `EmailRelay` connect `Email Relay Delivery` to `SMTP Custom Protocol & Controllers`, `Models Core & Logging Utils`, `SMTP Handler Message Processing`, `Combined Authenticators`, `SMTP Handler Module & Message ID Util`?**
|
||||
_High betweenness centrality (0.036) - this node is a cross-community bridge._
|
||||
- **Are the 9 inferred relationships involving `DKIMManager` (e.g. with `SMTPServerApp` and `CustomHeader`) actually correct?**
|
||||
_`DKIMManager` has 9 INFERRED edges - model-reasoned connections that need verification._
|
||||
- **Are the 4 inferred relationships involving `Domain` (e.g. with `SMTPServerApp` and `EnhancedAuthenticator`) actually correct?**
|
||||
_`Domain` has 4 INFERRED edges - model-reasoned connections that need verification._
|
||||
- **Why does `HashPassword()` connect `Dashboard & Login Tests` to `Domain Access Web Requests`, `Admin User & Session Management`, `Mailbox App Passwords & Schema`, `Admin Session Auth Middleware`, `Mailbox Alias SMTP Tests`, `Mailboxes Web UI Handlers`, `Mailbox Allow/Block List`?**
|
||||
_High betweenness centrality (0.224) - this node is a cross-community bridge._
|
||||
- **Why does `parseTime()` connect `Mailbox Message Storage Queries` to `Mailbox Alias Queries`, `Admin User & Session Management`, `DKIM Key Queries`, `Auth/Custom Header Models`, `Mailbox CRUD Queries`, `Email Log Persistence`, `Mailbox Rules/Lists/Sessions Queries`, `Mailbox App Password Auth`, `Sender/Domain/IP Lookup Queries`, `DKIM Key CRUD`, `Domain CRUD`, `Sender CRUD`, `Mailbox Allow/Block List`, `IP Whitelist CRUD`?**
|
||||
_High betweenness centrality (0.186) - this node is a cross-community bridge._
|
||||
- **Why does `Mailbox` connect `Mailbox CRUD Queries` to `Domain Access Web Requests`, `IMAP Fetch/Append Protocol Types`, `Dashboard & Login Tests`, `Spam/DKIM Verification & Attachments`, `Webmail Auth Handlers`, `Webmail Session Auth Middleware`, `Mailboxes Web UI Handlers`, `Mailbox Rules/Lists/Sessions Queries`, `Mailbox App Password Auth`?**
|
||||
_High betweenness centrality (0.151) - this node is a cross-community bridge._
|
||||
- **Are the 64 inferred relationships involving `setFlash()` (e.g. with `.addAdmin()` and `.addAlias()`) actually correct?**
|
||||
_`setFlash()` has 64 INFERRED edges - model-reasoned connections that need verification._
|
||||
- **Are the 29 inferred relationships involving `newTestApp()` (e.g. with `TestDashboardShowsMailboxNearQuota()` and `TestLoginRequiresTOTPWhenEnabled()`) actually correct?**
|
||||
_`newTestApp()` has 29 INFERRED edges - model-reasoned connections that need verification._
|
||||
- **Are the 29 inferred relationships involving `parseTime()` (e.g. with `.GetAliasByEmail()` and `.GetAttachmentByID()`) actually correct?**
|
||||
_`parseTime()` has 29 INFERRED edges - model-reasoned connections that need verification._
|
||||
- **Are the 32 inferred relationships involving `HashPassword()` (e.g. with `.SeedDefaultAdminIfEmpty()` and `newTestMailboxWithAppPassword()`) actually correct?**
|
||||
_`HashPassword()` has 32 INFERRED edges - model-reasoned connections that need verification._
|
||||
Reference in New Issue
Block a user