summaryrefslogtreecommitdiffstats
path: root/README.md
blob: 0977988ce5d0b0961676adc1805b7decedc692d4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# 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://www.virebent.art/blog/)

---

## Features

- Multi-account IMAP/SMTP (STARTTLS, port 143/587)
- **Mail2news via Tor** — post to Usenet through a `.onion` SMTP gateway, no IP exposed
- **YubiKey PIV Ed25519 signatures** — automatic signing with hardware key (PGP-like clearsign format)
- F7/F9 macro → interactive post script (newsgroup, subject, editor, review, send)
- Ephemeral `.invalid` From address
- No IMAP for the mail2news account — send-only

---

## Requirements

| Package    | Purpose                       |
|------------|-------------------------------|
| `neomutt`  | MUA                           |
| `tor`      | Tor daemon (127.0.0.1:9050)   |
| `torsocks` | Tor proxy wrapper             |
| `swaks`    | SMTP test/send tool           |
| `vim`      | Message editor                |
| `yubisigner-cli` | YubiKey PIV signing (optional) |

On Arch:
```bash
pacman -S neomutt tor torsocks swaks
```

On Debian/Ubuntu:
```bash
apt install neomutt tor torsocks swaks
```

### YubiKey signing (optional)

For automatic post signing with YubiKey PIV Ed25519:

1. Install [yubisigner](https://github.com/Ch1ffr3punk/yubisigner) dependencies (Go, piv-go, etc.)
2. Build `yubisigner-cli` wrapper (CLI version of yubisigner GUI)
3. Configure YubiKey PIV slot 9c with Ed25519 key
4. Install `vim-yubisigner` wrapper script

The mail2news account is pre-configured to use `vim-yubisigner` as editor, which automatically signs messages with YubiKey after editing.

---

## 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@qee4i7sags6phsvb2yodwecfj7noimfhhalsjktsvikrwotxzis3raad.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@qee4i7sags6phsvb2yodwecfj7noimfhhalsjktsvikrwotxzis3raad.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. No registration required.

```
SMTP/mail2news onion:
qee4i7sags6phsvb2yodwecfj7noimfhhalsjktsvikrwotxzis3raad.onion:25
```