# webmin/usermin architecture

> Architecture diagram of the GitHub repository webmin/usermin, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-11). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/webmin/usermin
- Repository: https://github.com/webmin/usermin

## Overview

Usermin is a web interface for users to manage personal account and server services. Its module catalog covers mail, scheduled jobs, databases, security, and system settings; a typical user selects a module and changes or views the corresponding service configuration. The supplied tree contains module metadata and settings, not request handlers or a runtime entry point, so interactions are shown only as unverified links. The README describes installation but does not document runtime wiring.

Main entry points: [`mailbox/module.info.cs`](https://github.com/webmin/usermin/blob/master/mailbox/module.info.cs) (Mailbox), [`fetchmail/module.info.cs`](https://github.com/webmin/usermin/blob/master/fetchmail/module.info.cs) (Fetchmail), [`forward/module.info.cs`](https://github.com/webmin/usermin/blob/master/forward/module.info.cs) (Mail forwarding), [`ldap-forward/module.info.cs`](https://github.com/webmin/usermin/blob/master/ldap-forward/module.info.cs) (LDAP forwarding)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_mail["Mail"]
  node_mailbox["Mailbox<br/>[module.info.cs]"]
  node_fetchmail["Fetchmail<br/>[module.info.cs]"]
  node_forward["Mail forwarding<br/>[module.info.cs]"]
  node_ldapforward["LDAP forwarding<br/>[module.info.cs]"]
  node_procmail["Procmail<br/>[module.info.cs]"]
  node_spam["Spam controls<br/>[module.info.cs]"]
  node_spamassassin["SpamAssassin<br/>[module.info.cs]"]
  node_mailcap["Mailcap<br/>[module.info.cs]"]
end

subgraph group_account["Account"]
  node_changepass["Password change<br/>[module.info.cs]"]
  node_chfn["User details<br/>[module.info.cs]"]
  node_language["Language<br/>[module.info.cs]"]
  node_theme["Theme<br/>[module.info.cs]"]
end

subgraph group_web["Web access"]
  node_webaccess["Web directory access<br/>[module.info.cs]"]
  node_apache["Apache settings<br/>[module.info.cs]"]
  node_tunnel["Tunnels<br/>[module.info.cs]"]
  node_ssh["SSH<br/>[module.info.cs]"]
  node_gnupg["GnuPG<br/>[module.info.cs]"]
  node_link["Links<br/>[module.info.cs]"]
  node_man["Manual pages<br/>[module.info.cs]"]
  node_motd["Login message<br/>[module.info.cs]"]
  node_plan["User plan<br/>[module.info.cs]"]
  node_cshrc["Login scripts<br/>[module.info.cs]"]
end

subgraph group_system["System tools"]
  node_at["One-time jobs<br/>[module.info.cs]"]
  node_cron["Scheduled jobs<br/>[module.info.cs]"]
  node_schedule["Schedules<br/>[module.info.cs]"]
  node_quota["Disk quotas<br/>[module.info.cs]"]
  node_usermount["Mount filesystems<br/>[module.info.cs]"]
  node_proc["Processes<br/>[module.info.cs]"]
  node_commands["Commands<br/>[module.info.cs]"]
  node_updown["File transfer<br/>[module.info.cs]"]
  node_mysql["MySQL<br/>[module.info.cs]"]
  node_postgresql["PostgreSQL<br/>[module.info.cs]"]
end

subgraph group_terminal["Terminal"]
  node_shell["Shell<br/>[module.info.cs]"]
end

node_user(("User"))

node_user -.->|"uses"| node_mailbox
node_user -.->|"uses"| node_fetchmail
node_user -.->|"uses"| node_forward
node_user -.->|"uses"| node_ldapforward
node_user -.->|"uses"| node_procmail
node_user -.->|"uses"| node_spam
node_user -.->|"uses"| node_spamassassin
node_user -.->|"uses"| node_mailcap
node_user -.->|"uses"| node_changepass
node_user -.->|"uses"| node_chfn
node_user -.->|"uses"| node_language
node_user -.->|"uses"| node_theme
node_user -.->|"uses"| node_at
node_user -.->|"uses"| node_cron
node_user -.->|"uses"| node_schedule
node_user -.->|"uses"| node_quota
node_user -.->|"uses"| node_usermount
node_user -.->|"uses"| node_proc
node_user -.->|"uses"| node_commands
node_user -.->|"uses"| node_updown
node_user -.->|"uses"| node_mysql
node_user -.->|"uses"| node_postgresql
node_user -.->|"uses"| node_webaccess
node_user -.->|"uses"| node_apache
node_user -.->|"uses"| node_tunnel
node_user -.->|"uses"| node_ssh
node_user -.->|"uses"| node_gnupg
node_user -.->|"uses"| node_link
node_user -.->|"uses"| node_man
node_user -.->|"uses"| node_motd
node_user -.->|"uses"| node_plan
node_user -.->|"uses"| node_cshrc
node_user -.->|"uses"| node_shell

click node_mailbox "https://github.com/webmin/usermin/blob/master/mailbox/module.info.cs"
click node_fetchmail "https://github.com/webmin/usermin/blob/master/fetchmail/module.info.cs"
click node_forward "https://github.com/webmin/usermin/blob/master/forward/module.info.cs"
click node_ldapforward "https://github.com/webmin/usermin/blob/master/ldap-forward/module.info.cs"
click node_procmail "https://github.com/webmin/usermin/blob/master/procmail/module.info.cs"
click node_spam "https://github.com/webmin/usermin/blob/master/spam/module.info.cs"
click node_spamassassin "https://github.com/webmin/usermin/blob/master/spam-assassin/module.info.cs"
click node_mailcap "https://github.com/webmin/usermin/blob/master/mailcap/module.info.cs"
click node_changepass "https://github.com/webmin/usermin/blob/master/changepass/module.info.cs"
click node_chfn "https://github.com/webmin/usermin/blob/master/chfn/module.info.cs"
click node_language "https://github.com/webmin/usermin/blob/master/language/module.info.cs"
click node_theme "https://github.com/webmin/usermin/blob/master/theme/module.info.cs"
click node_at "https://github.com/webmin/usermin/blob/master/at/module.info.cs"
click node_cron "https://github.com/webmin/usermin/blob/master/cron/module.info.cs"
click node_schedule "https://github.com/webmin/usermin/blob/master/schedule/module.info.cs"
click node_quota "https://github.com/webmin/usermin/blob/master/quota/module.info.cs"
click node_usermount "https://github.com/webmin/usermin/blob/master/usermount/module.info.cs"
click node_proc "https://github.com/webmin/usermin/blob/master/proc/module.info.cs"
click node_commands "https://github.com/webmin/usermin/blob/master/commands/module.info.cs"
click node_updown "https://github.com/webmin/usermin/blob/master/updown/module.info.cs"
click node_mysql "https://github.com/webmin/usermin/blob/master/mysql/module.info.cs"
click node_postgresql "https://github.com/webmin/usermin/blob/master/postgresql/module.info.cs"
click node_webaccess "https://github.com/webmin/usermin/blob/master/htaccess-htpasswd/module.info.cs"
click node_apache "https://github.com/webmin/usermin/blob/master/htaccess/module.info.cs"
click node_tunnel "https://github.com/webmin/usermin/blob/master/tunnel/module.info.cs"
click node_ssh "https://github.com/webmin/usermin/blob/master/ssh/module.info.cs"
click node_gnupg "https://github.com/webmin/usermin/blob/master/gnupg/module.info.cs"
click node_link "https://github.com/webmin/usermin/blob/master/link/module.info.cs"
click node_man "https://github.com/webmin/usermin/blob/master/man/module.info.cs"
click node_motd "https://github.com/webmin/usermin/blob/master/motd/module.info.cs"
click node_plan "https://github.com/webmin/usermin/blob/master/plan/module.info.cs"
click node_cshrc "https://github.com/webmin/usermin/blob/master/cshrc/module.info.cs"
click node_shell "https://github.com/webmin/usermin/blob/master/shell/module.info.cs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_mailbox,node_fetchmail,node_forward,node_ldapforward,node_procmail,node_spam,node_spamassassin,node_mailcap,node_user toneBlue
class node_changepass,node_chfn,node_language,node_theme toneAmber
class node_webaccess,node_apache,node_tunnel,node_ssh,node_gnupg,node_link,node_man,node_motd,node_plan,node_cshrc toneMint
class node_at,node_cron,node_schedule,node_quota,node_usermount,node_proc,node_commands,node_updown,node_mysql,node_postgresql toneRose
class node_shell toneIndigo
```

## Components

### Mail

- [Mailbox](https://github.com/webmin/usermin/blob/master/mailbox/module.info.cs): `mailbox/module.info.cs`
- [Fetchmail](https://github.com/webmin/usermin/blob/master/fetchmail/module.info.cs): `fetchmail/module.info.cs`
- [Mail forwarding](https://github.com/webmin/usermin/blob/master/forward/module.info.cs): `forward/module.info.cs`
- [LDAP forwarding](https://github.com/webmin/usermin/blob/master/ldap-forward/module.info.cs): `ldap-forward/module.info.cs`
- [Procmail](https://github.com/webmin/usermin/blob/master/procmail/module.info.cs): `procmail/module.info.cs`
- [Spam controls](https://github.com/webmin/usermin/blob/master/spam/module.info.cs): `spam/module.info.cs`
- [SpamAssassin](https://github.com/webmin/usermin/blob/master/spam-assassin/module.info.cs): `spam-assassin/module.info.cs`
- [Mailcap](https://github.com/webmin/usermin/blob/master/mailcap/module.info.cs): `mailcap/module.info.cs`

### Account

- [Password change](https://github.com/webmin/usermin/blob/master/changepass/module.info.cs): `changepass/module.info.cs`
- [User details](https://github.com/webmin/usermin/blob/master/chfn/module.info.cs): `chfn/module.info.cs`
- [Language](https://github.com/webmin/usermin/blob/master/language/module.info.cs): `language/module.info.cs`
- [Theme](https://github.com/webmin/usermin/blob/master/theme/module.info.cs): `theme/module.info.cs`

### Web access

- [Web directory access](https://github.com/webmin/usermin/blob/master/htaccess-htpasswd/module.info.cs): `htaccess-htpasswd/module.info.cs`
- [Apache settings](https://github.com/webmin/usermin/blob/master/htaccess/module.info.cs): `htaccess/module.info.cs`
- [Tunnels](https://github.com/webmin/usermin/blob/master/tunnel/module.info.cs): `tunnel/module.info.cs`
- [SSH](https://github.com/webmin/usermin/blob/master/ssh/module.info.cs): `ssh/module.info.cs`
- [GnuPG](https://github.com/webmin/usermin/blob/master/gnupg/module.info.cs): `gnupg/module.info.cs`
- [Links](https://github.com/webmin/usermin/blob/master/link/module.info.cs): `link/module.info.cs`
- [Manual pages](https://github.com/webmin/usermin/blob/master/man/module.info.cs): `man/module.info.cs`
- [Login message](https://github.com/webmin/usermin/blob/master/motd/module.info.cs): `motd/module.info.cs`
- [User plan](https://github.com/webmin/usermin/blob/master/plan/module.info.cs): `plan/module.info.cs`
- [Login scripts](https://github.com/webmin/usermin/blob/master/cshrc/module.info.cs): `cshrc/module.info.cs`

### System tools

- [One-time jobs](https://github.com/webmin/usermin/blob/master/at/module.info.cs): `at/module.info.cs`
- [Scheduled jobs](https://github.com/webmin/usermin/blob/master/cron/module.info.cs): `cron/module.info.cs`
- [Schedules](https://github.com/webmin/usermin/blob/master/schedule/module.info.cs): `schedule/module.info.cs`
- [Disk quotas](https://github.com/webmin/usermin/blob/master/quota/module.info.cs): `quota/module.info.cs`
- [Mount filesystems](https://github.com/webmin/usermin/blob/master/usermount/module.info.cs): `usermount/module.info.cs`
- [Processes](https://github.com/webmin/usermin/blob/master/proc/module.info.cs): `proc/module.info.cs`
- [Commands](https://github.com/webmin/usermin/blob/master/commands/module.info.cs): `commands/module.info.cs`
- [File transfer](https://github.com/webmin/usermin/blob/master/updown/module.info.cs): `updown/module.info.cs`
- [MySQL](https://github.com/webmin/usermin/blob/master/mysql/module.info.cs): `mysql/module.info.cs`
- [PostgreSQL](https://github.com/webmin/usermin/blob/master/postgresql/module.info.cs): `postgresql/module.info.cs`

### Terminal

- [Shell](https://github.com/webmin/usermin/blob/master/shell/module.info.cs): `shell/module.info.cs`

### Other components

- **User**

## Connections

- User → Mailbox: uses
- User → Fetchmail: uses
- User → Mail forwarding: uses
- User → LDAP forwarding: uses
- User → Procmail: uses
- User → Spam controls: uses
- User → SpamAssassin: uses
- User → Mailcap: uses
- User → Password change: uses
- User → User details: uses
- User → Language: uses
- User → Theme: uses
- User → One-time jobs: uses
- User → Scheduled jobs: uses
- User → Schedules: uses
- User → Disk quotas: uses
- User → Mount filesystems: uses
- User → Processes: uses
- User → Commands: uses
- User → File transfer: uses
- User → MySQL: uses
- User → PostgreSQL: uses
- User → Web directory access: uses
- User → Apache settings: uses
- User → Tunnels: uses
- User → SSH: uses
- User → GnuPG: uses
- User → Links: uses
- User → Manual pages: uses
- User → Login message: uses
- User → User plan: uses
- User → Login scripts: uses
- User → Shell: uses
