Neomutt on OpenBSD ================== I setup neomutt on my NetBSD Nuc; however, I did not write down what I did. We are moving and packing all the non-essentials. Dang! I packed my Nuc **and** my OpenBSD desktop. I am using my Lenovo X1 Carbon running OpenBSD. I want to use neomutt on my laptop. With the help of chatGPT, this is what I did. My layout: .. code-block:: bash ~/.muttrc ~/.mailcap ~/.mutt/ ├── colors ├── mailboxes ├── signature └── gmail-password.gpg 1. ~/.muttrc -------------- .. collapse:: .muttrc .. code-block:: bash # Mutt Configuration # ============================================================ # ------------------------------------------------------------ # Identity # ------------------------------------------------------------ set from = "xxxxxxxxxx@gmail.com" set realname = "Ron Georgia" # ------------------------------------------------------------ # Gmail IMAP # ------------------------------------------------------------ set imap_user = "xxxxxxxxxx@gmail.com" set folder = "imaps://imap.gmail.com:993" set spoolfile = "+INBOX" set record = "+[Gmail]/Sent Mail" set postponed = "+[Gmail]/Drafts" set trash = "+[Gmail]/Trash" # ------------------------------------------------------------ # Gmail SMTP # ------------------------------------------------------------ set smtp_url = "smtps://xxxxxxxxxx@gmail.com@smtp.gmail.com:465/" # Automatic authentication selection gave: # No authenticators available # # Explicit LOGIN works with this NetBSD/NeoMutt installation. set smtp_authenticators = "login" # ------------------------------------------------------------ # Credentials # ------------------------------------------------------------ # Decrypt Gmail App Password using GPG. source "gpg -dq ~/.mutt/gmail-password.gpg |" # ------------------------------------------------------------ # SSL/TLS # ------------------------------------------------------------ set ssl_force_tls = yes # ------------------------------------------------------------ # Message cache # ------------------------------------------------------------ set header_cache = "~/.cache/mutt/headers" set message_cachedir = "~/.cache/mutt/bodies" # ------------------------------------------------------------ # General behavior # ------------------------------------------------------------ set move = no set delete = yes set confirmappend = no set sort = "reverse-date" # ------------------------------------------------------------ # Editor # ------------------------------------------------------------ set editor = "nvim" # ------------------------------------------------------------ # Signature # ------------------------------------------------------------ set signature = "~/.mutt/signature" # ------------------------------------------------------------ # MIME / HTML / Attachments # ------------------------------------------------------------ set mailcap_path = "~/.mailcap" # NOTE: # NeoMutt 20260616 on this NetBSD installation uses the # underscore forms, NOT auto-view / alternative-order. auto_view text/html alternative_order text/plain text/html # ------------------------------------------------------------ # Gmail Mailboxes / Labels # ------------------------------------------------------------ source ~/.mutt/mailboxes # ------------------------------------------------------------ # Sidebar # ------------------------------------------------------------ set sidebar_visible = yes set sidebar_width = 25 set sidebar_short_path = yes set sidebar_folder_indent = yes set sidebar_indent_string = " " set mail_check_stats set mail_check_stats_interval = 60 # %D = descriptive mailbox name # %N = unread messages # %S = total messages set sidebar_format = "%D%* %?N?%N/?%S" # Toggle sidebar bind index,pager B sidebar-toggle-visible # Vim-style sidebar navigation bind index,pager K sidebar-prev bind index,pager J sidebar-next bind index,pager L sidebar-open # ------------------------------------------------------------ # Colors # ------------------------------------------------------------ source ~/.mutt/color 2. ~/.mutt/mailboxes ----------------------- This sets up my Gmail Mailboxes in a separate file. This removes clutter from the main `.muttrc` file, which is important to me. .. code-block:: bash # ============================================================ # Gmail Mailboxes # ============================================================ # Gmail system folders mailboxes -label "Inbox" "+INBOX" mailboxes -label "All Mail" "+[Gmail]/All Mail" mailboxes -label "Drafts" "+[Gmail]/Drafts" mailboxes -label "Sent" "+[Gmail]/Sent Mail" mailboxes -label "Starred" "+[Gmail]/Starred" mailboxes -label "Trash" "+[Gmail]/Trash" # Optional mailboxes -label "Important" "+[Gmail]/Important" mailboxes -label "Spam" "+[Gmail]/Spam" To see the names Gmail is advertising through IMAP, inside neomutt: `c` 3. ~/.mutt/colors ------------------------- Yes, I like color. Personally, I feel it brings a little warmth to a very sterile terminal. .. collapse:: colors .. code-block:: bash # ============================================================ # NeoMutt Colors # ============================================================ # General color normal white default color index white default color status black cyan color indicator black yellow color error red default color message green default # ------------------------------------------------------------ # Headers # ------------------------------------------------------------ color hdrdefault cyan default color header yellow default "^Subject:" color header green default "^From:" color header cyan default "^To:" # ------------------------------------------------------------ # Quoted text # ------------------------------------------------------------ color quoted cyan default color quoted1 green default color quoted2 yellow default color quoted3 magenta default # ------------------------------------------------------------ # Signature # ------------------------------------------------------------ color signature blue default # ------------------------------------------------------------ # URLs and email addresses # ------------------------------------------------------------ color body cyan default "(https?|ftp)://[^ ]+" color body green default "[-a-z_0-9.%$]+@[-a-z_0-9.]+" # ------------------------------------------------------------ # Sidebar # ------------------------------------------------------------ color sidebar_background default default color sidebar_ordinary white default color sidebar_new green default color sidebar_flagged yellow default color sidebar_indicator black cyan color sidebar_highlight black yellow 4. ~/.mailcap ------------- The `.mailcap` file handles HTML mail and image/PDF attachments. When reading a message containing an embedded image: `v` `?` opens the MIME/attachment list. Select the image and use: `m` Invoke the mailcap viewer. For example: image/jpeg → feh image/png → feh PDF → mupdf .. code-block:: bash # ============================================================ # NeoMutt Mailcap # ============================================================ # HTML email text/html; lynx -dump %s; copiousoutput # Images image/jpeg; feh %s image/png; feh %s image/gif; feh %s image/webp; feh %s # PDF application/pdf; mupdf %s 5. ~/.mutt/signature --------------------- For example: -- Your Name your_email@gmail.com "clever saying" 6. Encrypted Gmail credentials -------------------------------- The unencrypted temporary file looks like this: set imap_pass = "YOUR_16_CHARACTER_GOOGLE_APP_PASSWORD" set smtp_pass = "YOUR_16_CHARACTER_GOOGLE_APP_PASSWORD" For example, initially create: nvim ~/.mutt/gmail-password Then encrypt it: gpg -c ~/.mutt/gmail-password That creates: ~/.mutt/gmail-password.gpg Then remove the plaintext version: rm ~/.mutt/gmail-password Your .muttrc decrypts it at runtime with: source "gpg -dq ~/.mutt/gmail-password.gpg | " Now my Google App Password never needs to reside unencrypted in `.muttrc`. 7. Create cache directories ---------------------------- Neomutt uses these: mkdir -p ~/.cache/mutt/headers mkdir -p ~/.cache/mutt/bodies I want to protect my configuration directory as well: chmod 700 ~/.mutt chmod 600 ~/.muttrc chmod 600 ~/.mutt/mailboxes chmod 600 ~/.mutt/colors chmod 600 ~/.mutt/signature chmod 600 ~/.mutt/gmail-password.gpg The permissions on mailboxes, colors, and signature don't strictly need to be 600, but there's no harm in keeping the whole configuration private. Conceptual Summary ------------------- Chat provided a cool ASCII conceptual diagram, which I like. .. code-block:: bash ┌─────────────────────┐ │ ~/.muttrc │ │ │ │ Main configuration │ └─────────┬───────────┘ │ ┌────────────────┼──────────────────┐ │ │ │ ▼ ▼ ▼ ~/.mutt/colors ~/.mutt/mailboxes ~/.mailcap │ │ │ appearance Gmail labels MIME viewers │ ┌───────┼───────┐ ▼ ▼ ▼ lynx feh mupdf ~/.mutt/gmail-password.gpg │ ▼ GPG decrypts │ ┌──────────┴──────────┐ ▼ ▼ imap_pass smtp_pass │ │ ▼ ▼ imap.gmail.com smtp.gmail.com