comparison man/mailcrypt.texi @ 0:376386a54a3c r19-14

Import from CVS: tag r19-14
author cvs
date Mon, 13 Aug 2007 08:45:50 +0200
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:376386a54a3c
1 \input texinfo @c -*-Texinfo-*-
2
3 @c tighten default spacing
4 @c @parskip 5pt plus 1 pt
5 @c @secheadingskip 10pt plus 6pt minus 3pt
6 @c @subsecheadingskip 8pt plus 6pt minus 3pt
7 @c @singlespace
8
9 @c %**start of header
10 @setfilename ../info/mailcrypt.info
11 @settitle @value{TITLE}
12 @setchapternewpage off
13 @c %**end of header
14
15 @syncodeindex ky cp
16 @syncodeindex vr cp
17 @syncodeindex fn cp
18
19 @set TITLE Mailcrypt
20 @set VERSION 3.4
21 @set UPDATED October 10, 1995
22
23 @ifinfo
24
25 This documentation describes Mailcrypt version @value{VERSION}. This
26 documentation was last updated on @value{UPDATED}.
27
28 Copyright 1995 Patrick J. LoPresti
29
30 The Mailcrypt program and this manual are published as free software.
31 You may redistribute and/or modify them under the terms of the GNU
32 General Public License as published by the Free Software Foundation;
33 either version 2, or (at your option) any later version.
34
35 Mailcrypt is distributed in the hope that it will be useful, but WITHOUT
36 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
37 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
38 for more details.
39
40 You should have received a copy of the GNU General Public License along
41 with GNU Emacs; see the file COPYING. If not, write to the Free
42 Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
43
44 @end ifinfo
45
46 @titlepage
47 @title Mailcrypt: An EMACS Interface to PGP
48 @subtitle Version @value{VERSION}
49 @subtitle @value{UPDATED}
50 @author Patrick J. LoPresti <patl@@lcs.mit.edu>
51
52 @c Copyright page
53 @page
54 @vskip 0pt plus 1filll
55 Copyright @copyright{} 1995 Patrick J. LoPresti
56
57 The Mailcrypt program and this documentation are published as free
58 software. You may redistribute and/or modify them under the terms of
59 the GNU General Public License as published by the Free Software
60 Foundation; either version 2, or (at your option) any later version.
61
62 Mailcrypt is distributed in the hope that it will be useful, but WITHOUT
63 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
64 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
65 for more details.
66
67 You should have received a copy of the GNU General Public License along
68 with GNU Emacs; see the file COPYING. If not, write to the Free
69 Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
70
71 @end titlepage
72
73 @ifinfo
74 @node Top, Introduction, (dir), (dir)
75 @top Mailcrypt
76
77 Mailcrypt is an Emacs Lisp package which provides a simple but powerful
78 interface to cryptographic functions for mail and news.
79
80 This documentation describes Mailcrypt version @value{VERSION}. The
81 documentation was last updated on @value{UPDATED}.
82
83 @end ifinfo
84
85 @menu
86 * Introduction:: Read this first.
87 * General Use:: Everyday cryptographic functions.
88 * Remailer Support:: Interface to secure anonymous remailers.
89 * Passphrase Cache:: Letting Mailcrypt remember your passphrase
90 for a while.
91 * Key Fetching:: Automatically retrieving public keys
92 via finger or HTTP.
93 * Miscellaneous Configuration:: Random tweakables.
94 * Tips:: Hints and tricks.
95 * Limitations:: Things Mailcrypt does not do.
96 * References:: Pointers to relevant information.
97 * Credits:: Whom to blame.
98 * Index:: Keys, variables, and functions.
99
100 --- The Detailed Node Listing ---
101
102 Introduction
103
104 * Prerequisites:: Complicated stuff you may have to do.
105 * Installation:: Simple stuff you probably have to do.
106 * Command Overview:: A brief summary of the most common
107 commands.
108
109 Installation
110
111 * Hooking into Rmail::
112 * Hooking into VM::
113 * Hooking into MH-E::
114 * Hooking into Gnus::
115
116 General Use
117
118 * Encrypting:: Encrypting a message to one or more
119 recipients.
120 * Signing:: Clearsigning a message.
121 * Inserting Keys:: Extracting a key from your public key
122 ring and inserting it.
123 * Decrypting:: Decrypting a message to you.
124 * Verifying:: Verifying the signature on a clearsigned
125 message.
126 * Snarfing Keys:: Finding a key in the current message and
127 adding it to your keyring.
128
129 Remailer Support
130
131 * Remailer Introduction:: A little about remailers in general.
132 * Remailer Quick Start:: Getting started quickly.
133 * Remailer Chains:: Creating custom chains of your very own.
134 * Response Blocks:: A way to let people reply to your
135 anonymous messages.
136 * Pseudonyms:: Who do you want to be today?
137 * Remailing Posts:: Posting to USENET anonymously or
138 pseduonymously.
139 * Mixmaster Support:: Remailers for the truly paranoid.
140 * Remailer Security:: Caveats.
141 * Verifiable Pseudonyms:: Giving expression to the voices in your
142 head.
143 * Remailer Tips:: Free advice.
144
145 Key Fetching
146
147 * Keyring Fetch:: Fetching from one or more other
148 keyrings on the local system.
149 * Finger Fetch:: Fetching a key through finger.
150 * HTTP Fetch:: Fetching a key off of the Web.
151
152 Miscellaneous Configuration
153
154 * Alternate Keyring:: Specifying a different file to act
155 like your public keyring.
156 * Comment Field:: Burma
157 Shave
158 * Mode Line:: Changing that "MC-w" and "MC-r" stuff
159 * Key Bindings:: Which keys cause which actions.
160 * Nonstandard Paths:: Useful if your PGP installation is weird.
161
162 References
163
164 * Online Resources:: Recreational reading with a purpose.
165 * Key Servers:: Keepers of the Global Keyring.
166 * Mailing List:: Staying informed while pumping the
167 authors' egos.
168 * Politics:: Anarcho-foobarism.
169 @end menu
170
171 @node Introduction, General Use, Top, Top
172 @chapter Introduction
173
174 Mailcrypt is an Emacs Lisp package which provides a simple but powerful
175 interface to cryptographic functions for mail and news. With Mailcrypt,
176 encryption becomes a seamlessly integrated part of your mail and news
177 handling environment.
178
179 This manual is long because it is complete. All of the information you
180 need to get started is contained in this Introduction alone.
181
182 @menu
183 * Prerequisites:: Complicated stuff you may have to do.
184 * Installation:: Simple stuff you probably have to do.
185 * Command Overview:: A brief summary of the most common
186 commands.
187 @end menu
188
189 @node Prerequisites, Installation, Introduction, Introduction
190 @section Prerequisites
191
192 Mailcrypt requires version 19 of GNU Emacs. Mailcrypt has been tested
193 on a variety of systems under both FSF Emacs and XEmacs.
194
195 Mailcrypt requires Pretty Good (tm) Privacy, usually known as PGP. This
196 document assumes that you have already obtained and installed PGP and
197 that you are familiar with its basic functions. The best way to become
198 familiar with these functions is to read the @cite{PGP User's Guide}, at
199 least Volume I.
200
201 For more information on obtaining and installing PGP, refer to the MIT
202 PGP home page at @file{http://web.mit.edu/network/pgp.html}.
203
204 Although Mailcrypt may be used to process data in arbitrary Emacs
205 buffers, it is most useful in conjunction with other Emacs packages for
206 handling mail and news. Mailcrypt has specialized support for Rmail
207 (@pxref{Rmail, Rmail, Reading Mail with Rmail, emacs, The GNU Emacs
208 Manual}), VM (@pxref{Top, VM, Introduction, vm, The VM User's Manual}),
209 MH-E, and Gnus (@pxref{Top, Gnus, Overview, gnus, The Gnus Manual}).
210 Information on the general use of these packages is beyond the scope of
211 this manual.
212
213 @node Installation, Command Overview, Prerequisites, Introduction
214 @section Installation
215
216 If Mailcrypt is not installed on your system, obtain the latest version
217 from the Mailcrypt home page at
218 @file{http://cag-www.lcs.mit.edu/mailcrypt/} and follow the instructions
219 in the file @file{INSTALL}.
220
221 Next, teach your Emacs how and when to load the Mailcrypt functions and
222 install the Mailcrypt key bindings. Almost all Emacs major modes
223 (including mail and news handling modes) have corresponding "hook"
224 variables which hold functions to be run when the mode is entered. All
225 you have to do is add the Mailcrypt installer functions to the
226 appropriate hooks; then the installer functions will add the Mailcrypt
227 key bindings when the respective mode is entered.
228
229 Specifically, begin by placing the following lines into your
230 @file{.emacs} file (or the system-wide @file{default.el} file):
231
232 @lisp
233 (autoload 'mc-install-write-mode "mailcrypt" nil t)
234 (autoload 'mc-install-read-mode "mailcrypt" nil t)
235 (add-hook 'mail-mode-hook 'mc-install-write-mode)
236 @end lisp
237
238 Then add additional lines for your own mail and news packages as
239 described below.
240
241 @menu
242 * Hooking into Rmail::
243 * Hooking into VM::
244 * Hooking into MH-E::
245 * Hooking into Gnus::
246 @end menu
247
248 @node Hooking into Rmail, Hooking into VM, Installation, Installation
249 @subsection Hooking into Rmail
250
251 To hook Mailcrypt into Rmail, use the following lines:
252
253 @lisp
254 (add-hook 'rmail-mode-hook 'mc-install-read-mode)
255 (add-hook 'rmail-summary-mode-hook 'mc-install-read-mode)
256 @end lisp
257
258 @node Hooking into VM, Hooking into MH-E, Hooking into Rmail, Installation
259 @subsection Hooking into VM
260
261 To hook Mailcrypt into VM, use the following lines:
262
263 @lisp
264 (add-hook 'vm-mode-hook 'mc-install-read-mode)
265 (add-hook 'vm-summary-mode-hook 'mc-install-read-mode)
266 (add-hook 'vm-virtual-mode-hook 'mc-install-read-mode)
267 (add-hook 'vm-mail-mode-hook 'mc-install-write-mode)
268 @end lisp
269
270 @node Hooking into MH-E, Hooking into Gnus, Hooking into VM, Installation
271 @subsection Hooking into MH-E
272
273 To hook Mailcrypt into MH-E, use the following lines:
274
275 @lisp
276 (add-hook 'mh-folder-mode-hook 'mc-install-read-mode)
277 (add-hook 'mh-letter-mode-hook 'mc-install-write-mode)
278 @end lisp
279
280 @node Hooking into Gnus, , Hooking into MH-E, Installation
281 @subsection Hooking into Gnus
282
283 To hook Mailcrypt into Gnus, use the following lines:
284
285 @lisp
286 (add-hook 'gnus-summary-mode-hook 'mc-install-read-mode)
287 (add-hook 'news-reply-mode-hook 'mc-install-write-mode)
288 @end lisp
289
290 @node Command Overview, , Installation, Introduction
291 @section Command Overview
292
293 All Mailcrypt commands are (by default) activated by three-character key
294 sequences which begin with @kbd{C-c /}. The four most common operations
295 are:
296
297 @table @emph
298
299 @item Encrypting a Message
300 @kbd{C-c / e} encrypts a message using the recipient's (or recipients')
301 public key(s). @xref{Encrypting, , Encrypting a Message}.
302
303 @item Decrypting a Message
304 @kbd{C-c / d} decrypts a message using your secret key.
305 @xref{Decrypting, , Decrypting a Message}.
306
307 @item Signing a Message
308 @kbd{C-c / s} clearsigns a message using your secret key.
309 @xref{Signing, , Signing a Message}.
310
311 @item Verifying a Signature
312 @kbd{C-c / v} verifies the signature on a clearsigned message using the
313 sender's public key. @xref{Verifying, , Verifying a Signature}.
314
315 @end table
316
317 These functions and others are documented in detail in the following
318 chapters.
319
320 Any time you are composing or reading mail or news, you can get a
321 summary of the available commands by typing @kbd{C-h m}. If you are
322 running Emacs under X, an even easier way to see the available commands
323 is to access the @code{Mailcrypt} pull-down menu.
324
325 @node General Use, Remailer Support, Introduction, Top
326 @chapter General Use
327
328 @findex mc-read-mode
329 @findex mc-write-mode
330 Mailcrypt works by providing two minor modes for interfacing with
331 cryptographic functions: @code{mc-read-mode} and @code{mc-write-mode}.
332 @code{mc-read-mode} provides key bindings for processing messages which
333 you have received; @code{mc-write-mode} provides key bindings for
334 processing messages which you are about to send. These minor modes will
335 indicate when they are active by placing a characteristic string in the
336 mode line (@pxref{Mode Line}). They will also add a @code{Mailcrypt}
337 pull-down menu to the menu bar.
338
339 @findex mc-install-read-mode
340 @findex mc-install-write-mode
341 The normal installation procedure (@pxref{Installation}) will arrange
342 for the appropriate mode to be active when you read and compose mail and
343 news. But you may want to use Mailcrypt's functions at other times; to
344 do so, you can call @code{mc-install-read-mode} or
345 @code{mc-install-write-mode} directly. For example, if you were editing
346 a file in Text mode and wanted to digitally sign it, you would type
347 @kbd{M-x mc-install-write-mode}, then @kbd{C-c / s} (@pxref{Signing}).
348
349 Once one of the Mailcrypt modes is active, you can get a summary of the
350 available functions by typing @kbd{C-h m} or by examining the
351 @code{Mailcrypt} pull-down menu.
352
353 The description of each function below includes which of the modes has a
354 binding for that function.
355
356 @menu
357 * Encrypting:: Encrypting a message to one or more
358 recipients.
359 * Signing:: Clearsigning a message.
360 * Inserting Keys:: Extracting a key from your public key
361 ring and inserting it.
362 * Decrypting:: Decrypting a message to you.
363 * Verifying:: Verifying the signature on a clearsigned
364 message.
365 * Snarfing Keys:: Finding a key in the current message and
366 adding it to your keyring.
367 @end menu
368
369 @node Encrypting, Signing, General Use, General Use
370 @section Encrypting a Message
371
372 @findex mc-encrypt
373 @kindex C-c / e
374 The function @code{mc-encrypt} will encrypt a message in the current
375 buffer. @code{mc-write-mode} binds this function to @kbd{C-c / e} by
376 default.
377
378 When this function is called, Mailcrypt will prompt you for a
379 comma-separated list of recipients. If called from a mail composition
380 buffer, the recipient list will default to the Email addresses in the
381 @samp{To}, @samp{CC}, and @samp{BCC} lines of the message.
382
383 @vindex mc-encrypt-for-me
384 If you want to be able to decrypt the message yourself, you need to add
385 yourself to the recipient list. If you always want to do so, set the
386 variable @code{mc-encrypt-for-me} to @code{t}. (Note that Mailcrypt
387 overrides the PGP "encrypttoself" flag; use this variable instead.)
388
389 If you provide an empty recipient list, Mailcrypt will ASCII-armor the
390 message without encrypting it.
391
392 @vindex mc-pgp-always-sign
393 Once you have edited the recipient list to your satisfaction, type
394 @kbd{@key{RET}} to accept it. You will then be asked whether you want
395 to sign the message; answer @kbd{y} or @kbd{n}. You can avoid this
396 question by setting the variable @code{mc-pgp-always-sign}: A value of
397 @code{t} means "yes", a value of @code{'never} means "no".
398
399 If you elect to sign the message, Mailcrypt will prompt you for the
400 appropriate passphrase unless it is cached (@pxref{Passphrase Cache}).
401
402 @vindex mc-pre-encryption-hook
403 @vindex mc-post-encryption-hook
404 Mailcrypt will then pass the message to PGP for processing. Mailcrypt
405 will call the functions listed in @code{mc-pre-encryption-hook} and
406 @code{mc-post-encryption-hook} immediately before and after processing,
407 respectively. The encrypted message will then replace the original
408 message in the buffer. You can undo the encryption with the normal
409 Emacs undo command @kbd{C-x u} (@pxref{Undo, Emacs Undo, Undoing
410 Changes, emacs, The GNU Emacs Manual}).
411
412 If an error occurs, Mailcrypt will display an appropriate diagnostic.
413 If you do not have the public key for one of the specified recipients,
414 Mailcrypt will offer to try to fetch it for you (@pxref{Key Fetching}).
415
416 @vindex mc-pgp-user-id
417 The default key for signing is the first one on the secret key ring
418 which matches the string @code{mc-pgp-user-id}; this defaults to
419 @code{(user-login-name)}. Note that this differs from PGP's normal
420 default, which is to use the first of @emph{all} of the secret keys. To
421 mimic PGP's behavior, set this variable to @code{""}.
422
423 If you want to use a secret key other than your default for signing the
424 message, pass a prefix argument to @code{mc-encrypt}. (That is, type
425 @kbd{C-u C-c / e}.) Mailcrypt will prompt for a string and will sign with
426 the first key on your secret keyring which matches that string. It will
427 be assumed that you want to sign the message, so you will not be
428 prompted.
429
430 @node Signing, Inserting Keys, Encrypting, General Use
431 @section Signing a Message
432
433 @findex mc-sign
434 @kindex C-c / s
435 The function @code{mc-sign} will clearsign a message in the current
436 buffer. @code{mc-write-mode} binds this function to @kbd{C-c / s} by
437 default.
438
439 When this function is called, Mailcrypt will prompt you for the
440 appropriate passphrase unless it is cached (@pxref{Passphrase Cache}).
441
442 @vindex mc-pre-signature-hook
443 @vindex mc-post-signature-hook
444 Mailcrypt will then pass the message to PGP for processing. Mailcrypt
445 will call the functions listed in @code{mc-pre-signature-hook} and
446 @code{mc-post-signature-hook} immediately before and after processing,
447 respectively. The signed message will replace the original message in
448 the buffer. @emph{Do not} edit the message further with the signature
449 attached, because the signature would then be incorrect. If you
450 discover you need to edit a message after you have signed it, remove the
451 signature first with the normal Emacs undo command @kbd{C-x u}
452 (@pxref{Undo, Emacs Undo, Undoing Changes, emacs, The GNU Emacs
453 Manual}).
454
455 The variable @code{mc-pgp-user-id} controls which secret key is used for
456 signing; it is described in @ref{Encrypting, , Encrypting a Message}.
457 To use a different secret key, pass a prefix argument to @code{mc-sign}.
458 (That is, type @kbd{C-u C-c / s}.) Mailcrypt will prompt for a string
459 and will sign with the first key on your secret keyring which matches
460 that string.
461
462 @node Inserting Keys, Decrypting, Signing, General Use
463 @section Inserting a Public Key Block
464
465 @findex mc-insert-public-key
466 @kindex C-c / x
467 The function @code{mc-insert-public-key} will extract a key from your
468 public keyring and insert it into the current buffer.
469 @code{mc-write-mode} binds this function to @kbd{C-c / x} by default.
470
471 This function is useful for sending your public key to someone else or
472 for uploading it to the key servers (@pxref{Key Servers}). The inserted
473 key will be the first one on your public key ring which matches the
474 string @code{mc-pgp-user-id} (@pxref{Encrypting, , Encrypting a
475 Message}).
476
477 You may want to insert a different public key instead; for example, you
478 may have signed someone's key and want to send it back to them. To do
479 so, pass a prefix argument to @code{mc-insert-public-key}. (That is,
480 type @kbd{C-u C-c / x}.) You will be prompted for a string; the first key
481 on your public key ring which matches that string will be inserted.
482
483 @node Decrypting, Verifying, Inserting Keys, General Use
484 @section Decrypting a message
485
486 @findex mc-decrypt
487 @kindex C-c / d
488 The function @code{mc-decrypt} will decrypt a message in the current
489 buffer. @code{mc-read-mode} binds this function to @kbd{C-c / d} by
490 default.
491
492 When this function is called, Mailcrypt will prompt you for the
493 appropriate passphrase unless it is cached (@pxref{Passphrase Cache}).
494
495 The encrypted message will then be passed to PGP for processing. If you
496 are not in a mail buffer, the decrypted message will replace the
497 encrypted form. If you are in a mail buffer, you will be prompted
498 whether to do the replacement.
499
500 If you answer @kbd{n}, you will be placed in a new mail reading buffer
501 to view the decrypted message. This new mail reading buffer will have
502 no corresponding disk file; its purpose is to provide you with all of
503 your usual reply and citation functions without requiring you to save
504 the message in decrypted form. Type @kbd{q} to kill this buffer.
505
506 @vindex mc-always-replace
507 You can avoid the question of whether to replace the encrypted message
508 by setting the variable @code{mc-always-replace}. A value of @code{t}
509 means "yes"; a value of @code{'never} means "no".
510
511 If the encrypted message is also signed, PGP will attempt to verify the
512 signature. If the verification fails because you lack the necessary
513 public key, Mailcrypt will offer to fetch it for you (@pxref{Key
514 Fetching}).
515
516 Look in the @code{*MailCrypt*} buffer to see the result of the signature
517 verification.
518
519 @node Verifying, Snarfing Keys, Decrypting, General Use
520 @section Verifying a Signature
521
522 @findex mc-verify
523 @kindex C-c / v
524 The function @code{mc-verify} will verify the cleartext signature on a
525 message in the current buffer. @code{mc-read-mode} binds this function
526 to @kbd{C-c / v} by default.
527
528 When this function is called, Mailcrypt will pass the message to PGP for
529 processing and report whether or not the signature verified.
530
531 If the signature failed to verify because you lack the necessary public
532 key, Mailcrypt will offer to fetch it for you (@pxref{Key Fetching}).
533
534 @node Snarfing Keys, , Verifying, General Use
535 @section Snarfing a Key
536
537 @findex mc-snarf
538 @kindex C-c / a
539 The function @code{mc-snarf} will add to your keyring any keys in the
540 current buffer. @code{mc-read-mode} binds this function to @kbd{C-c / a}
541 by default.
542
543 This function is useful when someone sends you a public key in an Email
544 message.
545
546 @node Remailer Support, Passphrase Cache, General Use, Top
547 @chapter Remailer Support
548 This is a long chapter describing an advanced feature; you
549 may want to skip it on first reading.
550
551 @menu
552 * Remailer Introduction:: A little about remailers in general.
553 * Remailer Quick Start:: Getting started quickly.
554 * Remailer Chains:: Creating custom chains of your very own.
555 * Response Blocks:: A way to let people reply to your
556 anonymous messages.
557 * Pseudonyms:: Who do you want to be today?
558 * Remailing Posts:: Posting to USENET anonymously or
559 pseduonymously.
560 * Mixmaster Support:: Remailers for the truly paranoid.
561 * Remailer Security:: Caveats.
562 * Verifiable Pseudonyms:: Giving expression to the voices in your
563 head.
564 * Remailer Tips:: Free advice.
565 @end menu
566
567 @node Remailer Introduction, Remailer Quick Start, Remailer Support, Remailer Support
568 @section Remailer Introduction
569 There are several anonymous remailer services running on the Internet.
570 These are programs that accept mail, strip off information that would
571 identify the origin of the message, and forward the mail to the
572 designated recipient. This simple scheme alone, however, is insecure if
573 the anonymous remailer becomes compromised (or if the remailer was set
574 up by an untrustworthy party in the first place). Whoever controls the
575 remailer will have access to the identities of senders and recipients.
576
577 One solution to this is to use @emph{chains} of remailers that send
578 encrypted messages. For example, suppose Bill wishes to send a message
579 to Louis using a chain of remailers A, B, and C. He writes the message
580 (possibly encrypting it for Louis), then encrypts the result (including
581 the fact that Louis is the recipient) using a public key supplied by
582 remailer C. Then he encrypts this result using a public key supplied by
583 remailer B. Then he encrypts this result using a public key supplied by
584 A and sends the message to A.
585
586 When A receives the message, it decrypts the message with its key to
587 produce something encrypted for B, learns that the next remailer in the
588 chain is B, strips off the information that the message came from Bill,
589 and sends the message on to B. B then decrypts, learns that the next
590 remailer in the chain is C, strips off the information that the message
591 came from A, and sends the result to C. C then decrypts, learns that
592 the destination is Louis, strips off the information that the message
593 came from B, and sends the result to Louis. With this arrangement, only
594 A knows that the original message came from Bill, and only C knows that
595 the intended recipient is Louis. In general, the sender and recipient
596 can both be known only to someone who has compromised all remailers in
597 the chain.
598
599 If Bill wishes, he can include an encrypted "response block" in his
600 message to Louis, which defines a remailer chain that Louis can use to
601 reply to Bill. Louis can use this chain without knowing who Bill is --
602 only the last remailer in the chain need know the final recipient. Bill
603 can also establish a @emph{pseudonym} for use in signing his anonymous
604 messages.
605
606 Mailcrypt includes facilities for sending messages via remailers, for
607 defining chains of remailers, for generating response blocks, and for
608 using pseudonyms.
609
610 @node Remailer Quick Start, Remailer Chains, Remailer Introduction, Remailer Support
611 @section Remailer Quick Start
612
613 To use Mailcrypt's remailing facilities, you need to configure them
614 first. Begin with the following steps:
615
616 @enumerate
617
618 @item
619 Do @samp{finger remailer-list@@kiwi.cs.berkeley.edu > ~/.remailers}.
620 This will create a Levien-format list of remailers in the file
621 @file{.remailers} in your home directory. Mailcrypt will parse this the
622 first time you access a remailer function.
623
624 @item
625 Look over the @file{.remailers} file and find the ones you want to use.
626
627 @item
628 Add their PGP public keys to your keyring. You can @code{finger
629 pgpkeys@@kiwi.cs.berkeley.edu} for a list of remailer public keys. Note
630 that Mailcrypt @emph{requires} that you have the public keys of all the
631 remailers you want to use, and therefore that the remailers support PGP
632 encryption.
633
634 @end enumerate
635
636 @quotation
637 @emph{Note:} These steps need only be done once, although repeating them
638 from time to time is probably a good idea, since remailers come and go.
639 @end quotation
640
641 Now test the remailer functions. First compose an outgoing Email
642 message (using @kbd{C-x m}, for example) addressed to yourself. Type
643 @kbd{C-c / r}. Choose a remailer; use @kbd{@key{TAB}} to get completion
644 on its name. The buffer will be rewritten for anonymous mailing through
645 that remailer.
646
647 @node Remailer Chains, Response Blocks, Remailer Quick Start, Remailer Support
648 @section Remailer Chains
649
650 @findex mc-remailer-encrypt-for-chain
651 @kindex C-c / r
652 @code{mc-write-mode} binds the function
653 @code{mc-remailer-encrypt-for-chain} to the key @kbd{C-c / r}. This
654 function rewrites the message for a remailer or chain. The resulting
655 buffer is just a new Email message, so it can itself be rewritten for
656 another remailer; this is one way to manually construct a remailer
657 chain.
658
659 Mailcrypt also has powerful facilities for defining automatic chains.
660 We will start with an example. Suppose you have put the following into
661 your @file{.emacs} file:
662
663 @vindex mc-remailer-user-chains
664 @lisp
665 (setq mc-remailer-user-chains
666 '(("Foo" "alumni" "robo")
667 ("Bar" (shuffle-vector ["replay" "flame" "spook"]))
668 ("Baz" "Foo" "Bar" "rahul" "Bar")
669 ("Quux" 4)))
670 @end lisp
671
672 This code defines four chains. The first is named "Foo" and consists of
673 "alumni" and "robo", in that order. The second is named "Bar" and
674 consists of "replay", "flame", and "spook" in some random order (a
675 different order will be chosen each time the chain is used). The third
676 is named "Baz" and consists of 9 remailers: The two from "Foo", followed
677 by a permutation of the three from "Bar", followed by "rahul", followed
678 by another permutation of the three from "Bar". Finally, the fourth is
679 named "Quux" and consists of a random permutation of the four best
680 remailers as ordered in the @file{~/.remailers} file.
681
682 Now whenever you are prompted for a "remailer or chain", the chains
683 "Foo", "Bar", "Baz", and "Quux" will be available, including
684 @kbd{@key{TAB}} completion on their names. By capitalizing their names,
685 you guarantee they will show up near the top of the completion list if
686 you type @kbd{@key{TAB}} on an empty input.
687
688 Now for the gritty details. @code{mc-remailer-user-chains} is a list of
689 chain definitions. A chain definition is a list whose first element is
690 the name (a string) and whose remaining elements form a @dfn{remailer
691 list}. Each element of a remailer list is one of the following:
692
693 @enumerate
694
695 @item
696 A raw remailer structure. This is the base case, but you will probably
697 never want nor need to deal with these directly.
698
699 @item
700 A string naming another remailer chain to be spliced in at this point.
701
702 @item
703 A positive integer N representing a chain to be spliced in at this point
704 and consisting of a random permutation of the top N remailers as ordered
705 in the @file{~/.remailers} file.
706
707 @item
708 An arbitrary Emacs Lisp form, which should return another remailer
709 list which will be spliced in at this point and recursively
710 evaluated. Mmmm, Lisp.
711
712 @end enumerate
713 So, in the example "Bar" above, @code{shuffle-vector} is actually a Lisp
714 primitive which returns a random permutation of the argument vector.
715 (Which brings up a side note: A remailer list can be a vector instead of
716 a list if you like.)
717
718 So where do the definitions for "replay" etc. come from?
719
720 @vindex mc-remailer-internal-chains
721 There is another variable, @code{mc-remailer-internal-chains}, which has
722 the same format as @code{mc-remailer-user-chains}. In fact, the
723 concatenation of the two is always used internally when resolving chains
724 by name. The "internal chains" are normally generated automatically
725 from a Levien-format remailer list, which lives in @file{~/.remailers}
726 by default and is parsed at startup time. The parser creates several
727 chains, each containing a single remailer, and names each chain after
728 the respective remailer.
729
730 Thus "replay" (for example) is actually the name of a @emph{chain} whose
731 single element is the remailer at <remailer@@replay.com>. So "replay"
732 is a valid name of a chain to include in the definition of another
733 chain, as was done above in the definition of "Bar".
734
735 @node Response Blocks, Pseudonyms, Remailer Chains, Remailer Support
736 @section Response Blocks
737
738 @kindex C-c / b
739 Mailcrypt can generate a response block for you. Just type @kbd{C-c / b}
740 in an outgoing mail buffer. That will prompt you for a chain to use,
741 and will insert the response block at point. Note that you can use any
742 chain you want for your response block; it need not be related to the
743 chain you (later) use to remail the message.
744
745 If instead you type @kbd{C-u C-c / b}, you will be dropped into a
746 recursive edit of the innermost part of the response block. This text
747 is what you will see at the top of the message when the response block
748 is used. This text is the only way to identify the response block,
749 since it will be used to mail you through anonymous remailers.
750
751 You probably won't need to use the @kbd{C-u} feature, since by default
752 the response block contains the date, @samp{To} field, and @samp{From}
753 field of the message you are composing. However, if you want your
754 response block to point to a USENET newsgroup instead of your Email
755 address, you may edit the innermost part of the response block to have a
756 @samp{Newsgroups} line instead of a @samp{To} line.
757
758 Inserting a response block also updates the @samp{Reply-to} hashmark
759 header field. So, when your recipient replies to your message, the
760 reply will automatically be addressed properly. This only works if the
761 last remailer in the chain used to encrypt the @emph{message} supports
762 hashmarks (the response block chain doesn't matter). If the last
763 remailer does not support hashmarks, Mailcrypt will generate an error
764 when you try to use the chain.
765
766 Note that you should insert your response block before you encrypt the
767 message for remailing. Also, see @ref{Remailer Security}.
768
769 @node Pseudonyms, Remailing Posts, Response Blocks, Remailer Support
770 @section Pseudonyms
771
772 @kindex C-c / p
773 Mailcrypt supports pseudonyms. Type @kbd{C-c / p} in an outgoing message
774 buffer and you will be prompted for a pseudonym to use. Your pseudonym
775 will show up in the @samp{From} line that the recipient sees. Your
776 pseudonym may either be a complete @samp{From} line (including an Email
777 address), or just a full name (with no Email address). In the latter
778 case, the Email address will automatically be set to <x@@x.x>, an invalid
779 address designed to prevent sendmail from going rewrite-happy.
780
781 If you have one or more pseudonyms which you normally use, and you
782 aren't afraid of revealing them if your account is compromised, you can
783 set up a default list of pseudonyms with lines like the following in
784 your @file{.emacs} file:
785
786 @vindex mc-remailer-pseudonyms
787 @lisp
788 (setq mc-remailer-pseudonyms
789 '("Elvis Presley" "Vanna White" "Charles Manson"))
790 @end lisp
791
792 Then those names will be available for completion when you are
793 prompted for your pseudonym.
794
795 You should insert your pseudonym before you insert a response block, so
796 that the response block will contain the @samp{From} line as well as the
797 @samp{To} line. That way you can tell who you were pretending to be
798 when you get a reply to your message.
799
800 Note: Many remailers do not support pseudonyms. In addition, the Levien
801 format does not (yet) indicate which do and which do not, so Mailcrypt
802 can't warn you when your pseudonym isn't going to work. The only way to
803 be sure is to send yourself a test message, and to try different
804 remailers until you find one or more which work. On the bright side,
805 only the last remailer in the chain needs to provide such support; none
806 of the others matter.
807
808 @node Remailing Posts, Mixmaster Support, Pseudonyms, Remailer Support
809 @section Remailing Posts
810 Mailcrypt knows how to rewrite USENET posts for anonymous or
811 pseudonymous remailing. Just compose your post or followup normally,
812 and use @kbd{C-c / r} to rewrite it for a remailer chain. You don't
813 even need to start your newsreader to make a post; you can just compose
814 a message in mail mode and replace the @samp{To} line with a
815 @samp{Newsgroups} line before doing @kbd{C-c / r}.
816
817 @vindex mc-remailer-preserved-headers
818 Mailcrypt will generate an error if the last remailer in the chain does
819 not have both the @code{post} and @code{hash} (hashmarks) properties.
820 The hashmarks are used to preserve @samp{References} and similar
821 headers, so your anonymous or pseudonymous followups will thread
822 properly. The variable @code{mc-remailer-preserved-headers} controls
823 which headers are preserved when rewriting a message, but you should not
824 need to change it since the default value is reasonable.
825
826 Before rewriting, you can use @kbd{C-c / p} to insert your pseudonym,
827 and @kbd{C-c / b} to insert your response block, just like when
828 composing mail. In this case, the response block will include the
829 @samp{From} line and the @samp{Newsgroups} line (which is the news
830 analogue to the @samp{To} line).
831
832 @node Mixmaster Support, Remailer Security, Remailing Posts, Remailer Support
833 @section Mixmaster Support
834
835 @dfn{Mixmaster} is a new kind of remailer which provides excellent
836 security against traffic analysis and replay attacks. (For more
837 information on these attacks and Mixmaster, see Lance Cottrell's home
838 page at @file{http://www.obscura.com/~loki/}.
839
840 If you do not use Mixmaster, you may skip this section entirely;
841 Mailcrypt's default configuration treats Mixmaster as if it did not
842 exist.
843
844 If you have the Mixmaster executable installed, you can tell Mailcrypt
845 to use it by placing lines like the following into your @file{.emacs}
846 file:
847
848 @vindex mc-mixmaster-path
849 @vindex mc-mixmaster-list-path
850 @lisp
851 (setq mc-mixmaster-path "mixmaster")
852 (setq mc-mixmaster-list-path "/foo/bar/baz/type2.list")
853 @end lisp
854
855 @code{mc-mixmaster-path} is a string representing the Mixmaster
856 executable. @code{mc-mixmaster-list-path} is the complete path to the
857 @code{type2.list} file.
858
859 Once these variables are defined, Mailcrypt will automatically try to
860 use the Mixmaster executable whenever possible. Specifically, when you
861 rewrite a message for a chain, Mailcrypt will find maximal length
862 sub-chains which have the @code{mix} property and will use the Mixmaster
863 executable to rewrite for those sub-chains.
864
865 This allows arbitrary intermingling of Mixmaster and normal (also called
866 @dfn{Type 1}) remailers, but you should note that this is @emph{not
867 recommended}. The recommended procedure is to have a single Mixmaster
868 sub-chain which is most or all of the whole chain.
869
870 There are advantages and disadvantages to having the Mixmaster sub-chain
871 at the end of the whole chain. The primary advantage is that Mixmaster
872 remailers support multiple recipients. The primary disadvantages are
873 that they do not support pseudonyms nor posting.
874
875 So here, as always, it is the last element of the chain which needs to
876 support the special features you want. In general, the remaining
877 elements do not matter, and the superior security of Mixmaster remailers
878 is a good argument for using them for the bulk of your chains.
879
880 @findex mc-demix
881 Mixmaster remailers also have a "Type 1 compatibility mode" which you
882 might want to invoke to use a pseudonym or make a post. You can do this
883 with the function @code{mc-demix}. Here is an example of its use:
884
885 @lisp
886 (setq mc-remailer-user-chains
887 '(("Foo" "vishnu" "spook")
888 ("Bar" "Foo" (mc-demix "replay"))))
889 @end lisp
890
891 This makes "Bar" a chain of three remailers, and guarantees that the
892 last one ("replay") will be used in compatibility mode.
893
894 Note that Mixmaster remailers cannot be used for response blocks.
895 Mailcrypt will ignore the @code{mix} property when generating a response
896 block.
897
898 @node Remailer Security, Verifiable Pseudonyms, Mixmaster Support, Remailer Support
899 @section Remailer Security
900
901 Keep in mind that there is only one person fully qualified to protect
902 your privacy: @emph{you}. You are responsible for obtaining a list of
903 remailers and their public keys; you are responsible for choosing which
904 of them to use and in what order. There are public lists of remailers
905 and keys (the Quick Start section above relies on them), but you pay for
906 the convenience by putting your trust in a single source. This is one
907 reason Mailcrypt does not access these public lists automatically; you
908 need to get into the habit of watching what goes on behind the scenes.
909 You should also try to learn something about the remailers themselves,
910 since you are relying on them to help protect your privacy.
911
912 How many remailers should you include in your chain, and how should
913 you choose them? That depends on whom you perceive as a threat. If
914 the threat is your ex-spouse or your boss, even a single remailer is
915 probably adequate (more won't hurt, but will cost in latency). If the
916 threat is the Church of Scientology, you probably want to use a fair
917 number of remailers across multiple continents. If the threat is a
918 major world government, well, best of luck to you.
919
920 Also, there is a huge difference between chains suitable for regular
921 messages and chains suitable for response blocks. Some remailers don't
922 even keep mail logs (at least, their operators claim they do not), so it
923 may be literally impossible to trace a message back to you after the
924 fact if you chain it through enough remailers. Response blocks, on the
925 other hand, have your identity buried in there @emph{somewhere}. In
926 principle, at least, it is possible to compromise the keys of all the
927 remailers in the chain and decrypt the response block. So you should
928 either use very long and strong chains for your response blocks, avoid
929 using response blocks at all, or only use response blocks which
930 themselves ultimately point to a newsgroup.
931
932 @node Verifiable Pseudonyms, Remailer Tips, Remailer Security, Remailer Support
933 @section Verifiable Pseudonyms
934 Here is a plausible sequence of operations when using the remailer
935 support in Mailcrypt:
936
937 @enumerate
938
939 @item
940 You create a public/private PGP key pair. You give it a User ID which
941 is your pseudonym. You upload the public key to the key servers or
942 otherwise distribute it. (Be aware that anyone who compromises your
943 account can read the IDs on your secret keyring, thus discovering your
944 verifiable pseudonyms.)
945
946 @item
947 You compose an Email message, Email reply, news post, or news followup.
948
949 @item
950 You insert your pseudonym with @kbd{C-c / p}.
951
952 @item
953 (Optional) You insert your response block with @kbd{C-c / b}.
954
955 @item
956 You type @kbd{C-c / s} to sign the message. The @code{mc-sign} function
957 understands pseudonyms.
958
959 @item
960 You type @kbd{C-c / r} to rewrite the message for remailing. (Or use
961 @kbd{C-u C-c / r} to view each step of the rewriting as it happens.)
962
963 @item
964 You type @kbd{C-c C-c} to send the message.
965
966 @end enumerate
967
968 Now the recipient(s), reading your message through mail or news, can
969 verify your pseudonymous signature; thus you have started to create a
970 verifiable pseudonymous identity. If you use it consistently, it will
971 develop a reputation of its own. With Mailcrypt, using a pseudonym is
972 almost as easy as using your real name (and your followups in news
973 will even thread properly). Welcome to the new age of letters@dots{}
974
975 @node Remailer Tips, , Verifiable Pseudonyms, Remailer Support
976 @section Remailer Tips
977
978 This is a collection of tips for using Mailcrypt's remailer support.
979
980 @itemize @bullet
981
982 @item
983 @vindex mc-levien-file-name
984 Read and understand the @file{.remailers} file. If the service at
985 kiwi.cs.berkeley.edu is gone by the time you read this, track down a
986 comparable service elsewhere. (Ask around in
987 @file{news:alt.privacy.anon-server} or, as a last resort,
988 @file{news:alt.security.pgp}.) Check the documentation (@kbd{C-h v})
989 for the variable @code{mc-levien-file-name} for a description of Levien
990 format.
991
992 @item
993 The relevant remailer properties are @code{pgp} (required), @code{hash}
994 (required if you use hashmark headers), and @code{post} (required for
995 posting to USENET). Remailers which do not support PGP won't even show
996 up in the completion list.
997
998 @item
999 The only remailer which needs special properties (e.g., posting,
1000 hashmarks, pseudonym support) is the last one in a chain. Any remailer
1001 can be used at the beginning or in the middle. So if you find a few
1002 remailers which support the feature(s) you require, and you always use
1003 them at the end of your chains, then you can be confident that even the
1004 longest chains will work.
1005
1006 @item
1007 @findex mc-reread-levien-file
1008 If you update your @file{~/.remailers} file, you can reread it with
1009 @kbd{M-x mc-reread-levien-file}.
1010
1011 @item
1012 Remember the natural order of operations. First you compose your
1013 message. Then you insert your pseudonym with @kbd{C-c / p}. Then you
1014 insert your response block with @kbd{C-c / b}. Then you sign (@kbd{C-c /
1015 s}) or sign and encrypt (@kbd{C-c / e}) the message. Then you rewrite it
1016 for a remailer or chain (@kbd{C-c / r}). Then you send it. All but the
1017 first and last two of these are optional. (Well, strictly speaking,
1018 they are all optional, but you get the idea.)
1019
1020 @item
1021 Find and read some of the excellent remailer documentation available on
1022 the Internet. For some good starting points, see @ref{References}.
1023
1024 @end itemize
1025
1026 @node Passphrase Cache, Key Fetching, Remailer Support, Top
1027 @chapter Passphrase Cache
1028
1029 @vindex mc-passwd-timeout
1030 Mailcrypt can remember your passphrase so that you need not type it
1031 repeatedly. It will also "forget" your passphrase if it has not been
1032 used in a while, thus trading some security for some convenience. You
1033 can tune this tradeoff with the variable @code{mc-passwd-timeout}, which
1034 is a duration in seconds from the last time the passphrase was used
1035 until Mailcrypt will forget it. The default value is 60 seconds.
1036
1037 So, for example, to make Mailcrypt remember your passphrase for 10
1038 minutes after each use, you would use the following line in your
1039 @file{.emacs} file:
1040
1041 @lisp
1042 (setq mc-passwd-timeout 600)
1043 @end lisp
1044
1045 A value of @code{nil} or 0 will disable passphrase caching completely.
1046 This provides some increase in security, but be aware that you are
1047 already playing a dangerous game by typing your passphrase at a Lisp
1048 interpreter.
1049
1050 Mailcrypt understands multiple secret keys with distinct passphrases.
1051
1052 @findex mc-deactivate-passwd
1053 @kindex C-c / f
1054 To manually force Mailcrypt to forget your passphrase(s), use the
1055 function @code{mc-deactivate-passwd}. Both @code{mc-read-mode} and
1056 @code{mc-write-mode} bind this function to @kbd{C-c / f} by default.
1057
1058 @quotation
1059 @strong{Warning:} Although Mailcrypt takes pains to overwrite your
1060 passphrase when "forgetting", it cannot prevent the Emacs garbage
1061 collector from possibly leaving copies elsewhere in memory. Also, your
1062 last 100 keystrokes can always be viewed with the function
1063 @code{view-lossage}, normally bound to @kbd{C-h l}. So be sure to type
1064 at least 100 characters after typing your passphrase if you plan to
1065 leave your terminal unattended.
1066 @end quotation
1067
1068 @node Key Fetching, Miscellaneous Configuration, Passphrase Cache, Top
1069 @chapter Key Fetching
1070
1071 @findex mc-pgp-fetch-key
1072 @kindex C-c / k
1073 Mailcrypt knows how to fetch PGP public keys from the key servers
1074 (@pxref{Key Servers}). The function @code{mc-pgp-fetch-key} is bound by
1075 default to @kbd{C-c / k} in both @code{mc-read-mode} and
1076 @code{mc-write-mode}. Additionally, @code{mc-encrypt},
1077 @code{mc-decrypt}, and @code{mc-verify} will offer to call this function
1078 to automatically fetch a desired key. If you call it manually, it will
1079 prompt you for the User ID of the key to fetch.
1080
1081 @vindex mc-pgp-fetch-methods
1082 The variable @code{mc-pgp-fetch-methods} is a list of ways to attempt to
1083 fetch a key. (More precisely, it is a list of functions to be called,
1084 each of which will attempt to fetch the key.) The methods will be tried
1085 in the order listed. The default list is:
1086
1087 @lisp
1088 '(mc-pgp-fetch-from-keyrings
1089 mc-pgp-fetch-from-finger
1090 mc-pgp-fetch-from-http)
1091 @end lisp
1092
1093 For a description of these functions, see the following sections.
1094
1095 If you are not directly on the Internet, you probably want to obtain a
1096 copy of the global public key ring from the keyservers, install it
1097 somewhere under the name @file{public-keys.pgp}, and do:
1098
1099 @lisp
1100 (setq mc-pgp-fetch-methods '(mc-pgp-fetch-from-keyrings))
1101 (setq mc-pgp-fetch-keyring-list '("/blah/blah/blah/public-keys.pgp"))
1102 @end lisp
1103
1104 This will allow you to fetch keys from your local copy of the global key
1105 ring instead of sending requests to the key servers directly
1106 (@pxref{Keyring Fetch}). Alternately, if your organization has a proxy
1107 HTTP server, you can configure Mailcrypt to use that. See @ref{HTTP
1108 Fetch}.
1109
1110 If the key is found, you will be shown the result of running PGP on it
1111 locally. This allows you to inspect the signatures on the key
1112 @emph{relative to your own keyring} before you consent to having it
1113 added. @strong{Inspect the signatures carefully!} Key distribution is
1114 often the Achilles' heel of public key protocols. If you blindly use
1115 keys obtained from the key servers, you are asking for trouble.
1116
1117 All of the methods use @code{mc-pgp-fetch-timeout} as a timeout in
1118 seconds; the default value is 30.
1119
1120 @menu
1121 * Keyring Fetch:: Fetching from one or more other
1122 keyrings on the local system.
1123 * Finger Fetch:: Fetching a key through finger.
1124 * HTTP Fetch:: Fetching a key off of the Web.
1125 @end menu
1126
1127 @node Keyring Fetch, Finger Fetch, Key Fetching, Key Fetching
1128 @section Keyring Fetch
1129
1130 @findex mc-pgp-fetch-from-keyrings
1131 The function @code{mc-pgp-fetch-from-keyrings} will attempt to fetch a
1132 key from a set of keyrings on the locally accessible filesystem. This
1133 is useful if your organization maintains a large common public keyring
1134 whose entire contents you do not wish to duplicate on your own ring. It
1135 is also useful if you download a copy of the global public ring from the
1136 key servers (@pxref{Key Servers}).
1137
1138 @vindex mc-pgp-fetch-keyring-list
1139 The variable @code{mc-pgp-fetch-keyring-list} controls this behavior.
1140 It is a list of file names of public keyrings which this function will
1141 search, in order, when seeking a key. The default value is @code{nil},
1142 meaning this search will always fail.
1143
1144 @node Finger Fetch, HTTP Fetch, Keyring Fetch, Key Fetching
1145 @section Finger Fetch
1146
1147 @findex mc-pgp-fetch-from-finger
1148 The function @code{mc-pgp-fetch-from-finger} will attempt to fetch a key
1149 by fingering an address and parsing the output for a PGP public key
1150 block.
1151
1152 @node HTTP Fetch, , Finger Fetch, Key Fetching
1153 @section HTTP Fetch
1154
1155 @findex mc-pgp-fetch-from-http
1156 The function @code{mc-pgp-fetch-from-http} will attempt to fetch a key
1157 by connecting to a key server (@pxref{Key Servers}) which has a World
1158 Wide Web interface.
1159
1160 @vindex mc-pgp-keyserver-address
1161 @vindex mc-pgp-keyserver-port
1162 @vindex mc-pgp-keyserver-url-template
1163 The variables @code{mc-pgp-keyserver-address},
1164 @code{mc-pgp-keyserver-port}, and @code{mc-pgp-keyserver-url-template}
1165 control the fetching process. The default is to use Brian LaMacchia's
1166 key server at MIT. If this default should stop working, or if you want
1167 to help with network congestion and machine load, you can choose a
1168 different server. As of this writing, any of the following sequences of
1169 Emacs Lisp in your @file{.emacs} file will work; choose one:
1170
1171 @lisp
1172 ;; Key server at MIT (Massachusetts, USA)
1173 ;; This is the default; these lines are only for reference
1174 ;(setq mc-pgp-keyserver-address "pgp.ai.mit.edu")
1175 ;(setq mc-pgp-keyserver-port 80)
1176 ;(setq mc-pgp-keyserver-url-template
1177 ; "/htbin/pks-extract-key.pl?op=get&search=%s")
1178 @end lisp
1179
1180 @lisp
1181 ;; Key server at UPC (Barcelona, Spain)
1182 (setq mc-pgp-keyserver-address "goliat.upc.es")
1183 (setq mc-pgp-keyserver-port 80)
1184 (setq mc-pgp-keyserver-url-template
1185 "/cgi-bin/pks-extract-key.pl?op=get&search=%s")
1186 @end lisp
1187
1188 @lisp
1189 ;; Key server at Cambridge University (Cambridge, England)
1190 (setq mc-pgp-keyserver-address "www.cl.cam.ac.uk")
1191 (setq mc-pgp-keyserver-port 80)
1192 (setq mc-pgp-keyserver-url-template
1193 "/cgi-bin/pks-extract-key.pl?op=get&search=%s")
1194 @end lisp
1195
1196 @lisp
1197 ;; Key server at UIT (Tromso, Norway)
1198 (setq mc-pgp-keyserver-address "www.service.uit.no")
1199 (setq mc-pgp-keyserver-port 80)
1200 (setq mc-pgp-keyserver-url-template
1201 "/cgi-bin/pks-extract-key.pl?op=get&search=%s")
1202 @end lisp
1203
1204 @lisp
1205 ;; Key server at CMU (Pennsylvania, USA)
1206 (setq mc-pgp-keyserver-address "gs211.sp.cs.cmu.edu")
1207 (setq mc-pgp-keyserver-port 80)
1208 (setq mc-pgp-keyserver-url-template "/cgi-bin/pgp-key?pgpid=%s")
1209 @end lisp
1210
1211 If your organization has a firewall, you might not be able to access the
1212 World Wide Web directly. Your organization may have a proxy HTTP server
1213 set up, however. In that case, you should place code like the following
1214 in your @file{.emacs} file. You can use any of the above key servers
1215 instead of the one at MIT, of course.
1216
1217 @lisp
1218 ;; Mailcrypt configuration for accessing key server through HTTP proxy
1219 (setq mc-pgp-keyserver-address "your.proxy.com")
1220 (setq mc-pgp-keyserver-port 13013) ; Your proxy's port
1221 (setq mc-pgp-keyserver-url-template
1222 "http://pgp.ai.mit.edu/htbin/pks-extract-key.pl?op=get&search=%s")
1223 @end lisp
1224
1225 Note that fetching from a key server can be somewhat slow, so be
1226 patient. (At least it beats the tar out of the Email interface.)
1227
1228 @node Miscellaneous Configuration, Tips, Key Fetching, Top
1229 @chapter Miscellaneous Configuration
1230
1231 This chapter documents some additional Mailcrypt configuration options
1232 which could not be naturally described elsewhere.
1233
1234 @menu
1235 * Alternate Keyring:: Specifying a different file to act
1236 like your public keyring.
1237 * Comment Field:: Burma
1238 Shave
1239 * Mode Line:: Changing that "MC-w" and "MC-r" stuff
1240 * Key Bindings:: Which keys cause which actions.
1241 * Nonstandard Paths:: Useful if your PGP installation is weird.
1242 @end menu
1243
1244 @node Alternate Keyring, Comment Field, Miscellaneous Configuration, Miscellaneous Configuration
1245 @section Alternate Keyring
1246
1247 By default, Mailcrypt will use the same public keyring that PGP would
1248 use if executed from the shell.
1249
1250 @vindex mc-pgp-alternate-keyring
1251 You can cause Mailcrypt to use a specific public keyring by setting the
1252 variable @code{mc-pgp-alternate-keyring}. If this variable is set,
1253 Mailcrypt will use that keyring for all functions which would otherwise
1254 have used the default. This includes adding keys, extracting keys,
1255 verifying signatures, and encrypting messages.
1256
1257 This feature might be useful if you maintain multiple keyrings; you can
1258 switch between them by setting this variable. Depending on your tastes,
1259 you might want to configure fetching from a keyring as well
1260 (@pxref{Keyring Fetch}).
1261
1262 @node Comment Field, Mode Line, Alternate Keyring, Miscellaneous Configuration
1263 @section Comment Field
1264
1265 By default, Mailcrypt will supply a "comment" option to PGP, resulting
1266 in output which looks something like this:
1267
1268 @example
1269 ----- BEGIN PGP FOOBAR -----
1270 Version: 2.6.3
1271 Comment: Processed by Mailcrypt @value{VERSION}, an Emacs/PGP interface
1272
1273 @dots{}
1274 ----- END PGP FOOBAR -----
1275 @end example
1276
1277 @vindex mc-pgp-comment
1278 To change the comment to one of your own, set the variable
1279 @code{mc-pgp-comment}. Set it to @code{nil} to use PGP's default, which
1280 is probably either no comment or something defined in @file{config.txt}.
1281
1282 @node Mode Line, Key Bindings, Comment Field, Miscellaneous Configuration
1283 @section Mode Line
1284
1285 @code{mc-read-mode} and @code{mc-write-mode} will each indicate they are
1286 active by placing the string @samp{MC-r} or @samp{MC-w} in the mode
1287 line, respectively.
1288
1289 @vindex mc-read-mode-string
1290 @vindex mc-write-mode-string
1291 You can change these strings by setting the variables
1292 @code{mc-read-mode-string} and @code{mc-write-mode-string}. So, for
1293 example, to get rid of the mode indicators entirely, you might put the
1294 following lines into your @file{.emacs} file:
1295
1296 @lisp
1297 (setq mc-read-mode-string "")
1298 (setq mc-write-mode-string "")
1299 @end lisp
1300
1301 @node Key Bindings, Nonstandard Paths, Mode Line, Miscellaneous Configuration
1302 @section Key Bindings
1303
1304 @vindex mc-read-mode-map
1305 @vindex mc-write-mode-map
1306 The Mailcrypt key bindings are defined by the keymaps
1307 @code{mc-read-mode-map} and @code{mc-write-mode-map}. To change the key
1308 bindings, you just need to set these variables in your @file{.emacs}
1309 file.
1310
1311 For example, if you wanted @kbd{C-c C-m} to be the Mailcrypt prefix
1312 (instead of @kbd{C-c /}) in @code{mc-read-mode}, you would put the
1313 following code in your @file{.emacs} file:
1314
1315 @lisp
1316 (setq mc-read-mode-map (make-sparse-keymap))
1317 (define-key mc-read-mode-map "\C-c\C-mf" 'mc-deactivate-passwd)
1318 (define-key mc-read-mode-map "\C-c\C-md" 'mc-decrypt)
1319 (define-key mc-read-mode-map "\C-c\C-mv" 'mc-verify)
1320 (define-key mc-read-mode-map "\C-c\C-ma" 'mc-snarf)
1321 (define-key mc-read-mode-map "\C-c\C-mk" 'mc-pgp-fetch-key)
1322 @end lisp
1323
1324 For more information on Emacs key bindings, see @ref{Key Bindings, ,
1325 Customizing Key Bindings, emacs, The GNU Emacs Manual}.
1326
1327 @node Nonstandard Paths, , Key Bindings, Miscellaneous Configuration
1328 @section Nonstandard Paths
1329
1330 The information in this section should be unnecessary, but is provided
1331 "just in case".
1332
1333 @vindex mc-pgp-path
1334 Mailcrypt will look for the PGP executable in your standard search path
1335 under the name @file{pgp}. To use a different name (or to provide a
1336 complete path), set the variable @code{mc-pgp-path}.
1337
1338 In order to keep your identities straight, Mailcrypt needs to know where
1339 your secret keyring resides.
1340
1341 Mailcrypt figures this out heuristically by assuming that the file
1342 @file{secring.pgp} is in the same directory as your public key ring. It
1343 determines the location of the latter by doing a dry run of PGP with
1344 @samp{+verbose=1} and parsing the output.
1345
1346 @vindex mc-pgp-keydir
1347 If this heuristic is failing for you, you can manually tell Mailcrypt
1348 where your secret key ring is by setting the variable
1349 @code{mc-pgp-keydir}, like this:
1350
1351 @lisp
1352 (setq mc-pgp-keydir "/users/patl/.pgp/")
1353 @end lisp
1354
1355 Note that the trailing slash is @emph{required}.
1356
1357 If the heuristic fails, please report it as a bug (@pxref{Credits}).
1358
1359 Note that if you have changed the default location of your secret
1360 keyring, Mailcrypt will be unable to locate it. You can work around
1361 this by either setting @code{mc-pgp-keydir}, or by making a symbolic
1362 link to your secret keyring from @file{secring.pgp} in your default
1363 public keyring directory.
1364
1365 @node Tips, Limitations, Miscellaneous Configuration, Top
1366 @chapter Tips
1367
1368 Here are some random tips.
1369
1370 @itemize @bullet
1371
1372 @item
1373 PGP provides quite good security when used correctly. You are far more
1374 likely to use it correctly if you have read the directions. Read the
1375 @cite{PGP User's Guide}!
1376
1377 @item
1378 60 seconds is a relatively safe but somewhat inconvenient value for
1379 @code{mc-passwd-timeout}. If your paranoia permits, consider increasing
1380 it to five or ten minutes (@pxref{Passphrase Cache}).
1381
1382 @item
1383 If Mailcrypt ever does something you wish it had not, @emph{DON'T
1384 PANIC}. Just use the normal Emacs undo command, @kbd{M-x undo} or
1385 @kbd{C-x u}, to restore your buffer (@pxref{Undo, Emacs Undo, Undoing
1386 Changes, emacs, The GNU Emacs Manual}). Mailcrypt keeps almost no state
1387 except what you see in your buffer, so any action can be undone this
1388 way.
1389
1390 @item
1391 All Mailcrypt operations place PGP's output in the @code{*MailCrypt*}
1392 buffer. Check it occasionally for status and warning messages.
1393
1394 @item
1395 Add yourself to the Mailcrypt announcements mailing list (@pxref{Mailing
1396 List}). That way you can find out about new versions of Mailcrypt
1397 automatically, and we can enjoy the feeling that people are actually
1398 using our package.
1399
1400 @end itemize
1401
1402 @node Limitations, References, Tips, Top
1403 @chapter Limitations
1404
1405 Mailcrypt is a powerful program, but it is not a complete PGP interface.
1406 Perhaps some future version will be; in the meantime, you will need to
1407 use the command-line interface for some operations. Things which the
1408 current version does not support include:
1409
1410 @table @emph
1411
1412 @item Complete Key Management
1413 Mailcrypt's key management support is limited to adding and extracting
1414 keys from keyrings. It does not support key generation, key removal,
1415 key revocation, ID and trust parameter editing, or key signing. It also
1416 ignores PGP's warnings when you use a key which is not fully certified.
1417 (Of course, you can see these warnings by viewing the @code{*MailCrypt*}
1418 buffer; see @ref{Tips}.)
1419
1420 @item Encryption with Conventional Cryptography
1421 Mailcrypt supports decryption but not encryption with "conventional"
1422 (i.e., non-public key) cryptography.
1423
1424 @item Detached Signatures
1425 Mailcrypt does not support the creation nor the verification of detached
1426 signatures.
1427
1428 @item "For your eyes only" Decryption
1429 Mailcrypt will be unable to decrypt a file which was encrypted with the
1430 "for your eyes only" (@samp{-m}) option. This is actually a bug in PGP,
1431 which provides no portable way to avoid its paging behavior.
1432
1433 @end table
1434
1435 @node References, Credits, Limitations, Top
1436 @chapter References
1437
1438 This chapter contains information and pointers to information about
1439 topics related to PGP and Mailcrypt.
1440
1441 @menu
1442 * Online Resources:: Recreational reading with a purpose.
1443 * Key Servers:: Keepers of the Global Keyring.
1444 * Mailing List:: Staying informed while pumping the
1445 authors' egos.
1446 * Politics:: Anarcho-foobarism.
1447 @end menu
1448
1449 @node Online Resources, Key Servers, References, References
1450 @section Online Resources
1451
1452 @table @file
1453
1454 @item http://world.std.com/~franl/crypto.html
1455 "Cryptography, PGP, and Your Privacy", by Fran Litterio. This page is
1456 simply excellent. It makes all the other References in this chapter
1457 redundant, but we will include them anyway for redundancy.
1458
1459 @item http://web.mit.edu/network/pgp.html
1460 MIT is the canonical distribution site for PGP; this is the announcement
1461 page.
1462
1463 @item ftp://rtfm.mit.edu/pub/usenet/alt.security.pgp/
1464 This is an archive site for the @file{alt.security.pgp} FAQ lists.
1465
1466 @item news:alt.security.pgp
1467 The @file{alt.security.pgp} newsgroup is a good place to go for
1468 discussion about PGP, as well as any topic which any fool anywhere ever
1469 thinks is related to PGP. It is also a good last resort for getting
1470 answers to questions, but please read the FAQ lists first.
1471
1472 @item http://pgp.ai.mit.edu/~bal/pks-toplev.html
1473 Brian LaMacchia (bal@@zurich.ai.mit.edu) has put together a World Wide
1474 Web interface to the public key servers (@pxref{Key Servers}).
1475 Mailcrypt uses this interface by default when attempting to fetch keys
1476 via HTTP (@pxref{HTTP Fetch}); most people get to his interface through
1477 this page.
1478
1479 @item ftp://ftp.csua.berkeley.edu/pub/cypherpunks/Home.html
1480 The Cypherpunks are dedicated to taking proactive measures to ensure
1481 privacy in the digital age. They wrote the software for, and operate
1482 many of, the anonymous remailers currently in existence.
1483
1484 @item http://www.cs.berkeley.edu/~raph/
1485 Raph Levien actively maintains a remailer list which Mailcrypt knows how
1486 to parse. If you are impressed by how easy it is to configure
1487 Mailcrypt's remailer functions, Raph is the one to thank. Raph's page
1488 also has many useful links.
1489
1490 @item http://www.obscura.com/~loki/
1491 Lance Cottrell is the author of Mixmaster. His home page is the
1492 canonical source for information on Mixmaster and is a good source for
1493 PGP pointers in general.
1494
1495 @end table
1496
1497 @node Key Servers, Mailing List, Online Resources, References
1498 @section Key Servers
1499
1500 @dfn{Key servers} are machines with a publicly accessible interface to
1501 an enormous global public keyring. Anyone may add keys to or query this
1502 keyring. Each key server holds a complete copy of the global keyring,
1503 and they arrange to keep one another informed of additions they receive.
1504
1505 This means you can tell any key server to add your public key to the
1506 global keyring, and all of the other servers will know about it within a
1507 day or so. Then anyone will be able to query any key server to obtain
1508 your public key.
1509
1510 To add your key to the keyservers, send an Email message to
1511 @code{pgp-public-keys@@pgp.ai.mit.edu} with a subject line of @samp{ADD}
1512 and a body containing your public key block. With Mailcrypt installed,
1513 you can just type @kbd{C-c / x} to insert your public key block
1514 (@pxref{Inserting Keys}) into the body of the message.
1515
1516 For help with the Email interface to the key servers, send a message
1517 with a subject line of @samp{HELP}. For a World Wide Web interface to
1518 the key servers, see Brian LaMacchia's home page at
1519 @file{http://www-swiss.ai.mit.edu/~bal/}.
1520
1521 Some other key servers include:
1522
1523 @itemize @bullet
1524
1525 @item
1526 pgp-public-keys@@jpunix.com
1527
1528 @item
1529 pgp-public-keys@@kub.nl
1530
1531 @item
1532 pgp-public-keys@@uit.no
1533
1534 @item
1535 pgp-public-keys@@pgp.ox.ac.uk
1536
1537 @end itemize
1538
1539 For a complete list, consult any good online repository of PGP
1540 information (@pxref{Online Resources}).
1541
1542 It is strongly recommended that you submit your key to the key servers,
1543 since many humans and programs (including Mailcrypt) may look for it
1544 there. Besides, it takes mere seconds and the pain passes quickly.
1545
1546 @node Mailing List, Politics, Key Servers, References
1547 @section Mailing List
1548 If you would like to automatically receive information about new
1549 releases of Mailcrypt, send Email to
1550 @samp{mc-announce-request@@cag.lcs.mit.edu} asking to be placed on the
1551 @samp{mc-announce} mailing list. The mailing list is maintained
1552 manually, so please be patient.
1553
1554 The @samp{mc-announce} list is reserved for announcements of new
1555 Mailcrypt versions, so it has extremely low volume. We encourage you to
1556 add yourself so we can get a rough idea of how many people are using
1557 our package.
1558
1559 @node Politics, , Mailing List, References
1560 @section Politics
1561
1562 Cryptography in general, PGP in particular, and free software are
1563 politically somewhat controversial topics. Heck, in the U.S. Congress,
1564 freedom of speech is a controversial topic. Anyway, here are some
1565 organizations you should definitely watch and preferably send lots of
1566 money.
1567
1568 @table @emph
1569
1570 @item The Electronic Frontier Foundation
1571 The EFF (@file{http://www.eff.org/}) works to protect civil liberties in
1572 cyberspace. They also maintain an impressive collection of on-line
1573 resources. If you like Mailcrypt so much that you wish you had paid for
1574 it, this is the number one place we would want to see your money go.
1575 The EFF newsgroups, @file{comp.org.eff.news} and
1576 @file{comp.org.eff.talk}, are required reading for the well-informed.
1577
1578 @item The League for Programming Freedom
1579 The LPF (@file{http://www.lpf.org/}) works to fight software patents,
1580 which threaten to make free software like Mailcrypt impossible.
1581
1582 @item The Center for Democracy and Technology
1583 The CDT (@file{http://www.cdt.org/}) has essentially the same goals as
1584 the EFF, but is more of a lobbying group.
1585
1586 @end table
1587
1588 Mailcrypt's remailer support was inspired by the Communications Decency
1589 Act of 1995 (see @file{http://www.cdt.org/cda.html}) and by the
1590 International "Church" of Scientology (see
1591 @file{http://www.mit.edu:8001/people/rnewman/scientology/}).
1592
1593 @node Credits, Index, References, Top
1594 @chapter Credits
1595 Mailcrypt was written by Jin Choi (jin@@atype.com) and Pat LoPresti
1596 (patl@@lcs.mit.edu). Please send us your bug reports and comments.
1597 Also see @ref{Mailing List}.
1598
1599 This documentation was mostly written by Pat LoPresti, but borrows
1600 heavily from an earlier version by Hal Abelson (hal@@mit.edu).
1601
1602 Mailcrypt would not be as robust nor as featureful if it were not for
1603 our outstanding set of Beta testers:
1604
1605 @itemize @bullet
1606
1607 @item
1608 Samuel Tardieu <sam@@inf.enst.fr>
1609 @item
1610 Richard Stanton <stanton@@haas.berkeley.edu>
1611 @item
1612 Peter Arius <arius@@immd2.informatik.uni-erlangen.de>
1613 @item
1614 Tomaz Borstnar <tomaz@@cmir.arnes.si>
1615 @item
1616 Barry Brumitt <belboz@@frc2.frc.ri.cmu.edu>
1617 @item
1618 Steffen Zahn <Steffen.Zahn%robinie@@sunserv.sie.siemens.co.at>
1619 @item
1620 Mike Campbell <mcampbel@@offenbach.sbi.com>
1621 @item
1622 Mark Baushke <mdb@@cisco.com>
1623 @item
1624 Mike Long <mike.long@@analog.com>
1625
1626 @end itemize
1627
1628 @node Index, , Credits, Top
1629 @unnumbered Index
1630
1631 This index has an entry for every key sequence, function, and variable
1632 documented in this manual.
1633
1634 @printindex cp
1635
1636 @contents
1637 @bye
1638
1639 @c End: