2026-08-12 21:14:19 +01:00
{{define "title"}}Mailboxes - Email Server Management{{end}}
{{define "page_title"}}Mailbox Management{{end}}
{{define "content"}}
< div class = "d-flex justify-content-between align-items-center mb-4" >
< h2 >< i class = "bi bi-inbox me-2" ></ i > Mailboxes</ h2 >
< a href = "/pymta-manager/mailboxes/add" class = "btn btn-primary" >< i class = "bi bi-mailbox me-2" ></ i > Add Mailbox</ a >
</ div >
2026-08-13 08:07:19 +01:00
< div class = "alert alert-info" >
< i class = "bi bi-info-circle me-2" ></ i > Mailbox owners manage their own password, MFA, and IMAP/SMTP app passwords at
< a href = "/webmail/login" target = "_blank" class = "alert-link" > /webmail/login</ a > — using their mailbox email and password, not an admin account.
</ div >
2026-08-12 21:14:19 +01:00
< div class = "card" >
< div class = "card-header" >< h5 class = "mb-0" >< i class = "bi bi-list-ul me-2" ></ i > All Mailboxes</ h5 ></ div >
< div class = "card-body p-0" >
{{if .mailboxes}}
< div class = "table-responsive" >
< table class = "table table-dark table-hover mb-0" >
< thead >< tr >< th > Email</ th >< th > Domain</ th >< th > Status</ th >< th > Storage</ th >< th > Created</ th >< th > Actions</ th ></ tr ></ thead >
< tbody >
{{range .mailboxes}}
{{$mailbox := index . 0}}{{$extra := index . 1}}
< tr >
< td >< div class = "fw-bold" > {{$mailbox.Email}}</ div ></ td >
< td >< span class = "badge bg-secondary" > {{$extra.domain_name}}</ span ></ td >
< td >
{{if $mailbox.IsActive}}< span class = "badge bg-success" >< i class = "bi bi-check-circle me-1" ></ i > Active</ span >
{{else}}< span class = "badge bg-danger" >< i class = "bi bi-x-circle me-1" ></ i > Inactive</ span > {{end}}
</ td >
< td >
< small class = "text-muted" > {{filesize $mailbox.UsedBytes}} / {{filesize $mailbox.QuotaBytes}}</ small >
{{if ge $extra.pct_full 90.0}}
< span class = "badge bg-danger ms-1" >< i class = "bi bi-exclamation-octagon me-1" ></ i > {{printf "%.0f" $extra.pct_full}}% full</ span >
{{else if ge $extra.pct_full 75.0}}
< span class = "badge bg-warning text-dark ms-1" >< i class = "bi bi-exclamation-triangle me-1" ></ i > {{printf "%.0f" $extra.pct_full}}% full</ span >
{{end}}
</ td >
< td >< small class = "text-muted" > {{strftime "%Y-%m-%d %H:%M" $mailbox.CreatedAt}}</ small ></ td >
< td >
< div class = "btn-group" role = "group" >
< a href = "/pymta-manager/mailboxes/{{$mailbox.ID}}/apppasswords" class = "btn btn-outline-secondary btn-sm" title = "App Passwords" >< i class = "bi bi-key" ></ i ></ a >
< a href = "/pymta-manager/mailboxes/{{$mailbox.ID}}/aliases" class = "btn btn-outline-secondary btn-sm" title = "Aliases" >< i class = "bi bi-signpost-split" ></ i ></ a >
< a href = "/pymta-manager/mailboxes/{{$mailbox.ID}}/edit" class = "btn btn-outline-primary btn-sm" title = "Edit Mailbox" >< i class = "bi bi-pencil" ></ i ></ a >
2026-08-13 08:07:19 +01:00
< form method = "post" action = "/pymta-manager/mailboxes/{{$mailbox.ID}}/reset_mfa" class = "d-inline" >
< button type = "submit" class = "btn btn-outline-warning btn-sm" data-confirm = "Reset MFA for {{$mailbox.Email}}? They will need to re-enroll an authenticator app or passkey." title = "Reset MFA" >< i class = "bi bi-shield-x" ></ i ></ button >
</ form >
2026-08-12 21:14:19 +01:00
{{if $mailbox.IsActive}}
< form method = "post" action = "/pymta-manager/mailboxes/{{$mailbox.ID}}/delete" class = "d-inline" >
< button type = "submit" class = "btn btn-outline-warning btn-sm" title = "Disable Mailbox" data-confirm = "Disable mailbox {{$mailbox.Email}}?" >< i class = "bi bi-pause-circle" ></ i ></ button >
</ form >
{{else}}
< form method = "post" action = "/pymta-manager/mailboxes/{{$mailbox.ID}}/enable" class = "d-inline" >
< button type = "submit" class = "btn btn-outline-success btn-sm" title = "Enable Mailbox" data-confirm = "Enable mailbox {{$mailbox.Email}}?" >< i class = "bi bi-play-circle" ></ i ></ button >
</ form >
{{end}}
< form method = "post" action = "/pymta-manager/mailboxes/{{$mailbox.ID}}/remove" class = "d-inline" >
< button type = "submit" class = "btn btn-outline-danger btn-sm" title = "Permanently Remove Mailbox" data-confirm = "Permanently remove mailbox {{$mailbox.Email}} and all its stored mail? This cannot be undone!" >< i class = "bi bi-trash" ></ i ></ button >
</ form >
</ div >
</ td >
</ tr >
{{end}}
</ tbody >
</ table >
</ div >
{{else}}
< div class = "text-center py-5" >
< i class = "bi bi-inbox text-muted" style = "font-size: 4rem;" ></ i >
< h4 class = "text-muted mt-3" > No mailboxes configured</ h4 >
< p class = "text-muted" > Add a mailbox to let a client app (Thunderbird, etc.) receive mail via IMAP</ p >
< a href = "/pymta-manager/mailboxes/add" class = "btn btn-primary" >< i class = "bi bi-mailbox me-2" ></ i > Add Your First Mailbox</ a >
</ div >
{{end}}
</ div >
</ div >
{{end}}