* Disconnected Operations:: Off-Line management
* Expire and Archive:: Automatic expiration and archiving of messages
* Scoring:: Score of the messages
-* Split messages:: Splitting messages
* Address Book:: Management of Address Book
* Spam Filter:: Spam filtering
-* Batch Processing:: Invoke commands in batch mode
-* Customization:: Customizing Wanderlust
+* Advanced Issues:: Advanced Issues
* Migration:: Switch from older version of Wanderlust
* Terminology:: Terminologies
* Mailing List:: Wanderlust mailing list
Wanderlust uses ELMO as it's interface, so you can use every folder types
supported by ELMO.
-As of version @value{VERSION}, 14 types of folders are predefined. These
+As of version @value{VERSION}, 15 types of folders are predefined. These
are IMAP, NNTP, LocalDir(MH), Maildir, News Spool, Archive, POP,
-Shimbun, Namazu, Multi, Filter, Pipe, Internal and File folder types.
+Shimbun, Namazu, Multi, Filter, Pipe, File, Access and Internal folder
+types.
@menu
* IMAP Folder:: @samp{%} -- IMAP folder
* Pipe Folder:: @samp{|} -- Pipe folder
* Internal Folder:: @samp{'} -- Internal folder
* File Folder:: -- File folder
+* Access Folder:: -- Access folder
@end menu
@item
Date filter: @samp{since:@var{date}}, @samp{before:@var{date}}
-since: only messages arrived since @var{date} are picked.
-before: only messages arrived before @var{date} are picked.
+since: only messages arrived since @var{date} are picked (@var{date} is included).
+before: only messages arrived before @var{date} are picked (@var{date} is not included).
You can specify following as @var{date}.
unread -> unread
important -> important
answered -> replied
+forwarded -> forwarded
digest -> unread or important
-any -> unread or important or replied
+any -> unread or replied or forwarded or global-flag.
@end group
@end example
-You can also use flags which you have set as global flag.
+You can also use flags which you have set as `global-flag'. global-flag
+is a flag which has arbitrary name. You can put global-flag on messages
+by invoking @code{wl-summary-set-flags} (Key @key{F}). By default,
+@samp{important} flag is prepared. You can view messages with
+global-flag by visiting the subfolder of @samp{'flag} folder.
+
@xref{Internal Folder}.
Example:
(@file{~/.elmo/cache}).
-@node File Folder, , Internal Folder, Folders
+@node File Folder, Access Folder, Internal Folder, Folders
@section File folder
@cindex File Folder
@end example
+@node Access Folder, , File Folder, Folders
+@section Access folder
+@cindex Access Folder
+
+A folder to access virtual folder which collects messages from a root
+folder and subfolders of one. The add and remove of the subfolder is
+automatically reflected.
+
+
+Format:
+
+@example
+@samp{access:} @var{root-folder}
+@end example
+
+Example:
+
+@example
+@group
+access:%INBOX -> All subfolders of IMAP mailbox "inbox".
+access:'cache -> All of 'cache folder
+@end group
+@end example
+
+
@node Folder, Summary, Folders, Top
@chapter Folder mode
@cindex Folder
@subsection Temporary Marks
@cindex Mark, Temporary
-There are four temporary marks,
+There are seven temporary marks,
@samp{*}, @samp{d}, @samp{D}, @samp{o}, @samp{O}, @samp{i} and @samp{~}.
Temporary marks indicates message operations.
@subsection Persistent Marks
-There are five persistent marks, @samp{N}, @samp{?}, @samp{U}, @samp{!},
-@samp{u}, @samp{A}, @samp{&} and @samp{$}.
+There are ten persistent marks, @samp{!}, @samp{N}, @samp{n}, @samp{U},
+@samp{u}, @samp{A}, @samp{a}, @samp{F}, @samp{f} and @samp{$}.
The persistent mark indicates the message's status and it is saved.
Each persistent mark indicates:
@table @samp
@item N
It is new message.
-@item ?
-It is new but cached message.
+@item n
+It is new message. It differs from @samp{N} that message with @samp{n}
+is already cached.
@item U
It is unread message.
-@item !
-It is unread but cached message.
@item u
-It is read but it is not cached.
+It is unread message. It differs from @samp{U} that message with @samp{u}
+is already cached.
+@item !
+It is message already read. It differs from message without mark that
+message with @samp{!} is not cached yet.
@item A
It is already replied message.
-@item &
-It is already replied but cached message.
+@item a
+It is already replied message. It differs from @samp{A} that message
+with @samp{a} is already cached.
+@item F
+It is already forwarded message.
+@item f
+It is already forwarded message. It differs from @samp{F} that message
+with @samp{f} is already cached.
@item $
It is a message with some global flag. It is convenient to put this
mark on the messages to remember (If you want to remember to write a
persistent mark.
@end table
-@samp{N}, @samp{U}, @samp{u}, @samp{A} indicates that the message have
-no cache. Messages with the marks other than these, you can read them
-in the offline status even they are in the IMAP folder or netnews
-folder.
+@samp{N}, @samp{U}, @samp{!}, @samp{A}, @samp{F} indicates that the
+message have no cache. Messages with the marks other than these, you
+can read them in the offline status even they are in the IMAP folder or
+netnews folder.
Among messages with persistent marks, ones with marks specified by
@code{wl-summary-expire-reserve-marks} are excluded from the expiration
@table @code
@item wl-message-buffer-prefetch-folder-type-list
@vindex wl-message-buffer-prefetch-folder-type-list
-The initial setting is @code{t}. In this case, prefetch messages in all
-folders.
-If it is a list of folder types, it specifies the folder types in which
-message prefetching is enabled.
-Following is an example (prefetch messages in nntp and imap4 folders)
-
-@lisp
-@group
-(setq wl-message-buffer-prefetch-folder-type-list
- '(nntp imap4))
-@end group
-@end lisp
-
-In this case, multi folder that contains localdir and imap4 prefetches
-only imap4 messages. This variable precedes the value of
+The initial setting is @code{'(imap4 nntp)}. If it is a list of folder
+types, it specifies the folder types in which message prefetching is
+enabled. In initial setting, messages are prefetch only in the nntp and
+imap4 folders. In this case, multi folder that contains localdir and
+imap4 prefetches only imap4 messages. This variable precedes the value of
@code{wl-message-buffer-prefetch-folder-list}.
+To prefetch messages in all folder types, specify @code{t}.
@item wl-message-buffer-prefetch-folder-list
@vindex wl-message-buffer-prefetch-folder-list
@item wl-message-buffer-prefetch-depth
@vindex wl-message-buffer-prefetch-depth
-The initial setting is 3. The number of messages for automatical prefetch.
+The initial setting is 1. The number of messages for automatical prefetch.
@item wl-message-buffer-prefetch-idle-time
@vindex wl-message-buffer-prefetch-idle-time
-The initial setting is 0.2 (in seconds). The period of automatical prefetch.
+The initial setting is 1 (in seconds). The period of automatical prefetch.
@item wl-message-buffer-prefetch-threshold
@vindex wl-message-buffer-prefetch-threshold
@end group
@end lisp
-Where the number set the column number of the field (for negative value,
-filled from right)
+Where the number set the column number of the field. If negative value,
+the column is filled from right. If the number begins with @samp{0},
+@samp{0} is used for filling columns instead of @samp{ }.
+
+Example:
+
+@example
+@group
+%5n -> `1 '
+%-05n -> `00001'
+@end group
+@end example
+
Major control strings defined by @code{wl-summary-line-format-spec-alist}
are displayed in the following list.
@example
@group
%n message number
+%T temporary mark
+%P persistent mark
%Y year
%M month
%D day
%S size
%c +number-of-children: (display only for opened thread)
%C [+number-of-children] (display only for opened thread)
-%T temporary mark (mandatory)
-%P persistent mark (mandatory)
+%# mailing list information (`(' ML-name [ ` ' ML-number ] `)')
+%l number in the mailing list
+%@@ `@@' only if the first MIME part is multipart/mixed
+%~ ` ' only if previous column is empty
@end group
@end example
-@code{wl-summary-line-format} must contain temporary mark (@samp{%T})
-and persistent mark (@samp{%P}). Furthermore, these marks must appear at
-the constant column. For example, if you specify @samp{%T} or
+The temporary mark (@samp{%T}) and persistent mark (@samp{%P}) must
+appear at the constant column. For example, if you specify @samp{%T} or
@samp{%P} after the @samp{%t}, which changes its length by thread
position, marks are not treated correctly.
@item .
@kindex . (Summary)
@findex wl-summary-redisplay
-Redisplay a message at the current cursor point.
-If this command is called with prefix argument,
-Redisplay message regardless of the message cache (message is re-loaded
-from source).
-(@code{wl-summary-redisplay})
+Redisplay a message at the current cursor point with default display
+type. If this command is called with prefix argument, reload and redisplay
+message regardless of the message cache.
+If this command is called with twice multiples @kbd{C-u} as @kbd{C-u C-u .},
+reload and redisplay message with current display type regardless of the
+message cache. (@code{wl-summary-redisplay})
@item <
@kindex < (Summary)
@item @key{RET}
@kindex @key{RET} (Summary)
-@findex wl-summary-next-line-content
+@findex wl-summary-enter-handler
Display the next line of the message at the current cursor point.
-Display the message at the current cursor point if it is not displayed yet.
-(@code{wl-summary-next-line-content})
+Display the message at the current cursor point if it is not displayed
+yet. (@code{wl-summary-next-line-content}) If prefix argument is
+specified, message is scrolled up by one line.
+(@code{wl-summary-prev-line-content}) If prefix argument is numeric,
+cursor is jumped to the message with specified number.
@item -
@itemx M-@key{RET}
@kindex / (Summary)
@findex wl-thread-open-close
Toggle open or close the thread at the current cursor point.
+With prefix argument, open all children threads.
(@code{wl-thread-open-close})
@item [
@item H
@kindex H (Summary)
-@findex wl-summary-redisplay-all-header
-Redisplay the message at current cursor point with all header fields.
-(@code{wl-summary-redisplay-all-header})
+@findex wl-summary-toggle-all-header
+Toggle display type between all and partial header fields and redisplay
+the message at current cursor point. If this command is called with
+prefix argument, reload and redisplay message regardless of the message cache.
+If this command is called with twice multiples @kbd{C-u} as @kbd{C-u C-u H},
+set default display type of summary by current display type of header fields.
+(@code{wl-summary-toggle-all-header})
@item M
@kindex M (Summary)
-@findex wl-summary-redisplay-no-mime
-Redisplay the message at current cursor point without MIME analysis.
-(@code{wl-summary-redisplay-no-mime})
+@findex wl-summary-toggle-mime
+Toggle display type for MIME analysis and redisplay the message at
+current cursor point. A change is performed in the order set as
+@code{wl-summary-display-mime-mode-list}. If this command is called
+with numeric prefix argument, it switch directly as follows.
+
+@example
+@group
+1: Enable MIME analysis.
+2: Enable MIME analysis only for header fields.
+3: Disable MIME analysis.
+@end group
+@end example
+
+If this command is called with twice multiples @kbd{C-u} as @kbd{C-u C-u
+M}, set default display type of summary by current display type of MIME
+analysis. (@code{wl-summary-toggle-mime})
+
+@item C-c C-f
+@kindex C-c C-f (Summary)
+@findex wl-summary-toggle-header-narrowing
+Toggle header body narrowing of the message at current cursor point.
+(@code{wl-summary-toggle-header-narrowing})
@item B
@kindex B (Summary)
rescan Redisplay summary by rescanning present msgdb.
rescan-noscore Redisplay summary by rescanning present msgdb.
Display messages killed by score, too.
+rescan-thread Redisplay summary by rescanning present msgdb.
+ Reconstruct thread, too.
cache-status Sync the all marks with the real status of cache.
mark Update marks.
no-sync Do nothing.
Sort summary order.
You can sort by @samp{date}, @samp{from}, @samp{number}, @samp{subject},
@samp{size} and @samp{list-info}.
+With prefix argument, sort summary lines into descending order.
(@code{wl-summary-sort})
@item T
@item ?
@kindex ? (Summary)
Put @samp{*} mark on the messages that satisfies the specified condition.
+If messages already have @samp{*} mark, new @samp{*} marks are overridden.
+If prefix argument is specified, current @samp{*} marks are removed and
+new @samp{*} marks are appended.
+
@findex wl-summary-pick
(@code{wl-summary-pick})
The initial setting is @code{t}.
If non-nil, message is split as pages by @samp{^L}.
-@item wl-message-window-size
-@vindex wl-message-window-size
-The initial setting is '(1 . 4).
-A cons cell to specify the rate of summary and message window.
-car:cdr corresponds summary:message.
-
@item wl-summary-from-function
@vindex wl-summary-from-function
Format function to display sender in summary.
The initial setting is t.
If non-nil, cursor point is moved to the center of the summary window.
+@item wl-summary-max-thread-depth
+@vindex wl-summary-max-thread-depth
+The initial setting is 30.
+If thread depth is larger than this value, divide it.
+
@item wl-summary-divide-thread-when-subject-changed
@vindex wl-summary-divide-thread-when-subject-changed
The initial setting is @code{nil}. If non-nil, thread is split if
The initial setting is @code{t}. If non-nil, messages read in Shimbun
folders are cached.
+@item wl-summary-resend-use-cache
+@vindex wl-summary-resend-use-cache
+The initial setting is @code{nil}¡£If non-nil, messages are resend
+using cache even in the offline status. Note that if you use cache,
+the message identity is not guaranteed.
+
@item wl-folder-process-duplicates-alist
@vindex wl-folder-process-duplicates-alist
The initial setting is @code{nil}.
@end group
@end lisp
-Specify the color of message in summary buffer with flag. If multiple
-global flags are on one message, the former flag in this list is
-preferred.
+Specify the color and the mark of message in summary buffer with flag.
+If the mark are omitted, the mark specified in the variable
+@code{wl-summary-flag-mark} is assumed. If multiple global flags are on
+one message, the former flag in this list is preferred.
+
+Example:
+
+@lisp
+@group
+(setq wl-summary-flag-alist
+ '((important "purple")
+ (todo "red")
+ (business "green" "B")
+ (private "blue" "X")))
+@end group
+@end lisp
+
+@item wl-summary-display-mime-mode-list
+@vindex wl-summary-display-mime-mode-list
+The initial setting is the list shown below:
+
+@lisp
+@group
+(mime as-is)
+@end group
+@end lisp
+
+@noindent
+The function @code{wl-summary-toggle-mime} switch specification of MIME
+analysis in the order of this list. You can specify one of the follows.
+
+@example
+@code{mime} : Header and body are decoded.
+@code{header-only} : Only header is decoded.
+@code{as-is} : Header and body are not decoded.
+@end example
@end table
@table @code
@item wl-message-window-size
@vindex wl-message-window-size
-Initial setting is @code{'(1 . 4)}. It is a cons cell and the ratio of
+Initial setting is @code{(1 . 4)}. It is a cons cell and the ratio of
its car and cdr value corresponds to the ratio of Summary and Message
windows.
@vindex wl-message-truncate-lines
The initial value is the value of @code{default-truncate-lines}.
If it is non-nil, truncate long lines in message buffer.
+
+@item wl-message-auto-reassemble-message/partial
+@vindex wl-message-auto-reassemble-message/partial
+The initial setting is @code{nil}.
+If non-nil, automatically reassemble fragments of the message on
+displaying when its MIME media type is message/partial.
@end table
@node Draft, Disconnected Operations, Message, Top
If @code{wl-template-visible-select} is @code{nil}, you should type the
name of the template in the mini buffer.
+If @code{wl-template-select} is executed with prefix argument,
+inversed value of @code{wl-template-visible-select} is used.
+
As shown in the example in @code{wl-draft-config-alist}, you can select
@samp{default} template by writing:
Cites the content of the current message buffer (the part under cursor).
If the region is active, cites the region (it affects only if
@code{transient-mark-mode} (on GNU Emacs) or @code{zmacs-regions}
-(on XEmacs) is Non-nil).
+(on XEmacs) is Non-nil). If the command is called with prefix argument,
+the text inserted by yank command (the text content of clipboard) is cited.
(@code{wl-draft-yank-original})
@item C-c C-p
The initial setting is @code{nil}.
If non-nil, use new frame for the draft.
+@item wl-draft-reply-default-position
+@vindex wl-draft-reply-default-position
+The initial setting is @code{body}.
+Specify initial cursor position on draft buffer for reply.
+@code{body} is to move cursor to the top of the message body,
+@code{bottom} to the bottom of the message body, and @code{top} to the
+top of the header.
+
@item wl-draft-truncate-lines
@vindex wl-draft-truncate-lines
The initial value is the value of @code{default-truncate-lines}.
@code{digest-md5}, @code{login}, etc. If @code{nil}, authentication
will not be carried out.
+@item wl-smtp-authenticate-realm
+@vindex wl-smtp-authenticate-realm
+The initial setting is @code{nil}.
+This string-valued variable specifies the authentication realm for SMTP
+AUTH authentication. You have to set this variable for DIGEST-MD5
+authentication and so on.
+If @code{nil}, authentication realm is not specified in the authentication.
+
@item wl-smtp-connection-type
@vindex wl-smtp-connection-type
The initial setting is @code{nil}.
* Re-file and Copy queue:: Re-file and Copy (IMAP4)
* Creation of Folders:: Create Folders off-line (IMAP4)
* Marking:: Mark (IMAP4)
-* Pre-fetching Reservations:: Pre-fetch (IMAP4, NNTP)
+* Pre-fetching Reservations:: Pre-fetch
@end menu
As soon as Wanderlust becomes on-line, such operations invoked off-line
are reflected in the servers via network.
+If the variable @code{elmo-enable-disconnected-operation} is @code{nil},
+these off-line operations are not executed and causes an error on
+re-file or copy operations.
@node Send Messages off-line, Re-file and Copy queue, Enable Operations, Enable Operations
@subsection Transmission of Messages
@node Pre-fetching Reservations, , Marking, Enable Operations
-@subsection Pre-fetching (IMAP4, NNTP)
+@subsection Pre-fetching
-You can make reservations for pre-fetching messages in IMAP or NNTP
-folders. Reserved messages are marked with @samp{!} but not cached
-yet. When Wanderlust becomes on-line, they are pre-fetched from
-servers.
-
-If the variable @code{elmo-enable-disconnected-operation} is @code{nil},
-these off-line operations for IMAP4 and NNTP do not take place, and
-off-line re-file, copy or suchlike simply results in error.
-
-Because off-line operations use cache files, it is a bad idea to erase
-them by hand; it may cause Wanderlust to malfunction.
-
-If you want to remove caches, be sure to execute @kbd{M-x
-elmo-cache-expire-by-size}. @code{elmo-cache-expire-by-size} does not
-remove caches for messages relevant to off-line operations.
+You can make reservations for pre-fetching messages in networking
+folders (IMAP, NNTP, POP3, shimbun). Reserved messages are marked with
+@samp{u} but not cached yet. When Wanderlust becomes on-line, they are
+pre-fetched from servers.
@node Plugged Mode, Off-line State settings, Enable Operations, Disconnected Operations
@item elmo-enable-disconnected-operation
@vindex elmo-enable-disconnected-operation
-The initial setting is @code{t}. Controls off-line operations
-regarding IMAP4. If non-nil, off-line operations are carried out.
+The initial setting is @code{t}. Controls off-line operations regarding
+networking folders. If non-nil, off-line operations are carried out.
@item elmo-lost+found-folder
@vindex elmo-lost+found-folder
@lisp
@group
-(list wl-summary-important-mark
+(list wl-summary-flag-mark
wl-summary-new-uncached-mark
wl-summary-new-cached-mark
- wl-summary-unread-mark
wl-summary-unread-uncached-mark
wl-summary-unread-cached-mark)
@end group
@end table
-@node Scoring, Split messages, Expire and Archive, Top
+@node Scoring, Address Book, Expire and Archive, Top
@chapter Score of the Messages
@cindex Scoring
@c @cindex Kill File
@end example
-@node Split messages, Address Book, Scoring, Top
-@chapter Message splitting
-@cindex Split messages
-
-You can use @code{elmo-split} to split message in folder specified by
-the variable @code{elmo-split-folder} a la @command{procmail} according
-to some specified rules. To use this feature, set as follows in your
-@file{~/.emacs} at first.
-
-@lisp
-(autoload 'elmo-split "elmo-split" "Split messages on the folder." t)
-@end lisp
-
-Set source folder like following.
-
-@lisp
-(setq elmo-split-folder "%inbox")
-@end lisp
-
-And specify the rule in the variable @code{elmo-split-rule} (its format
-will be is described below).
-Then you can invoke @kbd{M-x elmo-split} to split messages according to
-@code{elmo-split-rule}. On the other hand, invoke @kbd{C-u M-x elmo-split}
-to do a rehearsal and show result (do not split actually).
-
-
-We will describe how to specify the rule. First of all, see following
-example, please.
-
-@lisp
-@group
-(setq elmo-split-rule
- ;; @r{Store messages from spammers into @samp{+junk}}
- '(((or (address-equal from "i.am@@spammer")
- (address-equal from "dull-work@@dull-boy")
- (address-equal from "death-march@@software")
- (address-equal from "ares@@aon.at")
- (address-equal from "get-money@@richman"))
- "+junk")
- ;; @r{Store messages from mule mailing list into @samp{%mule}}
- ((equal x-ml-name "mule") "%mule")
- ;; @r{Store messages from wanderlust mailing list into @samp{%wanderlust}}
- ;; @r{and continue evaluating following rules}
- ((equal x-ml-name "wanderlust") "%wanderlust" continue)
- ;; @r{Store messages from Yahoo user into @samp{+yahoo-@{username@}}}
- ((match from "\\(.*\\)@@yahoo\\.com")
- "+yahoo-\\1")
- ;; @r{Store unmatched mails into @samp{+inbox}}
- (t "+inbox")))
-@end group
-@end lisp
-
-The basic unit of the rule is a combination like
-
-@lisp
-(@samp{CONDITION} @samp{ACTION} [@code{continue}])
-@end lisp
-
-If @samp{CONDITION} is true, @samp{ACTION} is performed.
-The 1st element @samp{CONDITION} is a condition represented by a
-balanced expression (sexp). Its grammar will be explained below.
-The 2nd element @samp{ACTION} is the name of the folder to split
-messages into, or a symbol. When the 3rd element @code{continue} is
-specified as symbol, evaluating rules is not stopped even when the
-condition is satisfied.
-
-The grammar for @samp{CONDITION} is as follows. See example above to
-learn how to write the condition practically.
-
-@enumerate
-@item
-Functions which accept arguments @samp{FIELD-NAME} and @samp{VALUE}.
-(@samp{FIELD-NAME} is a symbol that describes the field name)
-
-@table @code
-@item @code{equal}
-True if the field value equals to @samp{VALUE}.
-Case of the letters are ignored.
-@item @code{match}
-True if the field value matches to VALUE.
-@samp{VALUE} can contain @code{\&} and @code{\N} which will substitute
-from matching @code{\(\)} patterns in the previous @samp{VALUE}.
-@item @code{address-equal}
-True if one of the addresses in the field equals to
-@samp{VALUE}. Case of the letters are ignored.
-@item @code{address-match}
-True if one of the addresses in the field matches to
-@samp{VALUE}.
-@samp{VALUE} can contain @code{\&} and @code{\N} which will substitute
-from matching @code{\(\)} patterns in the previous @samp{VALUE}.
-@end table
-
-@item
-Functions which accept an integer argument (@samp{SIZE}).
-
-@table @code
-@item @code{<}
-True if the size of the message is less than @samp{SIZE}.
-@item @code{>}
-True if the size of the message is greater than @samp{SIZE}.
-@end table
-
-@item
-Functions which accept any number of arguments.
-
-@table @code
-@item @code{or}
-True if one of the argument returns true.
-@item @code{and}
-True if all of the arguments return true.
-@end table
-
-@item
-A symbol.
-
-When a symbol is specified, it is evaluated.
-@end enumerate
-
-You can specify followings as 2nd @samp{ACTION}.
-
-@enumerate
-@item
-folder name
-
-If some string is specified, it will be regarded as the destination
-folder, and the message will be appended to it.
-
-@item
-@samp{delete}
-
-If the symbol @samp{delete} is specified, delete the substance of the
-message in @code{elmo-split-folder}
-
-@item
-@samp{noop}
-
-If the symbol @samp{noop} is specified, do nothing on the message and
-keep it as it is.
-
-@item
-function
-
-If some function is specified, execute it.
-@end enumerate
-
-If the message passes all rules, it will be dealed along @samp{ACTION}
-specified by @code{elmo-split-default-action}.
-
-
-@node Address Book, Spam Filter, Split messages, Top
+@node Address Book, Spam Filter, Scoring, Top
@chapter Address Book
@cindex Address Book
@end table
-@node Spam Filter, Batch Processing, Address Book, Top
+@node Spam Filter, Advanced Issues, Address Book, Top
@chapter Spam Filter
@cindex Spam Filter
* spamfilter:: spamfilter.el
* bsfilter:: bsfilter
* SpamAssassin:: SpamAssassin
+* SpamOracle:: SpamOracle
* Regular Expressions Header Matching:: Header regexp
@end menu
@end table
-@node SpamAssassin, Regular Expressions Header Matching, bsfilter, Spam Filter Processors
+@node SpamAssassin, SpamOracle, bsfilter, Spam Filter Processors
@subsection SpamAssassin
@cindex SpamAssassin
@end table
-@node Regular Expressions Header Matching, , SpamAssassin, Spam Filter Processors
+@node SpamOracle, Regular Expressions Header Matching, SpamAssassin, Spam Filter Processors
+@subsection SpamOracle
+@cindex SpamOracle
+
+SpamOracle (`http://pauillac.inria.fr/~xleroy/software.html#spamoracle')
+is a spam filter implemented by Objective Caml language.
+
+To use spam filter with @file{spamoracle}, write following setting in
+@file{~/.wl} or somewhere else.
+(Of course, you have to install SpamOracle beforehand.)
+
+@lisp
+@group
+(setq elmo-spam-scheme 'spamoracle)
+@end group
+@end lisp
+
+@subsubsection Customizable Variables
+
+@table @code
+@item elmo-spam-spamoracle-program
+@vindex elmo-spam-spamoracle-program
+The initial setting is @file{spamoracle}. Specify the name of
+executable of spamoracle. If the executable is not in your
+environmental variable @env{PATH}, you should set this by full path.
+
+@item elmo-spam-spamoracle-config-filename
+@vindex elmo-spam-spamoracle-config-filename
+Specify the name of config file. @code{nil} to use default file
+(@file{~/.spamoracle.conf}). The initial setting is @code{nil}.
+
+@item elmo-spam-spamoracle-database-filename
+@vindex elmo-spam-spamoracle-database-filename
+The initial setting is @file{~/.elmo/.spamoracle.db}.
+It specifies the name of database file.
+
+@item elmo-spam-spamoracle-spam-header-regexp
+@vindex elmo-spam-spamoracle-spam-header-regexp
+The initial setting is @code{"^X-Spam: yes;"}. It specifies the regular
+expression of the header that indicates spam mail. Use this setting
+when you change the @code{spam_header} parameter in the config file.
+
+@end table
+
+@node Regular Expressions Header Matching, , SpamOracle, Spam Filter Processors
@subsection Regular Expressions Header Matching
@cindex Regular Expressions Header Matching
@end table
-@node Batch Processing, Customization, Spam Filter, Top
-@chapter Batch Processing
-@cindex Batch Processing
-
-You can request wanderlust to do some job on the command line.
-For now, you can invoke prefetching new messages in specified folders.
-
-Specify target folders in @code{wl-batch-prefetch-folder-list} then
-invoke as follows to execute prefetching:
-
-@example
-@group
-% emacs -batch -l wl-batch -f wl-batch-prefetch
-@end group
-@end example
-
-@section Customize Variables
-
-@table @code
-@item wl-batch-prefetch-folder-list
-@vindex wl-batch-prefetch-folder-list
-Target folders of prefetching by @code{wl-batch-prefetch}, specified as
-a list of folder names.
-@end table
-
-
-@node Customization, Migration, Batch Processing, Top
-@chapter Customizing Wanderlust
-@cindex Customization
+@node Advanced Issues, Migration, Spam Filter, Top
+@chapter Advanced Issues
+@cindex Advanced Issues
@menu
* Living with other packages:: Cooperating with other packages
* Highlights:: Highlights
* Biff:: Notify Mail arrival
+* Password Management:: Manage Passwords
+* Split messages:: Splitting messages
+* Batch Processing:: Invoke commands in batch mode
* Advanced Settings:: Advanced Settings
* Customizable Variables:: Customizable Variables
* Hooks:: Hooks
@end menu
-@node Living with other packages, Highlights, Customization, Customization
+@node Living with other packages, Highlights, Advanced Issues, Advanced Issues
@section Living with other packages
Examples with other packages.
You can find the usage in comment region at the head of @file{mime-w3m.el}.
-@node Highlights, Biff, Living with other packages, Customization
+@node Highlights, Biff, Living with other packages, Advanced Issues
@section Highlights
@subsection Customizable Variables
@end table
-@node Biff, Advanced Settings, Highlights, Customization
+@node Biff, Password Management, Highlights, Advanced Issues
@section Notify Mail arrival
@cindex Biff
The initial setting is 40 (in seconds).
Check mail arrival in this period.
+@item wl-biff-use-idle-timer
+@vindex wl-biff-use-idle-timer
+The initial setting is @code{nil}.
+If it is @code{nil}, check mail arrival when the time specified by
+@code{wl-biff-check-interval} has passed. If it is non-nil, check
+mail arrival when idling time exceeds @code{wl-biff-check-interval}.
+
@item wl-biff-notify-hook
@vindex wl-biff-notify-hook
This hook is run at the arrival of new mail.
@end table
-@node Advanced Settings, Customizable Variables, Biff, Customization
+@node Password Management, Split messages, Biff, Advanced Issues
+@section Manage Passwords
+
+If you input passwords to connect servers, they are stored in the
+variable @code{elmo-passwd-alist} per connection. You should be careful
+that others might read your passwords if they can touch your Emacs,
+since encoded plain passwords are there.
+
+If you invoke @kbd{M-x elmo-passwd-alist-save} while you have stored
+passwords, then they are saved on the file, and it will save you to
+input passwords. In this case, the risk that someone reads your
+keystroke might decrease, but please not that plain passwords are
+stored on a file. You should treat them very carefully.
+To remove saved passwords on file, invoke @kbd{M-x elmo-passwd-alist-clear}
+and then @kbd{M-x elmo-passwd-alist-save}.
+
+@table @code
+@item elmo-passwd-alist-file-name
+@vindex elmo-passwd-alist-file-name
+The initial setting is @file{passwd}.
+This is the name of the file in which passwords are saved.
+@code{elmo-passwd-alist-save} saves current passwords to the file.
+
+@item elmo-passwd-life-time
+@vindex elmo-passwd-life-time
+The initial setting is @code{nil}.
+If the value is some number, timer is set to remove password entry after
+@code{elmo-passwd-life-time} seconds since you input the password.
+@code{nil} means never to remove passwords.
+@end table
+
+
+@node Split messages, Batch Processing, Password Management, Advanced Issues
+@section Message splitting
+@cindex Split messages
+
+You can use @code{elmo-split} to split message in folder specified by
+the variable @code{elmo-split-folder} a la @command{procmail} according
+to some specified rules. To use this feature, set as follows in your
+@file{~/.emacs} at first.
+
+@lisp
+(autoload 'elmo-split "elmo-split" "Split messages on the folder." t)
+@end lisp
+
+Set source folder like following.
+
+@lisp
+(setq elmo-split-folder "%inbox")
+@end lisp
+
+And specify the rule in the variable @code{elmo-split-rule} (its format
+will be is described below).
+Then you can invoke @kbd{M-x elmo-split} to split messages according to
+@code{elmo-split-rule}. On the other hand, invoke @kbd{C-u M-x elmo-split}
+to do a rehearsal and show result (do not split actually).
+
+
+We will describe how to specify the rule. First of all, see following
+example, please.
+
+@lisp
+@group
+(setq elmo-split-rule
+ ;; @r{Store messages from spammers into @samp{+junk}}
+ '(((or (address-equal from "i.am@@spammer")
+ (address-equal from "dull-work@@dull-boy")
+ (address-equal from "death-march@@software")
+ (address-equal from "ares@@aon.at")
+ (address-equal from "get-money@@richman"))
+ "+junk")
+ ;; @r{Store messages from mule mailing list into @samp{%mule}}
+ ((equal x-ml-name "mule") "%mule")
+ ;; @r{Store messages from wanderlust mailing list into @samp{%wanderlust}}
+ ;; @r{and continue evaluating following rules}
+ ((equal x-ml-name "wanderlust") "%wanderlust" continue)
+ ;; @r{Store messages from Yahoo user into @samp{+yahoo-@{username@}}}
+ ((match from "\\(.*\\)@@yahoo\\.com")
+ "+yahoo-\\1")
+ ;; @r{Store unmatched mails into @samp{+inbox}}
+ (t "+inbox")))
+@end group
+@end lisp
+
+The basic unit of the rule is a combination like
+
+@lisp
+(@samp{CONDITION} @samp{ACTION} [@code{continue}])
+@end lisp
+
+If @samp{CONDITION} is true, @samp{ACTION} is performed.
+The 1st element @samp{CONDITION} is a condition represented by a
+balanced expression (sexp). Its grammar will be explained below.
+The 2nd element @samp{ACTION} is the name of the folder to split
+messages into, or a symbol. When the 3rd element @code{continue} is
+specified as symbol, evaluating rules is not stopped even when the
+condition is satisfied.
+
+The grammar for @samp{CONDITION} is as follows. See example above to
+learn how to write the condition practically.
+
+@enumerate
+@item
+Functions which accept arguments @samp{FIELD-NAME} and @samp{VALUE}.
+(@samp{FIELD-NAME} is a symbol that describes the field name)
+
+@table @code
+@item @code{equal}
+True if the field value equals to @samp{VALUE}.
+Case of the letters are ignored.
+@item @code{match}
+True if the field value matches to VALUE.
+@samp{VALUE} can contain @code{\&} and @code{\N} which will substitute
+from matching @code{\(\)} patterns in the previous @samp{VALUE}.
+@item @code{address-equal}
+True if one of the addresses in the field equals to
+@samp{VALUE}. Case of the letters are ignored.
+@item @code{address-match}
+True if one of the addresses in the field matches to
+@samp{VALUE}.
+@samp{VALUE} can contain @code{\&} and @code{\N} which will substitute
+from matching @code{\(\)} patterns in the previous @samp{VALUE}.
+@end table
+
+@item
+Functions which accept an integer argument (@samp{SIZE}).
+
+@table @code
+@item @code{<}
+True if the size of the message is less than @samp{SIZE}.
+@item @code{>}
+True if the size of the message is greater than @samp{SIZE}.
+@end table
+
+@item
+Functions which accept any number of arguments.
+
+@table @code
+@item @code{or}
+True if one of the argument returns true.
+@item @code{and}
+True if all of the arguments return true.
+@end table
+
+@item
+A symbol.
+
+When a symbol is specified, it is evaluated.
+@end enumerate
+
+You can specify followings as 2nd @samp{ACTION}.
+
+@enumerate
+@item
+folder name
+
+If some string is specified, it will be regarded as the destination
+folder, and the message will be appended to it.
+
+@item
+@samp{delete}
+
+If the symbol @samp{delete} is specified, delete the substance of the
+message in @code{elmo-split-folder}
+
+@item
+@samp{noop}
+
+If the symbol @samp{noop} is specified, do nothing on the message and
+keep it as it is.
+
+@item
+function
+
+If some function is specified, execute it.
+@end enumerate
+
+If the message passes all rules, it will be dealed along @samp{ACTION}
+specified by @code{elmo-split-default-action}.
+
+
+@node Batch Processing, Advanced Settings, Split messages, Advanced Issues
+@section Batch Processing
+@cindex Batch Processing
+
+You can request wanderlust to do some job on the command line.
+For now, you can invoke prefetching new messages in specified folders.
+
+Specify target folders in @code{wl-batch-prefetch-folder-list} then
+invoke as follows to execute prefetching:
+
+@example
+@group
+% emacs -batch -l wl-batch -f wl-batch-prefetch
+@end group
+@end example
+
+@subsection Customize Variables
+
+@table @code
+@item wl-batch-prefetch-folder-list
+@vindex wl-batch-prefetch-folder-list
+Target folders of prefetching by @code{wl-batch-prefetch}, specified as
+a list of folder names.
+@end table
+
+
+@node Advanced Settings, Customizable Variables, Batch Processing, Advanced Issues
@section Advanced Settings
@menu
@end lisp
-@node Customizable Variables, Hooks, Advanced Settings, Customization
+@node Customizable Variables, Hooks, Advanced Settings, Advanced Issues
@section Customizable Variables
Customizable variables that have not been described yet:
@vindex wl-draft-folder
The initial setting is @samp{+draft}. It is the folder to which drafts are
saved. It must be a writable folder.
+You can set IMAP remote folder, Maildir and so on.
Note that variable settings applied by @code{wl-draft-config-exec} is saved
under @code{elmo-msgdb-directory}. That is to say, if you specified remote
folder as @code{wl-draft-folder}, variable settings which are applied by
XEmacs (@code{t} for XEmacs with dbm).
If non-nil, Message-ID is controlled by dbm.
-@item elmo-passwd-alist-file-name
-@vindex elmo-passwd-alist-file-name
-The initial setting is @file{passwd}.
-This is the name of the file in which passwords are saved.
-@code{elmo-passwd-alist-save} saves current passwords to the file.
-
@item elmo-nntp-list-folders-use-cache
@vindex elmo-nntp-list-folders-use-cache
The initial setting is 600 (in seconds).
The initial setting is 20.
Threshold for display of progress gauge. If number of renewal is more than
this value, display progress gauge.
+
+@item elmo-network-session-idle-timeout
+@vindex elmo-network-session-idle-timeout
+The initial setting is @code{nil}.
+Idle timeout of the network cache. Specified in seconds.
+If elapsed time since last access is larger than this value,
+cached session is not reused. If nil, network cache is reused.
+
@end table
-@node Hooks, , Customizable Variables, Customization
+@node Hooks, , Customizable Variables, Advanced Issues
@section Hooks
(Not yet written)
-@node Migration, Terminology, Customization, Top
+@node Migration, Terminology, Advanced Issues, Top
@chapter Switch from older version of Wanderlust
@cindex Migration
@end group
@end lisp
-With the default setup,
-the old msgdb format will be used as it was.
-You may convert the format
-by writing following lines in @file{~/.wl} or so.
+With the default setup, the old msgdb format is converted to the new
+format automatically. You may change this behavior by writing following
+lines in @file{~/.wl}.
@lisp
@group
;; @r{If the format of msgdb is different from} @code{elmo-msgdb-default-type},
;; @r{the format will be converted automatically when}
-;; @r{the msgdb is being loaded.}
+;; @r{the msgdb is being loaded (default).}
(setq elmo-msgdb-convert-type 'auto)
;; @r{Convert msgdb when hitting @kbd{s all} in Summary mode}
(setq elmo-msgdb-convert-type 'sync)
+
+;; @r{Inhibit conversion}
+(setq elmo-msgdb-convert-type nil)
@end group
@end lisp
@enumerate
@item
-You may only use @samp{important} flag. The other flags may not be available.
+You cannot use forwarded mark (@samp{F}, @samp{f}).
+@item
+You may only use @samp{important} flag. The other global flags may not
+be available.
@end enumerate
@subsection Changes from @samp{'mark} folder to @samp{'flag}.
removed by deleting the associated message in @samp{'flag} folder.
@item
-The messsage won't be deleted by removing
+The message won't be deleted by removing
@samp{important} flag in @samp{'flag} folder.
@item
8/21 wl-addrmgr by Kitamoto-san.
12/27 Released 2.8.1 stable.
2002 12/11 Released 2.10.0 stable.
+2003 7/05 Released 2.10.1 stable.
+ 9/18 flag folder is added.
+ 9/20 New msgdb format (modb-standard) by H.Murata-san.
+ 10/20 Spam filter by H.Murata-san.
+2004 1/06 Background color of the demo become configurable.
+ 2/09 'file' folder is added.
+ 9/12 forwarded mark.
+ Default value of the mark strings are changed.
+ 12/24 Released 2.12.0 stable.
@end example
See @file{ChangeLog} for details.
Currently they are picked up alphabetically from the top 40 hits of
U.S. Billboard magazines in 1980s.
-(@uref{http://lyrics.natalnet.com.br/html/top40/index.html})
-
+(@uref{http://ntl.matrix.com.br/pfilho/html/top40/})
@node Index, , Addition, Top
@unnumbered Index