This file documents the Emacs Sieve package.

Copyright © 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.

     Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, with the Front-Cover texts being ``A GNU Manual'', and with the Back-Cover Texts as in (a) below.  A copy of the license is included in the section entitled ``GNU Free Documentation License''.

     この文書を、フリーソフトウェア財団発行の GNU フリー文書利用許諾契約書第 1.3 版またはそれ以降の版が定める条件の下で複製、配布、あるいは変更することを許可します。変更不可部分は指定しません。“A GNU Manual”は表表紙テキスト、以下の (a) は裏表紙テキストです。この利用許諾契約書の複写は「GNU フリー文書利用許諾契約書」という章に含まれています。

     (a) The FSF's Back-Cover Text is: ``You have the freedom to copy and modify this GNU manual.  Buying copies from the FSF supports it in developing GNU and promoting software freedom.''

     (a) FSF の裏表紙テキスト:「あなたにはこの GNU Manual を複製したり変更する自由があります。FSF からの複写の購入は GNU の開発とソフトウェアの自由の促進を支援します。」

Sieve Support for Emacs
***********************

このマニュアルは Emacs Sieve パッケージの説明書です。

これは Sieve モードと「Sieve-管理」(Manage Sieve) のためのユーザーズマニュアルとして、および sieve-manage プロトコルを扱う Emacs Lisp API のためのリファレンスマニュアルとして活用されることを意図しています。

Sieve はサーバー側でメールを濾過するための言語です。その言語は RFC 3028 に文書化されています。このマニュアルの目的は言語を説明することではないので、RFC 3028 は手元に置いておいてください。

まともな Sieve の資料は http://www.cyrusoft.com/sieve/ にあります。

訳注: Sieve == 篩 (ふるい)

インストール
******

Sieve パッケージはあなたの Emacs の版に付属していて、すぐに使えるようになっているはずです。

