+2003-10-23 Teodor Zlatanov <tzz@lifelogs.com>
+
+ * gnus.el (spam-process-destination, ham-process-destination):
+ allow multiple groups as a choice
+
+ * spam.el (spam-check-blackholes): remove "[IP address]"
+ requirement, now just "IP address" is enough for detection for
+ blackhole checking
+ (spam-check-blackholes): oops, the dots were not escaped
+ (spam-mark-spam-as-expired-and-move-routine): added multiple group
+ support (multiple copies, then delete)
+ (spam-ham-copy-routine): new function
+ (spam-ham-move-routine): new function
+ (spam-ham-copy-or-move-routine): new function (used to be
+ spam-ham-move-routine), handle multiple groups
+ (spam-summary-prepare-exit): call the new functions
+
2003-10-23 Simon Josefsson <jas@extundo.com>
* flow-fill.el (fill-flowed-encode, fill-flowed): Autoload.
(gnus-define-group-parameter
spam-process
:type list
- :parameter-type '(choice :tag "Spam Summary Exit Processor"
- :value nil
- (list :tag "Spam Summary Exit Processor Choices"
- (set
- (variable-item gnus-group-spam-exit-processor-ifile)
- (variable-item gnus-group-spam-exit-processor-stat)
- (variable-item gnus-group-spam-exit-processor-bogofilter)
- (variable-item gnus-group-spam-exit-processor-blacklist)
- (variable-item gnus-group-spam-exit-processor-report-gmane)
- (variable-item gnus-group-spam-exit-processor-spamoracle)
- (variable-item gnus-group-ham-exit-processor-bogofilter)
- (variable-item gnus-group-ham-exit-processor-ifile)
- (variable-item gnus-group-ham-exit-processor-stat)
- (variable-item gnus-group-ham-exit-processor-whitelist)
- (variable-item gnus-group-ham-exit-processor-BBDB)
- (variable-item gnus-group-ham-exit-processor-copy)
- (variable-item gnus-group-ham-exit-processor-spamoracle))))
+ :parameter-type
+ '(choice
+ :tag "Spam Summary Exit Processor"
+ :value nil
+ (list :tag "Spam Summary Exit Processor Choices"
+ (set
+ (variable-item gnus-group-spam-exit-processor-ifile)
+ (variable-item gnus-group-spam-exit-processor-stat)
+ (variable-item gnus-group-spam-exit-processor-bogofilter)
+ (variable-item gnus-group-spam-exit-processor-blacklist)
+ (variable-item gnus-group-spam-exit-processor-report-gmane)
+ (variable-item gnus-group-spam-exit-processor-spamoracle)
+ (variable-item gnus-group-ham-exit-processor-bogofilter)
+ (variable-item gnus-group-ham-exit-processor-ifile)
+ (variable-item gnus-group-ham-exit-processor-stat)
+ (variable-item gnus-group-ham-exit-processor-whitelist)
+ (variable-item gnus-group-ham-exit-processor-BBDB)
+ (variable-item gnus-group-ham-exit-processor-copy)
+ (variable-item gnus-group-ham-exit-processor-spamoracle))))
:function-document
- "Which spam or ham processors will be applied to the GROUP articles at summary exit."
+ "Which spam or ham processors will be applied when the summary is exited."
:variable gnus-spam-process-newsgroups
:variable-default nil
:variable-document
name regexps that should match all groups in which to do automatic
spam processing, associated with the appropriate processor."
:variable-group spam
- :variable-type '(repeat :tag "Spam/Ham Processors"
- (list :tag "Spam Summary Exit Processor Choices"
- (regexp :tag "Group Regexp")
- (set :tag "Spam/Ham Summary Exit Processor"
- (variable-item gnus-group-spam-exit-processor-ifile)
- (variable-item gnus-group-spam-exit-processor-stat)
- (variable-item gnus-group-spam-exit-processor-bogofilter)
- (variable-item gnus-group-spam-exit-processor-blacklist)
- (variable-item gnus-group-spam-exit-processor-report-gmane)
- (variable-item gnus-group-ham-exit-processor-bogofilter)
- (variable-item gnus-group-ham-exit-processor-ifile)
- (variable-item gnus-group-ham-exit-processor-stat)
- (variable-item gnus-group-ham-exit-processor-whitelist)
- (variable-item gnus-group-ham-exit-processor-BBDB)
- (variable-item gnus-group-ham-exit-processor-copy))))
+ :variable-type
+ '(repeat :tag "Spam/Ham Processors"
+ (list :tag "Spam Summary Exit Processor Choices"
+ (regexp :tag "Group Regexp")
+ (set
+ :tag "Spam/Ham Summary Exit Processor"
+ (variable-item gnus-group-spam-exit-processor-ifile)
+ (variable-item gnus-group-spam-exit-processor-stat)
+ (variable-item gnus-group-spam-exit-processor-bogofilter)
+ (variable-item gnus-group-spam-exit-processor-blacklist)
+ (variable-item gnus-group-spam-exit-processor-report-gmane)
+ (variable-item gnus-group-ham-exit-processor-bogofilter)
+ (variable-item gnus-group-ham-exit-processor-ifile)
+ (variable-item gnus-group-ham-exit-processor-stat)
+ (variable-item gnus-group-ham-exit-processor-whitelist)
+ (variable-item gnus-group-ham-exit-processor-BBDB)
+ (variable-item gnus-group-ham-exit-processor-copy))))
:parameter-document
- "Which spam processors will be applied to the spam or ham GROUP articles at summary exit.")
+ "Which spam or ham processors will be appliedwhen the summary is exited.")
(gnus-define-group-parameter
spam-process-destination
- :parameter-type '(choice :tag "Destination for spam-processed articles at summary exit"
- (string :tag "Move to a group")
- (const :tag "Expire" nil))
+ :parameter-type
+ '(choice :tag "Destination for spam-processed articles at summary exit"
+ (string :tag "Move to a group")
+ (repeat :tag "Move to multiple groups"
+ (string :tag "Destination group"))
+ (const :tag "Expire" nil))
:function-document
"Where spam-processed articles will go at summary exit."
:variable gnus-spam-process-destinations
group or nil for explicit expiration. This only makes sense for
mail groups."
:variable-group spam
- :variable-type '(repeat
- :tag "Spam-processed articles destination"
- (list
- (regexp :tag "Group Regexp")
- (choice
- :tag "Destination for spam-processed articles at summary exit"
- (string :tag "Move to a group")
- (const :tag "Expire" nil))))
+ :variable-type
+ '(repeat
+ :tag "Spam-processed articles destination"
+ (list
+ (regexp :tag "Group Regexp")
+ (choice
+ :tag "Destination for spam-processed articles at summary exit"
+ (string :tag "Move to a group")
+ (repeat :tag "Move to multiple groups"
+ (string :tag "Destination group"))
+ (const :tag "Expire" nil))))
:parameter-document
"Where spam-processed articles will go at summary exit.")
-
+
(gnus-define-group-parameter
ham-process-destination
- :parameter-type '(choice
- :tag "Destination for ham articles at summary exit from a spam group"
- (string :tag "Move to a group")
- (const :tag "Do nothing" nil))
+ :parameter-type
+ '(choice
+ :tag "Destination for ham articles at summary exit from a spam group"
+ (string :tag "Move to a group")
+ (repeat :tag "Move to multiple groups"
+ (string :tag "Destination group"))
+ (const :tag "Do nothing" nil))
:function-document
"Where ham articles will go at summary exit from a spam group."
:variable gnus-ham-process-destinations
group or nil for explicit ignoring. This only makes sense for
mail groups, and only works in spam groups."
:variable-group spam
- :variable-type '(repeat
- :tag "Ham articles destination"
- (list
- (regexp :tag "Group Regexp")
- (choice
- :tag "Destination for ham articles at summary exit from spam group"
- (string :tag "Move to a group")
- (const :tag "Expire" nil))))
+ :variable-type
+ '(repeat
+ :tag "Ham articles destination"
+ (list
+ (regexp :tag "Group Regexp")
+ (choice
+ :tag "Destination for ham articles at summary exit from spam group"
+ (string :tag "Move to a group")
+ (repeat :tag "Move to multiple groups"
+ (string :tag "Destination group"))
+ (const :tag "Expire" nil))))
:parameter-document
"Where ham articles will go at summary exit from a spam group.")
(when (spam-group-ham-processor-copy-p gnus-newsgroup-name)
(gnus-message 5 "Copying ham")
- (spam-ham-move-routine
- (gnus-parameter-ham-process-destination gnus-newsgroup-name) t))
+ (spam-ham-copy-routine
+ (gnus-parameter-ham-process-destination gnus-newsgroup-name)))
;; now move all ham articles out of spam groups
(when (spam-group-spam-contents-p gnus-newsgroup-name)
(dolist (article articles)
(gnus-summary-mark-article article gnus-spam-mark)))))
-(defun spam-mark-spam-as-expired-and-move-routine (&optional group)
+(defun spam-mark-spam-as-expired-and-move-routine (&rest groups)
(gnus-summary-kill-process-mark)
(let ((articles gnus-newsgroup-articles)
article tomove)
(gnus-summary-mark-article article gnus-expirable-mark)
(push article tomove)))
- ;; now do the actual move
- (when (and tomove
- (stringp group))
- (dolist (article tomove)
- (gnus-summary-set-process-mark article))
- (when tomove (gnus-summary-move-article nil group))))
+ ;; now do the actual copies
+ (dolist (group groups)
+ (when (and tomove
+ (stringp group))
+ (dolist (article tomove)
+ (gnus-summary-set-process-mark article))
+ (when tomove
+ (gnus-summary-copy-article nil group))))
+
+ ;; now delete the articles
+ (dolist (article tomove)
+ (gnus-summary-set-process-mark article))
+ (when tomove
+ (gnus-summary-delete-article nil)))
+
(gnus-summary-yank-process-mark))
-(defun spam-ham-move-routine (&optional group copy)
+(defun spam-ham-copy-or-move-routine (copy &rest groups)
(gnus-summary-kill-process-mark)
(let ((articles gnus-newsgroup-articles)
- article mark tomove)
- (when (stringp group) ; this routine will do nothing
- ; without a valid group
- (dolist (article articles)
- (when (spam-group-ham-mark-p gnus-newsgroup-name
- (gnus-summary-article-mark article))
- (push article tomove)))
+ article mark todo)
+ (dolist (article articles)
+ (when (spam-group-ham-mark-p gnus-newsgroup-name
+ (gnus-summary-article-mark article))
+ (push article todo)))
- ;; now do the actual move
- (when tomove
- (dolist (article tomove)
+ ;; now do the actual move
+ (dolist (group groups)
+ (when todo
+ (dolist (article todo)
(when spam-mark-ham-unread-before-move-from-spam-group
- (gnus-summary-mark-article article gnus-unread-mark))
+ (gnus-summary-mark-article article gnus-unread-mark))
(gnus-summary-set-process-mark article))
- (if copy
- (gnus-summary-copy-article nil group)
- (gnus-summary-move-article nil group)))))
+ (gnus-summary-copy-article nil group)))
+
+ ;; now delete the articles
+ (dolist (article todo)
+ (gnus-summary-set-process-mark article))
+ (when todo
+ (gnus-summary-delete-article nil)))
+
(gnus-summary-yank-process-mark))
+(defun spam-ham-copy-routine (&rest groups)
+ (spam-ham-copy-or-move-routine t groups))
+
+(defun spam-ham-move-routine (&rest groups)
+ (spam-ham-copy-or-move-routine nil groups))
+
(defun spam-generic-register-routine (spam-func ham-func)
(let ((articles gnus-newsgroup-articles)
article mark ham-articles spam-articles)
(goto-char (point-min))
(gnus-message 5 "Checking headers for relay addresses")
(while (re-search-forward
- "\\[\\([0-9]+.[0-9]+.[0-9]+.[0-9]+\\)\\]" nil t)
+ "\\([0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+\\)" nil t)
(gnus-message 9 "Blackhole search found host IP %s." (match-string 1))
(push (spam-reverse-ip-string (match-string 1))
ips)))
+2003-10-23 Reiner Steib <Reiner.Steib@gmx.de>
+
+ * emacs-mime.texi: Markup: Use @acronym for MML and MIME.
+
+ * message.texi: Ditto.
+
+ * gnus.texi: Ditto.
+
2003-10-23 Simon Josefsson <jas@extundo.com>
* emacs-mime.texi (MML Definition): Add format.
@menu
* Decoding and Viewing:: A framework for decoding and viewing.
-* Composing:: MML; a language for describing @acronym{MIME} parts.
+* Composing:: @acronym{MML}; a language for describing @acronym{MIME} parts.
* Interface Functions:: An abstraction over the basic functions.
* Basic Functions:: Utility and basic parsing functions.
* Standards:: A summary of RFCs and working documents used.
@cindex MML
@cindex MIME Meta Language
-Creating a @acronym{MIME} message is boring and non-trivial. Therefore, a
-library called @code{mml} has been defined that parses a language called
-MML (@acronym{MIME} Meta Language) and generates @acronym{MIME} messages.
+Creating a @acronym{MIME} message is boring and non-trivial. Therefore,
+a library called @code{mml} has been defined that parses a language
+called @acronym{MML} (@acronym{MIME} Meta Language) and generates
+@acronym{MIME} messages.
@findex mml-generate-mime
The main interface function is @code{mml-generate-mime}. It will
string containing the @acronym{MIME} message.
@menu
-* Simple MML Example:: An example MML document.
-* MML Definition:: All valid MML elements.
-* Advanced MML Example:: Another example MML document.
+* Simple MML Example:: An example @acronym{MML} document.
+* MML Definition:: All valid @acronym{MML} elements.
+* Advanced MML Example:: Another example @acronym{MML} document.
* Encoding Customization:: Variables that affect encoding.
* Charset Translation:: How charsets are mapped from @sc{mule} to @acronym{MIME}.
-* Conversion:: Going from @acronym{MIME} to MML and vice versa.
+* Conversion:: Going from @acronym{MIME} to @acronym{MML} and vice versa.
* Flowed text:: Soft and hard newlines.
@end menu
@node MML Definition
@section MML Definition
-The MML language is very simple. It looks a bit like an SGML
+The @acronym{MML} language is very simple. It looks a bit like an SGML
application, but it's not.
-The main concept of MML is the @dfn{part}. Each part can be of a
+The main concept of @acronym{MML} is the @dfn{part}. Each part can be of a
different type or use a different charset. The way to delineate a part
is with a @samp{<#part ...>} tag. Multipart parts can be introduced
with the @samp{<#multipart ...>} tag. Parts are ended by the
but that's not necessary unless the value contains white space. So
@samp{filename=/home/user/#hello$^yes} is perfectly valid.
-The following parameters have meaning in MML; parameters that have no
-meaning are ignored. The MML parameter names are the same as the
+The following parameters have meaning in @acronym{MML}; parameters that have no
+meaning are ignored. The @acronym{MML} parameter names are the same as the
@acronym{MIME} parameter names; the things in the parentheses say which
header it will be used in.
The size (in octets) of the part (@code{Content-Disposition}).
@item sign
-What technology to sign this MML part with (@code{smime}, @code{pgp}
+What technology to sign this @acronym{MML} part with (@code{smime}, @code{pgp}
or @code{pgpmime})
@item encrypt
-What technology to encrypt this MML part with (@code{smime},
+What technology to encrypt this @acronym{MML} part with (@code{smime},
@code{pgp} or @code{pgpmime})
@end table
As an example, if you do not want to have ISO-8859-1 characters
quoted-printable encoded, you may add @code{(iso-8859-1 . 8bit)} to
this variable. You can override this setting on a per-message basis
-by using the @code{encoding} MML tag (@pxref{MML Definition}).
+by using the @code{encoding} @acronym{MML} tag (@pxref{MML Definition}).
@item mm-coding-system-priorities
@vindex mm-coding-system-priorities
to prefer UTF-8, but wish that outgoing messages should be sent in
ISO-8859-1 if possible, you can set this variable to
@code{(iso-latin-1)}. You can override this setting on a per-message
-basis by using the @code{charset} MML tag (@pxref{MML Definition}).
+basis by using the @code{charset} @acronym{MML} tag (@pxref{MML Definition}).
@item mm-content-transfer-encoding-defaults
@vindex mm-content-transfer-encoding-defaults
@acronym{MIME} encodings, @code{qp-or-base64} may be used to indicate that for
each case the most efficient of quoted-printable and base64 should be
used. You can override this setting on a per-message basis by using
-the @code{encoding} MML tag (@pxref{MML Definition}).
+the @code{encoding} @acronym{MML} tag (@pxref{MML Definition}).
@item mm-use-ultra-safe-encoding
@vindex mm-use-ultra-safe-encoding
@section Charset Translation
@cindex charsets
-During translation from MML to @acronym{MIME}, for each @acronym{MIME} part which
-has been composed inside Emacs, an appropriate charset has to be chosen.
+During translation from @acronym{MML} to @acronym{MIME}, for each
+@acronym{MIME} part which has been composed inside Emacs, an appropriate
+charset has to be chosen.
@vindex mail-parse-charset
If you are running a non-@sc{mule} Emacs, this process is simple: If the
Customization}).
The charset to be used can be overridden by setting the @code{charset}
-MML tag (@pxref{MML Definition}) when composing the message.
+@acronym{MML} tag (@pxref{MML Definition}) when composing the message.
The encoding of characters (quoted-printable, 8bit etc) is orthogonal
to the discussion here, and is controlled by the variables
@section Conversion
@findex mime-to-mml
-A (multipart) @acronym{MIME} message can be converted to MML with the
-@code{mime-to-mml} function. It works on the message in the current
-buffer, and substitutes MML markup for @acronym{MIME} boundaries.
-Non-textual parts do not have their contents in the buffer, but instead
-have the contents in separate buffers that are referred to from the MML
-tags.
+A (multipart) @acronym{MIME} message can be converted to @acronym{MML}
+with the @code{mime-to-mml} function. It works on the message in the
+current buffer, and substitutes @acronym{MML} markup for @acronym{MIME}
+boundaries. Non-textual parts do not have their contents in the buffer,
+but instead have the contents in separate buffers that are referred to
+from the @acronym{MML} tags.
@findex mml-to-mime
-An MML message can be converted back to @acronym{MIME} by the
+An @acronym{MML} message can be converted back to @acronym{MIME} by the
@code{mml-to-mime} function.
These functions are in certain senses ``lossy''---you will not get back
@code{gnus-message-replysignencrypted} (on by default) will sign
automatically encrypted messages.
-Instructing MML to perform security operations on a @acronym{MIME} part is
-done using the @kbd{C-c C-m s} key map for signing and the @kbd{C-c
-C-m c} key map for encryption, as follows.
+Instructing @acronym{MML} to perform security operations on a
+@acronym{MIME} part is done using the @kbd{C-c C-m s} key map for
+signing and the @kbd{C-c C-m c} key map for encryption, as follows.
@table @kbd
@item C-c C-m C-n
@kindex C-c C-m C-n
@findex mml-unsecure-message
-Remove security related MML tags from message.
+Remove security related @acronym{MML} tags from message.
@end table
Groups})\e$B!#\e(B
@item
-\e$BB?$/$N0c$C$?%a!<%kMM<0\e(B (@pxref{Getting Mail}) \e$B$rFI$a$k$h$&$K$J$j$^$7$?!#\e(B
-\e$BA4$F$N%a!<%k%P%C%/%(%s%I$OJXMx$J%a!<%k4|8B@Z$l>C5n5!9=$r<BAu$7$F$$$^\e(B
-\e$B$9\e(B (@pxref{Expiring Mail})\e$B!#\e(B
+\e$BB?$/$N0c$C$?%a!<%kMM<0\e(B (@p\8dref{Getting Mail}) \e$B$rFI$a$k$h$&$K$J$j$^$7$?!#\e(B
+\e$BA4$F$N%aC<%k%P%C%/%(%s%I$OJXMx$J%a!<%k4|8B@Z$l>C5n5!9=$r<BAu$7$F$$$^\e(B
+\1e$B$9\e(B (@pxref{Expiring Mail})\e$B!#\e(B
@item
-Gnus \e$B$O:,$C$3\e(B (root) \e$B$r<:$C$?%9%l%C%I$r=8$a$k$?$a$N$$$m$$$m$J@oN,\e(B (\e$B$=$l\e(B
+Gnus \e$B$O:,$C$3\96(B (root) \e$B$r<:$C$?%9%l%C%I$r=8$a$k$?$a$N$$$m$$$m$J@oN,\e(B (\e$B$=$l\e(B
\e$B$K$h$C$F$^$P$i$JI{%9%l%C%I$r0l$D$N%9%l%C%I$K$9$k\e(B) \e$B$r;H$C$?$j!"0lC6La$C$F\e(B
-\e$B40A4$J%9%l%C%I$r$/$_>e$2$k$N$K==J,$J%X%C%@!<$r<hF@$7$9$k;v$,$G$-$^\e(B
-\e$B$9\e(B (@pxref{Customizing Threading})\e$B!#\e(B
+\e$B40A4$J%9%l%C%I$r$/$_>e$2$k$N$K\e=J,$J%X%C%@!<$r<hF@$7$9$k;v$,$G$-$^\e(B
+\e$B$9\e(B (@pxref{CustomiDing Threading})\e$B!#\e(B
@item
\e$B@Z$i$l$?%0%k!<%W\e(B (killed group) \e$B$O$0%k!<%W%P%C%U%!$KI=<($9$k;v$,$G$-$F!"\e(B
@item
Gnus \e$B$OItJ,E*%0%k!<%W99?7$r$9$k;v$,$G$-$^$9\e(B---2,3 \e$B$N%0%k!<%W$N?7$7$$5-;v\e(B
-\e$B$rD4$Y$k$?$a$K%"%/%F%#%V%U%!%$%kA4BN$r<hF@$9$kI,MW$O$"$j$^$;\e(B
-\e$B$s\e(B (@pxref{The Active File})\e$B!#\e(B
+\e$B$rD4$Y$k$?$a$K%"%/%F%#%V%U%!%$%kA4BN$r<hF@$9$k1,MW$O$"$j$^$;\e(B
+\e$B$s\e(B (@pxref{The Active File})\e$B!#\e(B
-@item
+@i~em
Gnus \e$B$O%0%k!<%W$NCJ3,E*9XFIEY$r<BAu$7$^$7$?\e(B (@pxref{Group Levels})\e$B!#\e(B
@item
\e$BG$0U$N?t$N4p=`$K=>$C$F5-;v$K%9%3%"$rIU$1$k;v$,$G$-$^$9\e(B (@pxref{Scoring})\e$B!#\e(B
-\e$B$"$J$?$N$?$a$K5-;v$r$I$N$h$&$K%9%3%"$rIU$1$k$+$r\e(B Gnus \e$B$K8+$D$1$5$;$k;v$b\e(B
+\e$B$"$J$?$N$?Ra$K5-;v$r$I$N$h$&$K%9%3%"$rIU$1$k$+$r\e(B Gnus \e$B$K8+$D$1$5$;$k\ 4v$b\e(B
\e$B$G$-$^$9\e(B (@pxref{Adaptive Scoring})\e$B!#\e(B
-@item
-Gnus \e$B$OIaDL$N\e(B Emacs \e$B$NJ}K!$G<+F0J]B8$5$l$k%I%j%V%k%P%C%U%!$rJ];}$7$F$$$^\e(B
+@item\ 5Gnus \e$B$OIaDL$N\e(B Emacs \e$B$NJ}K!$G<+F0J]B8$5$l$k%I%j%V%k%P%C¿U%!$rJ];}$7$F$$$^\e(B
\e$B$9$N$G!"$"$J$?$N%^%7%s$,Mn$C$3$A$?$H$-$G$b$"$^$j%G!<%?$r<:$o$J$$$G$7$g\e(B
\e$B$&\e(B (@pxref{Auto Save})\e$B!#\e(B
@item
-Gnus \e$B$O:#$d%U%!%$%k\e(B @file{.emacs} \e$B$r$0$A$c$0$A$c$K$9$k;v$rHr$1$k$?$a$K@l\e(B
-\e$BMQ$N5/F0%U%!%$%k\e(B (@file{~/.gnus.el}) \e$B$r;}$D$h$&$K$J$j$^$7$?!#\e(B
+Gnus \e$B$O:#$d%U%!%$%k\e(B @file{.emacs} \e$B$r$0$AÚc$0$A$c$K$9$k;v$rHr$1$k$?$a$K@l\e(B
+\e$BMQ$N5/F0%U%!%$%k\e(B (@fihÓ{~/.gnus.el}) \e$B$r;}$D$h$&$K$J$j$^$7$?!#\e(B
@item
\e$B%0%k!<%W$H5-;v$NN>J}$K%W%m%;%90u$rIU$1$k$3$H$,$G$-!"A4$F$N0u$NIU$$$?9`L\\e(B
@item
\e$B%0%k!<%W$N0lIt$r\e(B grep \e$B$7$F!"$=$N7k2L$+$i%0%k!<%W$r:n$k;v$,$G$-$^\e(B
-\e$B$9\e(B (@pxref{Kibozed Groups})\e$B!#\e(B
+\e$B$9\e(B (@pxref{Kibozed Groups})\e$B!#\e(:
@item
-\e$B$(!<$H!"A4$F$K$7$?$,$C$F!"%0%k!<%W$N0lMw$r5s$2$k;v$,$G$-$^\e(B
+\e$B$(!<$H!"A4$F$K$7$?$,$C$F!"%0%k!<%W$N0lMw$r5s$2$k;v$,ìG$-$^\e(B
\e$B$9\e(B (@pxref{Listing Groups})\e$B!#\e(B
@item
\e$B$9\e(B (@pxref{Browse Foreign Server})\e$B!#\e(B
@item
-Gnus \e$B$O%5!<%P!<$H$NFs$D@\B3$G!"5-;v$rHsF14|$K$H$C$F$/$k;v$,$G$-$^\e(B
+Énus \e$B$O%5!<%P!<$H$NFs$D@\B3$G!"5-;v$rHsF14|$K$H$C$F$/$k;v$,$GÑ-$^\e(B
\e$B$9\e(B (@pxref{Asynchronous Fetching})\e$B!#\e(B
@item
-\e$B5-;v$r%m!<%+%k$K%-%c%C%7%e$9$k;v$,$G$-$^$9\e(B (@pxref{Article Caching})\e$B!#\e(B
+\95$B5-;v$r%m!<%+%k$K%-%c%C%7%e$9$k;v$,$G$-$^$9\e(B (@pxref{ArticleXCaching})\e$B!#\e(B
@item
uudecode \e$B$N4X?t$,3HD%$5$l!"0lHL2=$5$l$^$7$?\e(B (@pxref{Decoding Articles})\e$B!#\e(B
@item
-\e$B2a5n$N\e(B @sc{gnus} \e$B$N$"$^$jCN$i$l$F$$$J$$5!G=$N\e(B uuencode \e$B$5$l$?5-;v$r$^$@\e(B
-\e$BEj9F$9$k;v$,$G$-$^$9\e(B (@pxref{Uuencoding and Posting})\e$B!#\e(B
+\e$B2a5n$N\e(B @sc{gnus} \e$B$N$"$^$jCN$i$l$F$$$J$$5!G=$N\e(B uuencode \e$B$5$\86$?5-;v$r$^$@\e(B
+\e$BEj9F$9$k;v$,$G$-$^$9\e(B (@pxref{Uuencoding a:d Posting})\e$B!#\e(B
@item
\e$B?F5-;v\e(B (\e$B$HB>$N5-;v\e(B) \e$B$N<hF@$O:#$d!"<B:]$KFMA38N>c$9$k;vL5$/F0:n$9$k$h$&$K\e(B
\e$B$9\e(B (@pxref{Group Information})\e$B!#\e(B
@item
-\e$B5-;v$r%O%$%i%$%H$7!"%+%9%?%^%$%:$9$k;v$,$G$-$^$9\e(B (@pxref{Customizing
-Articles})\e$B!#\e(B
+\e$B5-;v$r%O%$%i%$\83H$7!"%+%9%?%^%$%:$9$k;v$,$G$-$^$9\e(B (@pxref{Customizing
+Articlos})\e$B!#\e(B
@item
URL \e$B$HB>$N30It;2>H$,%\%?%s$K$J$k$h$&$K$J$j$^$7$?\e(B (@pxref{Article
Buttons})\e$B!#\e(B
@item
-Gnus \e$B$N%&%#%s%I%&$H%U%l!<%`$N@_Dj$G$?$/$5$s$NJQ$J;v$r$G$-$k$h$&$K$J$j$^\e(B
+Gnus \e$B$N%&%#%s%I%&$H%U%l!<%`$N@_Dj$G$?$/$5$s$NJQ$J;v$r$G$-$k$h$&$K$J$n$^\e(\86
\e$B$7$?\e(B (@pxref{Window Layout})\e$B!#\e(B
@item
-\e$B%-!<%\!<%I$r;H$&Be$o$j$K!"%\%?%s$r%/%j%C%/$G$-$k$h$&$K$J$j$^$7\e(B
-\e$B$?\e(B (@pxref{Buttons})\e$B!#\e(B
+\e$B%-!<%\!<%%$r;H$&Be$o$j$K!"%\%?%s$r%/%j%C%/$G$-$k$h$&$K$J$j$^$7\e(B
+\e$B$?\e(\99 (@pxref{Buttons})\e$B!#\e(B
@end itemize
@node September Gnus
-@subsubsection September Gnus
+@4ubsubsection September Gnus
@iftex
@iflatex
@itemize @bullet
-@item
-\e$B?7$7$$%a%C%;!<%8:n@.%b!<%I$,;H$o$l$^$9!#\e(B
-@code{mail-mode}, @code{rnews-reply-mode} \e$B$H\e(B @code{gnus-msg} \e$B$NA4$F$N8E\e(B
+@iôem
+Ü$B?7$7$$%a%C%;!<%8:n@.%b!<%I$,;H$o$l$^$9!#\e(B
+@code{mail-mode},\9e@code{rnews-reply-mode} \e$B$H\e(B @code{gnus-msg} \e$B$NA4$F$N8E\e(B
\e$B$$%+%9%?%^%$%:JQ?t$O:#$d5l<0$K$J$j$^$7$?!#\e(B
@item
Gnus \e$B$O\e(B @dfn{\e$B$^$P$i\e(B} \e$B%9%l%C%I$r:n@.$9$k;v$,$G$-$k$h$&$K$J$j$^$7$?\e(B---\e$B%9%l%C\e(B
\e$B%I$N<:$o$l$?5-;v$,$"$k$H$3$m$O6u$N@a$GI=8=$5$l$k$h$&$K$J$C$F$$$^\e(B
-\e$B$9\e(B (@pxref{Customizing Threading})\e$B!#\e(B
+\e$B$9\e(B (@pxref{Customizinz Threading})\e$B!#\e(B
@lisp
-(setq gnus-build-sparse-threads 'some)
+(setq gnus-build-sparse-threads 'so\ 4e)
@end lisp
@item
@code{message-forward-show-mml} \e$B$N%G%#%U%)%k%H$,\e(B @code{best} \e$B$KJQ$o$j$^\e(B
\e$B$7$?!#\e(B
-\e$BCM\e(B @code{best} \e$B$N?6$kIq$$$O!"$=$l$,$U$5$o$7$$>l9g$O\e(B MML \e$B$rI=<($9$k\e(B (\e$B$9$J\e(B
-\e$B$o$A\e(B MIME \e$B$r\e(B MML \e$B$KJQ49$9$k\e(B) \e$B$3$H$G$9!#JQ49$,%G%#%8%?%k=pL>$rL58z$K$7$F\e(B
-\e$B$7$^$&$N$G!"=pL>$5$l$?!"$^$?$O0E9f2=$5$l$?%a%C%;!<%8$rE>Aw$9$k$H$-\e(B
-\e$B$O\e(B MML \e$B$O;H$o$l$^$;$s!#\e(B
+\e$BCM\e(B @code{best} \e$B$N?6$kIq$$$O!"$=$l$,$U$5$o$7$$>l9g$O\e(B @acronym{MML} \e$B$rI=<(\e(B
+\e$B$9$k\e(B (\e$B$9$J$o$A\e(B @acronym{MIME} \e$B$KJQ49$9$k\e(B) \e$B$3$H$G$9!#JQ49$,%G%#%8%?%k=pL>\e(B
+\e$B$rL58z$K$7$F$7$^$&$N$G!"=pL>$5$l$?!"$^$?$O0E9f2=$5$l$?%a%C%;!<%8$rE>Aw$9\e(B
+\e$B$k$H$-$O\e(B @acronym{MML} \e$B$O;H$o$l$^$;$s!#\e(B
@end itemize
@iftex
@code{gnus-message-replysignencrypted} (on by default) will sign
automatically encrypted messages.
-Instructing MML to perform security operations on a @acronym{MIME} part is
-done using the @kbd{C-c C-m s} key map for signing and the @kbd{C-c
-C-m c} key map for encryption, as follows.
+Instructing @acronym{MML} to perform security operations on a
+@acronym{MIME} part is done using the @kbd{C-c C-m s} key map for
+signing and the @kbd{C-c C-m c} key map for encryption, as follows.
@table @kbd
@item C-c C-m C-n
@kindex C-c C-m C-n
@findex mml-unsecure-message
-Remove security related MML tags from message.
+Remove security related @acronym{MML} tags from message.
@end table
@code{back-to-indentation}, which is also useful in message mode.
@item
-The default for message-forward-show-mml changed to symbol @code{best}.
+The default for @code{message-forward-show-mml} changed to symbol @code{best}.
-The behaviour for the @code{best} value is to show MML (i.e., convert MIME
-to MML) when appropriate. MML will not be used when forwarding signed
-or encrypted messages, as the conversion invalidate the digital
-signature.
+The behaviour for the @code{best} value is to show @acronym{MML} (i.e.,
+convert to @acronym{MIME}) when appropriate. @acronym{MML} will not be
+used when forwarding signed or encrypted messages, as the conversion
+invalidate the digital signature.
@end itemize
@iftex
be done with the @kbd{C-c C-a} command, which will prompt for a file
name and a @acronym{MIME} type.
-You can also create arbitrarily complex multiparts using the MML
+You can also create arbitrarily complex multiparts using the @acronym{MML}
language (@pxref{Composing, , Composing, emacs-mime, The Emacs MIME
Manual}).
@cindex encrypt
@cindex secure
-Using the MML language, Message is able to create digitally signed and
-digitally encrypted messages. Message (or rather MML) currently
-support @acronym{PGP} (RFC 1991), @acronym{PGP/MIME} (RFC 2015/3156) and @acronym{S/MIME}.
-Instructing MML to perform security operations on a @acronym{MIME} part is
-done using the @kbd{C-c C-m s} key map for signing and the @kbd{C-c
-C-m c} key map for encryption, as follows.
+Using the @acronym{MML} language, Message is able to create digitally
+signed and digitally encrypted messages. Message (or rather
+@acronym{MML}) currently support @acronym{PGP} (RFC 1991),
+@acronym{PGP/MIME} (RFC 2015/3156) and @acronym{S/MIME}. Instructing
+@acronym{MML} to perform security operations on a @acronym{MIME} part is
+done using the @kbd{C-c C-m s} key map for signing and the @kbd{C-c C-m
+c} key map for encryption, as follows.
@table @kbd
@item C-c C-m C-n
@kindex C-c C-m C-n
@findex mml-unsecure-message
-Remove security related MML tags from message.
+Remove security related @acronym{MML} tags from message.
@end table
These commands do not immediately sign or encrypt the message, they
-merely insert the proper MML secure tag to instruct the MML engine to
-perform that operation when the message is actually sent. They may
-perform other operations too, such as locating and retrieving a
-@acronym{S/MIME} certificate of the person you wish to send encrypted mail
-to. When the mml parsing engine converts your MML into a properly
-encoded @acronym{MIME} message, the secure tag will be replaced with either
-a part or a multipart tag. If your message contains other mml parts,
-a multipart tag will be used; if no other parts are present in your
-message a single part tag will be used. This way, message mode will
-do the Right Thing (TM) with signed/encrypted multipart messages.
+merely insert the proper @acronym{MML} secure tag to instruct the
+@acronym{MML} engine to perform that operation when the message is
+actually sent. They may perform other operations too, such as locating
+and retrieving a @acronym{S/MIME} certificate of the person you wish to
+send encrypted mail to. When the mml parsing engine converts your
+@acronym{MML} into a properly encoded @acronym{MIME} message, the secure
+tag will be replaced with either a part or a multipart tag. If your
+message contains other mml parts, a multipart tag will be used; if no
+other parts are present in your message a single part tag will be used.
+This way, message mode will do the Right Thing (TM) with
+signed/encrypted multipart messages.
Since signing and especially encryption often is used when sensitive
information is sent, you may want to have some way to ensure that your
modern cryptography, @acronym{S/MIME}, various PKCS standards, OpenSSL and
so on.
-The @acronym{S/MIME} support in Message (and MML) require OpenSSL. OpenSSL
-performs the actual @acronym{S/MIME} sign/encrypt operations. OpenSSL can
-be found at @uref{http://www.openssl.org/}. OpenSSL 0.9.6 and later
-should work. Version 0.9.5a cannot extract mail addresses from
-certificates, and it insert a spurious CR character into @acronym{MIME}
-separators so you may wish to avoid it if you would like to avoid
-being regarded as someone who send strange mail. (Although by sending
-@acronym{S/MIME} messages you've probably already lost that contest.)
+The @acronym{S/MIME} support in Message (and @acronym{MML}) require
+OpenSSL. OpenSSL performs the actual @acronym{S/MIME} sign/encrypt
+operations. OpenSSL can be found at @uref{http://www.openssl.org/}.
+OpenSSL 0.9.6 and later should work. Version 0.9.5a cannot extract mail
+addresses from certificates, and it insert a spurious CR character into
+@acronym{MIME} separators so you may wish to avoid it if you would like
+to avoid being regarded as someone who send strange mail. (Although by
+sending @acronym{S/MIME} messages you've probably already lost that
+contest.)
To be able to send encrypted mail, a personal certificate is not
-required. Message (MML) need a certificate for the person to whom you
+required. Message (@acronym{MML}) need a certificate for the person to whom you
wish to communicate with though. You're asked for this when you type
@kbd{C-c C-m c s}. Currently there are two ways to retrieve this
certificate, from a local file or from DNS. If you chose a local
file, it need to contain a X.509 certificate in @acronym{PEM} format.
If you chose DNS, you're asked for the domain name where the
certificate is stored, the default is a good guess. To my belief,
-Message (MML) is the first mail agent in the world to support
+Message (@acronym{MML}) is the first mail agent in the world to support
retrieving @acronym{S/MIME} certificates from DNS, so you're not
likely to find very many certificates out there. At least there
should be one, stored at the domain @code{simon.josefsson.org}. LDAP
As for signing messages, OpenSSL can't perform signing operations
without some kind of configuration. Especially, you need to tell it
-where your private key and your certificate is stored. MML uses an
-Emacs interface to OpenSSL, aptly named @code{smime.el}, and it
+where your private key and your certificate is stored. @acronym{MML}
+uses an Emacs interface to OpenSSL, aptly named @code{smime.el}, and it
contain a @code{custom} group used for this configuration. So, try
@kbd{M-x customize-group RET smime RET} and look around.
be done with the @kbd{C-c C-a} command, which will prompt for a file
name and a @acronym{MIME} type.
-You can also create arbitrarily complex multiparts using the MML
+You can also create arbitrarily complex multiparts using the @acronym{MML}
language (@pxref{Composing, , Composing, emacs-mime, The Emacs MIME
Manual}).
@cindex encrypt
@cindex secure
-Using the MML language, Message is able to create digitally signed and
-digitally encrypted messages. Message (or rather MML) currently
-support @acronym{PGP} (RFC 1991), @acronym{PGP/MIME} (RFC 2015/3156) and @acronym{S/MIME}.
-Instructing MML to perform security operations on a @acronym{MIME} part is
-done using the @kbd{C-c C-m s} key map for signing and the @kbd{C-c
-C-m c} key map for encryption, as follows.
+Using the @acronym{MML} language, Message is able to create digitally
+signed and digitally encrypted messages. Message (or rather
+@acronym{MML}) currently support @acronym{PGP} (RFC 1991),
+@acronym{PGP/MIME} (RFC 2015/3156) and @acronym{S/MIME}. Instructing
+@acronym{MML} to perform security operations on a @acronym{MIME} part is
+done using the @kbd{C-c C-m s} key map for signing and the @kbd{C-c C-m
+c} key map for encryption, as follows.
@table @kbd
@item C-c C-m C-n
@kindex C-c C-m C-n
@findex mml-unsecure-message
-Remove security related MML tags from message.
+Remove security related @acronym{MML} tags from message.
@end table
These commands do not immediately sign or encrypt the message, they
-merely insert the proper MML secure tag to instruct the MML engine to
-perform that operation when the message is actually sent. They may
-perform other operations too, such as locating and retrieving a
-@acronym{S/MIME} certificate of the person you wish to send encrypted mail
-to. When the mml parsing engine converts your MML into a properly
-encoded @acronym{MIME} message, the secure tag will be replaced with either
-a part or a multipart tag. If your message contains other mml parts,
-a multipart tag will be used; if no other parts are present in your
-message a single part tag will be used. This way, message mode will
-do the Right Thing (TM) with signed/encrypted multipart messages.
+merely insert the proper @acronym{MML} secure tag to instruct the
+@acronym{MML} engine to perform that operation when the message is
+actually sent. They may perform other operations too, such as locating
+and retrieving a @acronym{S/MIME} certificate of the person you wish to
+send encrypted mail to. When the mml parsing engine converts your
+@acronym{MML} into a properly encoded @acronym{MIME} message, the secure
+tag will be replaced with either a part or a multipart tag. If your
+message contains other mml parts, a multipart tag will be used; if no
+other parts are present in your message a single part tag will be used.
+This way, message mode will do the Right Thing (TM) with
+signed/encrypted multipart messages.
Since signing and especially encryption often is used when sensitive
information is sent, you may want to have some way to ensure that your
modern cryptography, @acronym{S/MIME}, various PKCS standards, OpenSSL and
so on.
-The @acronym{S/MIME} support in Message (and MML) require OpenSSL. OpenSSL
-performs the actual @acronym{S/MIME} sign/encrypt operations. OpenSSL can
-be found at @uref{http://www.openssl.org/}. OpenSSL 0.9.6 and later
-should work. Version 0.9.5a cannot extract mail addresses from
-certificates, and it insert a spurious CR character into @acronym{MIME}
-separators so you may wish to avoid it if you would like to avoid
-being regarded as someone who send strange mail. (Although by sending
-@acronym{S/MIME} messages you've probably already lost that contest.)
+The @acronym{S/MIME} support in Message (and @acronym{MML}) require
+OpenSSL. OpenSSL performs the actual @acronym{S/MIME} sign/encrypt
+operations. OpenSSL can be found at @uref{http://www.openssl.org/}.
+OpenSSL 0.9.6 and later should work. Version 0.9.5a cannot extract mail
+addresses from certificates, and it insert a spurious CR character into
+@acronym{MIME} separators so you may wish to avoid it if you would like
+to avoid being regarded as someone who send strange mail. (Although by
+sending @acronym{S/MIME} messages you've probably already lost that
+contest.)
To be able to send encrypted mail, a personal certificate is not
-required. Message (MML) need a certificate for the person to whom you
+required. Message (@acronym{MML}) need a certificate for the person to whom you
wish to communicate with though. You're asked for this when you type
@kbd{C-c C-m c s}. Currently there are two ways to retrieve this
certificate, from a local file or from DNS. If you chose a local
file, it need to contain a X.509 certificate in @acronym{PEM} format.
If you chose DNS, you're asked for the domain name where the
certificate is stored, the default is a good guess. To my belief,
-Message (MML) is the first mail agent in the world to support
+Message (@acronym{MML}) is the first mail agent in the world to support
retrieving @acronym{S/MIME} certificates from DNS, so you're not
likely to find very many certificates out there. At least there
should be one, stored at the domain @code{simon.josefsson.org}. LDAP
As for signing messages, OpenSSL can't perform signing operations
without some kind of configuration. Especially, you need to tell it
-where your private key and your certificate is stored. MML uses an
-Emacs interface to OpenSSL, aptly named @code{smime.el}, and it
+where your private key and your certificate is stored. @acronym{MML}
+uses an Emacs interface to OpenSSL, aptly named @code{smime.el}, and it
contain a @code{custom} group used for this configuration. So, try
@kbd{M-x customize-group RET smime RET} and look around.