Configuration file location: ~/.config/himalaya/config.toml
[accounts.default] email = "user@example.com" display-name = "Your Name" default = true # IMAP backend for reading emails backend.type = "imap" backend.host = "imap.example.com" backend.port = 993 backend.encryption.type = "tls" backend.login = "user@example.com" backend.auth.type = "password" backend.auth.raw = "your-password" # SMTP backend for sending emails message.send.backend.type = "smtp" message.send.backend.host = "smtp.example.com" message.send.backend.port = 587 message.send.backend.encryption.type = "start-tls" message.send.backend.login = "user@example.com" message.send.backend.auth.type = "password" message.send.backend.auth.raw = "your-password" # Folder aliases — required whenever server folder names differ # from himalaya's canonical names. See "Folder Aliases" below. folder.aliases.inbox = "INBOX" folder.aliases.sent = "Sent" folder.aliases.drafts = "Drafts" folder.aliases.trash = "Trash"
backend.auth.raw = "your-password"
backend.auth.cmd = "pass show email/imap" # backend.auth.cmd = "security find-generic-password -a user@example.com -s imap -w"
backend.auth.keyring = "imap-example"
Then run himalaya account configure <account> to store the password.
[accounts.gmail] email = "you@gmail.com" display-name = "Your Name" default = true backend.type = "imap" backend.host = "imap.gmail.com" backend.port = 993 backend.encryption.type = "tls" backend.login = "you@gmail.com" backend.auth.type = "password" backend.auth.cmd = "pass show google/app-password" message.send.backend.type = "smtp" message.send.backend.host = "smtp.gmail.com" message.send.backend.port = 587 message.send.backend.encryption.type = "start-tls" message.send.backend.login = "you@gmail.com" message.send.backend.auth.type = "password" message.send.backend.auth.cmd = "pass show google/app-password" # Gmail folder mapping. Without these, save-to-Sent fails after # SMTP delivery succeeds (Gmail's Sent folder is `[Gmail]/Sent Mail`, # not `Sent`), and `himalaya message send` exits non-zero. Any # caller that retries on that error will re-run SMTP — duplicate # emails to recipients. Always include this block for Gmail. folder.aliases.inbox = "INBOX" folder.aliases.sent = "[Gmail]/Sent Mail" folder.aliases.drafts = "[Gmail]/Drafts" folder.aliases.trash = "[Gmail]/Trash"
Note: Gmail requires an App Password if 2FA is enabled.
[accounts.icloud] email = "you@icloud.com" display-name = "Your Name" backend.type = "imap" backend.host = "imap.mail.me.com" backend.port = 993 backend.encryption.type = "tls" backend.login = "you@icloud.com" backend.auth.type = "password" backend.auth.cmd = "pass show icloud/app-password" message.send.backend.type = "smtp" message.send.backend.host = "smtp.mail.me.com" message.send.backend.port = 587 message.send.backend.encryption.type = "start-tls" message.send.backend.login = "you@icloud.com" message.send.backend.auth.type = "password" message.send.backend.auth.cmd = "pass show icloud/app-password"
Note: Generate an app-specific password at appleid.apple.com
Map himalaya's canonical folder names (inbox, sent, drafts, trash) to whatever the server actually calls them. Use the v1.2.0 folder.aliases.X syntax (plural, dotted keys, directly under [accounts.NAME]):
[accounts.default] # ... other account config ... folder.aliases.inbox = "INBOX" folder.aliases.sent = "Sent" folder.aliases.drafts = "Drafts" folder.aliases.trash = "Trash"
The equivalent TOML sub-section form also works in v1.2.0:
[accounts.default.folder.aliases] inbox = "INBOX" sent = "Sent" drafts = "Drafts" trash = "Trash"
Don't use the singular
aliasform. Pre-v1.2.0 docs showed[accounts.NAME.folder.alias](singular). v1.2.0 silently ignores that sub-section — TOML parses without error, but the alias resolver never reads it. Every lookup then falls through to the canonical name. On Gmail (wheresentis actually[Gmail]/Sent Mail) this means save-to-Sent fails after SMTP delivery succeeds, andhimalaya message sendexits non-zero. Any caller (agent, script, user) that retries on that error code will re-run the send — including SMTP — producing duplicate emails to recipients. Always usefolder.aliases.X(plural).
[accounts.personal] email = "personal@example.com" default = true # ... backend config ... [accounts.work] email = "work@company.com" # ... backend config ...
Switch accounts with --account:
himalaya --account work envelope list
[accounts.local] email = "user@example.com" backend.type = "notmuch" backend.db-path = "~/.mail/.notmuch"
backend.auth.type = "oauth2" backend.auth.client-id = "your-client-id" backend.auth.client-secret.cmd = "pass show oauth/client-secret" backend.auth.access-token.cmd = "pass show oauth/access-token" backend.auth.refresh-token.cmd = "pass show oauth/refresh-token" backend.auth.auth-url = "https://provider.com/oauth/authorize" backend.auth.token-url = "https://provider.com/oauth/token"
[accounts.default] signature = "Best regards,\nYour Name" signature-delim = "-- \n"
[accounts.default] downloads-dir = "~/Downloads/himalaya"
Set via environment variable:
export EDITOR="vim"