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
| | =head1 NAME
public-inbox-edit - destructively edit messages in a public inbox
=head1 SYNOPSIS
public-inbox-edit -m MESSAGE-ID --all|INBOX_DIR
public-inbox-edit -F RAW_FILE --all|INBOX_DIR [.. INBOX_DIR]
=head1 DESCRIPTION
public-inbox-edit allows editing messages in a given inbox
to remove sensitive information. It is only intended as a
last resort, as it will cause discontiguous git history and
draw more attention to the sensitive data in mirrors.
=head1 OPTIONS
=over
=item --all
Edit the message in all inboxes configured in ~/.public-inbox/config.
This is an alternative to specifying individual inboxes directories
on the command-line.
=item -m MESSAGE-ID
Edits the message corresponding to the given C<MESSAGE-ID>.
If the C<MESSAGE-ID> is ambiguous, C<--force> or using the
C<--file> of the original will be required.
=item -F FILE
Edits the message corresponding to the Message-ID: header
and content given in C<FILE>. This requires the unmodified
raw message, and the contents of C<FILE> will not itself
be modified. This is useful if a Message-ID is ambiguous
due to filtering/munging rules or other edits.
=item --force
Forcibly perform the edit even if Message-ID is ambiguous.
=item --raw
Do not perform "From " line escaping. By default, this
generates a mboxrd variant file to detect unpurged messages
in the new mbox. This makes sense if your configured
C<publicinbox.mailEditor> is a regular editor and not
something like C<mutt -f>
=back
=head1 CONFIGURATION
=over 8
=item publicinbox.mailEditor
The command to perform the edit with. An example of this would be
C<mutt -f>, and the user would then use the facilities in L<mutt(1)>
to edit the mail. This is useful for editing attachments or
Base64-encoded emails which are more difficult to edit with a
normal editor (configured via C<GIT_EDITOR>, C<VISUAL> or C<EDITOR>).
Default: none
=back
=head1 ENVIRONMENT
=over 8
=item GIT_EDITOR / VISUAL / EDITOR
=for comment MAIL_EDITOR is undocumented (unstable, don't want naming conflicts)
public-inbox-edit will fall back to using one of these variables
(in that order) if C<publicinbox.mailEditor> is unset.
=item PI_CONFIG
The default config file, normally "~/.public-inbox/config".
See L<public-inbox-config(5)>
=back
=head1 LIMITATIONS
Only L<v2|public-inbox-v2-format(5)> repositories are supported.
This is safe to run while normal inbox writing tools
(L<public-inbox-mda(1)>, L<public-inbox-watch(1)>,
L<public-inbox-learn(1)>) are active.
Running this in parallel with L<public-inbox-xcpdb(1)> or
C<"public-inbox-index --reindex"> can lead to errors or
edited data remaining indexed.
Incremental L<public-inbox-index(1)> (without C<--reindex>)
is fine.
Keep in mind this is a last resort, as it will be disruptive
to anyone using L<git(1)> to mirror the inbox being edited.
=head1 CONTACT
Feedback welcome via plain-text mail to L<mailto:meta@public-inbox.org>
The mail archives are hosted at L<https://public-inbox.org/meta/> and
L<http://4uok3hntl7oi7b4uf4rtfwefqeexfzil2w6kgk2jn5z2f764irre7byd.onion/meta/>
=head1 COPYRIGHT
Copyright 2019-2021 all contributors L<mailto:meta@public-inbox.org>
License: AGPL-3.0+ L<https://www.gnu.org/licenses/agpl-3.0.txt>
=head1 SEE ALSO
L<public-inbox-purge(1)>
|