そうなっていないのであれば、このパッケージを手作業で設定するために、以下のコマンドを ~/.emacs ファイルに書き込んでください:

     (autoload 'sieve-mode "sieve-mode")

     (setq auto-mode-alist (cons '("\\.s\\(v\\|iv\\|ieve\\)\\'" . sieve-mode)
                                 auto-mode-alist))

Sieve モード
*********

Sieve モードは、構文に基づいたインデント、font-lock のサポート、および Sieve スクリプトを楽に編集できるようにするためのその他の便利な機能を提供します。

このメジャーモードに切り替えるには M-x sieve-mode を使ってください。このコマンドは sieve-mode-hook で与えられたフックを実行します。

Sieve モードは c-mode から派生していて、コメントの構文以外はとても似ています。インデントをカスタマイズする変数があるのと同様に、キーマップ (sieve-mode-map) は c-mode のものを受け継ぎます。 Sieve モードは専用の略語表 (sieve-mode-abbrev-table) と構文テーブル (sieve-mode-syntax-table) を持っています。

編集に役立つ関数に加えて、Sieve モードには Sieve スクリプトを遠隔管理するためのキー設定もあります。See Managing Sieve.

C-c RET
     「Sieve-管理」プロトコル (Managesieve protocol) を使って、遠隔サーバーに接続します。

C-c C-l
     現在接続しているサーバーに Sieve スクリプトをアップロードします。

Sieve の管理
*********

「Sieve-管理」は、遠隔サーバーにある Sieve スクリプトを表示するために使われる特別なモードです。それは M-x sieve-manage RET で起動し、そのサーバーにおけるユーザー名と、必要な場合には資格証明書 (credentials) の入力を求めます。

サーバーとの接続に成功すると、「Sieve-管理」バッファーには以下のようなものが表示されます:

     Server  : mailserver:2000

     2 scripts on server, press RET on a script name edits it, or
     press RET on <new script> to create a new script.
             <new script>
      ACTIVE .sieve
             template.siv

スクリプトの一つが強調表示され、標準のポイント移動コマンド (<up>, <down> など) でリスト内を移動することができます。

以下のコマンドが「Sieve-管理」バッファーで利用可能です:

m
     現在の強調表示されたスクリプトを活性化します。

u
     現在の強調表示されたスクリプトを不活性化します。

C-M-?
     すべてのスクリプトを不活性化します。

r
     現在の強調表示されたスクリプトを取り除きます。

RET

mouse-2

f
     サーバーバッファーを隠して、現在の強調表示されたスクリプトを Sieve モード (see Sieve Mode) で編集するための新しいバッファーにダウンロードします。

o
     Sieve モード (see Sieve Mode) で編集するために、現在の強調表示されたスクリプトを含んでいる新しいバッファーを、別ウィンドウで作成します。

q
     接続を切らずに「Sieve-管理」バッファーを隠します。

?

h
     ミニバッファーにヘルプを表示します。

例
*

Sieve を熟知していないなら、この章にほんの少しだけあるコードの断片を利用すれば良いでしょう。Sieve 言語でゼロから規則を書くことがもっと快適に感じられるようになるまでは、それらをカット＆ペーストして好きなように変更してください。

以下の完全な Sieve スクリプトは、合致する Sender: ヘッダーを持つすべてのメッセージを、指定されたメールボックスに格納します。多くのメーリングリストがこの形式を使っています。最初の行は Sieve サーバーが確実に fileinto コマンドを理解できるようにするためのものです。

     require "fileinto";

     if address "sender" "owner-w3-beta@xemacs.org" {
     	fileinto "INBOX.w3-beta";
     }

少数のメーリングリストは Sender: ヘッダーを使いませんが、ある別のヘッダーに独特の識別子があります。以下のスクリプトは完全ではなく、すでに fileinto が読み込まれていることを仮定しています。

     if header :contains "Delivered-To" "auc-tex@sunsite.dk" {
     	fileinto "INBOX.auc-tex";
     }

最後は、どんな独特の識別子も持っていない絶望的なメーリングリストのために、 To: と Cc ヘッダーにおける合致を強いられる例です。前のものと同様に、この断片は fileinto が読み込まれていることを仮定しています。

     if address ["to", "cc"] "kerberos@mit.edu" {
     	fileinto "INBOX.kerberos";
     }

「Sieve-管理」の API
***************

sieve-manage.el ライブラリーには MANAGESIEVE プロトコルでサーバーと話すための、低階層の関数群があります。

いくつかの、ユーザーが見ることができる変数があり、それらすべては sieve グループでカスタマイズすることができます (M-x customize-group RET sieve RET):

sieve-manage-default-user
     ディフォルトのユーザー名を設定します。

sieve-manage-default-port
     仕様するディフォルトのポートを設定します。提案されているポート番号は 2000 です。

sieve-manage-log
     非-nil だったら、やり取りしたプロトコルの結果が記録されるバッファー名の文字列でなければなりません (デバッグするときに使います)。

API の関数には以下のものがあります:

sieve-manage-open
     「Sieve-管理」サーバーに接続し、他のすべての API で使うバッファーを返します。

sieve-manage-opened
     サーバーと接続しているか否かを検査します。

sieve-manage-close
     サーバーとの接続を閉じます。

sieve-manage-authenticate
     サーバーを認証します。

sieve-manage-capability
     サーバーがサポートしている機能のリストを返します。

sieve-manage-listscripts
     サーバーにあるスクリプトを列挙します。

sieve-manage-havespace
     与えられたサイズのスクリプトのための空きがあれば、非-nil を返します。

sieve-manage-getscript
     サーバーからスクリプトをダウンロードします。

sieve-manage-putscript
     サーバーにスクリプトをアップロードします。

sieve-manage-setactive
     サーバーにあるどのスクリプトが活きているはずであるかを示します。

標準
**

Emacs Sieve パッケージは、少ないけれども増大することが望まれる RFC 群および草稿文書の、すべてまたは一部分を実装します。この章では関連するものを列挙します。それらはすべて http://quimby.gnus.org/notes/ から入手することができます。

RFC3028
     Sieve: メール濾過言語

draft-martin-managesieve-03
     Sieve スクリプトを遠隔管理するためのプロトコル

GNU フリー文書利用許諾契約書
****************

訳注: 非公式な日本語訳 (http://www.opensource.jp/fdl/fdl.ja.html.euc-jp) があります。

     [file doclicense.texi not included]