# neomutt-config Security-focused NeoMutt configuration with multi-account support and anonymous Usenet posting via a mail2news gateway over Tor. Full write-up: [Posting to Usenet Anonymously with NeoMutt and Mail2News over Tor](https://virebent.art/blog/neomutt-mail2news.html) --- ## Features - Multi-account IMAP/SMTP (STARTTLS, port 143/587) - **GnuPG support** — PGP signing/encryption for regular email (configured in `neomuttrc.common`) - **Mail2news via Tor** — post to Usenet through a `.onion` SMTP gateway, no IP exposed - **Optional YubiKey PIV Ed25519 signatures** — hardware-backed signing for Usenet posts (alternative to GnuPG) - F7/F9 macro → interactive post script (newsgroup, subject, editor, review, send) - Ephemeral `.invalid` From address for anonymous posting - No IMAP for the mail2news account — send-only --- ## Requirements | Package | Purpose | Required | |------------|-------------------------------|----------| | `neomutt` | MUA | Yes | | `gnupg` | PGP signing/encryption | Yes | | `tor` | Tor daemon (127.0.0.1:9050) | For Usenet posting | | `torsocks` | Tor proxy wrapper | For Usenet posting | | `swaks` | SMTP test/send tool | Optional | | `vim` | Message editor | Yes | | `yubisigner-cli` | YubiKey PIV signing | Optional | On Arch: ```bash pacman -S neomutt gnupg tor torsocks vim ``` On Debian/Ubuntu: ```bash apt install neomutt gnupg tor torsocks vim ``` ### Signing options **Option 1: GnuPG (default, recommended)** GnuPG is pre-configured in `neomuttrc.common`. Set your key ID: ```bash # Edit ~/.config/neomutt/neomuttrc.common and set: set pgp_sign_as = "0xYOURKEYID" set pgp_default_key = "0xYOURKEYID" ``` NeoMutt will prompt for signing/encryption when composing messages. **Option 2: YubiKey PIV Ed25519 (optional, for Usenet posts)** For hardware-backed signatures on Usenet posts via mail2news: 1. Configure YubiKey PIV slot 9c with Ed25519 key (one-time setup) 2. Install [yubisigner-cli](https://git.virebent.art/virebent/yubisigner-cli): ```bash cd ~/bin git clone https://git.virebent.art/virebent/yubisigner-cli cd yubisigner-cli go build -o yubisigner-cli main.go ``` 3. Install signing scripts from this repo: ```bash mkdir -p ~/bin cp scripts/vim-yubisigner ~/bin/ cp scripts/yubisigner-with-pinentry ~/bin/ chmod +x ~/bin/vim-yubisigner ~/bin/yubisigner-with-pinentry ``` The `accounts/mail2news` file is pre-configured to use `vim-yubisigner`. If you don't have YubiKey, edit the file and change: ``` set editor = "vim" ``` **Option 3: No signing** Comment out or remove GnuPG settings from `neomuttrc.common` and use plain vim for mail2news. --- ## Installation ```bash git clone https://git.virebent.art/virebent/neomutt-config cd neomutt-config mkdir -p ~/.config/neomutt/accounts cp neomuttrc.common ~/.config/neomutt/neomuttrc.common cp neomuttrc.tor ~/.config/neomutt/neomuttrc.tor cp colors.mutt ~/.config/neomutt/colors.mutt cp mailcap ~/.config/neomutt/mailcap cp accounts/mail2news ~/.config/neomutt/accounts/mail2news cp scripts/m2n-prompt.sh ~/.config/neomutt/m2n-prompt.sh chmod +x ~/.config/neomutt/m2n-prompt.sh ``` --- ## Mail2news usage Start Tor, then launch NeoMutt through the Tor profile: ```bash torsocks neomutt -F ~/.config/neomutt/neomuttrc.tor ``` Press **F9** from the index or pager. Answer the prompts: ``` Newsgroup(s): misc.test Subject: test post ``` Write your message in the editor, review the draft, send. The post goes to `mail2news@xilb7y4kj6u6qfo45o3yk2kilfv54ffukzei3puonuqlncy7cn2afwyd.onion`, which forwards to the NNTP server and propagates from there. **Posts are automatically signed** with YubiKey PIV Ed25519 in PGP-like clearsign format if `vim-yubisigner` is configured. ### Send directly from the shell (no NeoMutt) ```bash torsocks swaks \ --server qee4i7sags6phsvb2yodwecfj7noimfhhalsjktsvikrwotxzis3raad.onion:25 \ --from nobody@virebent.invalid \ --to mail2news@xilb7y4kj6u6qfo45o3yk2kilfv54ffukzei3puonuqlncy7cn2afwyd.onion \ --header "Newsgroups: misc.test" \ --header "Subject: test post" \ --body "This is a test." ``` --- ## File layout ``` ~/.config/neomutt/ ├── neomuttrc # main profile (clearnet accounts) ├── neomuttrc.common # shared UI/GPG/sidebar settings ├── neomuttrc.tor # Tor profile — sources mail2news account, F9 macro ├── colors.mutt # color theme ├── mailcap # MIME handlers ├── m2n-prompt.sh # mail2news posting script (called by F9) └── accounts/ ├── account1 # example IMAP/SMTP account ├── account2 ├── account3 └── mail2news # send-only, onion SMTP, ephemeral From ``` --- ## Keybindings | Key | Action | |-------|-------------------------| | F2 | Switch to account 1 | | F3 | Switch to account 2 | | F4 | Switch to account 3 | | F9 | Post to Usenet | | B | Toggle sidebar | --- ## Gateway address The mail2news gateway on `virebent.art` accepts unauthenticated SMTP on port 25 and forwards to Peanny NNTP (`peannyjkqwqfynd24p6dszvtchkq7hfkwymi5by5y332wmosy5dwfaqd.onion`) over Tor. Full onion circuit. ```