upcli.py
up(...) -> None
Provision the mail server end-to-end: SSH keypair, Hetzner VM, Cloudflare DNS, mail stack install with TLS.
destroycli.py
destroy(...) -> None
Tear down the mail server and remove its Cloudflare DNS records.
addusercli.py
adduser(...) -> None
Create a new mailbox user on the remote server.
statuscli.py
status(...) -> None
Show mail server status, connectivity checks, and current configuration.
synccli.py
sync(...) -> None
Sync a local mail client (aerc or Thunderbird) with the server.
sync_aerccli.py
sync_aerc(...) -> None
Configure the aerc mail client with server accounts.
sync_thunderbirdcli.py
sync_thunderbird(...) -> None
Configure Thunderbird with server accounts.
list_inboxescli.py
list_inboxes(...) -> None
List all mailboxes present on the server.
create_mailboxcli.py
create_mailbox(...) -> None
Create a new mailbox on the server.
delete_mailboxcli.py
delete_mailbox(...) -> None
Delete a mailbox from the server.
seedcli.py
seed(...) -> None
Populate the server with default mailboxes and users.
enable_autocreatecli.py
enable_autocreate(...) -> None
Enable automatic mailbox creation for new users.
backupcli.py
backup(...) -> None
Back up mail server data to a Hetzner StorageBox.
sshcli.py
ssh(...) -> None
Open an interactive SSH session to the mail server.
save_keypairkeys.py
save_keypair(directory: Path, name: str = 'ign8mail') -> tuple[Path, Path]
Generate and save an RSA keypair for SSH access.
generate_rsa_keypairkeys.py
generate_rsa_keypair(bits: int = 4096) -> tuple[str, str]
Generate an RSA keypair as PEM-formatted strings.
configure_accountthunderbird.py
configure_account(profile_dir: Path, email: str, display_name: str, mail_host: str) -> None
Configure a Thunderbird mail account inside a profile directory.
find_profilethunderbird.py
find_profile() -> Path | None
Locate the local Thunderbird profile directory.