このファイルは Emacs auth-source ライブラリーを説明します。

Copyright © 2008, 2009 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'' in the Emacs manual.

     この文書を、フリーソフトウェア財団発行の GNU フリー文書利用許諾契約書第 1.3 版またはそれ以降の版が定める条件の下で複製、配布、あるいは変更することを許可します。変更不可部分は指定しません。“A GNU Manual”は表表紙テキスト、以下の (a) は裏表紙テキストです。この利用許諾契約書の複写は Emacs マニュアルの「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 の開発とソフトウェアの自由の促進を支援します。」

     This document is part of a collection distributed under the GNU Free Documentation License.  If you want to distribute this document separately from the collection, you can do so by adding a copy of the license to the document, as described in section 6 of the license.

     この文書は「GNU フリー文書利用許諾契約書」に基づいて配布された収集著作物の一部です。もしあなたがこの文書を収集著作物から分離して配布したいときは、契約書の第 6 項に記述されているように、文書に契約書の複写を付加することによって、行なうことができます。

Emacs auth-source
*****************

このマニュアルは Emacs auth-source ライブラリーを説明します。

利用者の便宜のために、複数のアプリケーションで、(Emacs またはファイルにある) 一つの設定を共有するための手段です。

概要
**

To be done.

利用者のためのヘルプ
**********

もしポートで問題があるのなら、gnus-verbose の値を大きくして、そのライブラリーがどのポートをチェックしているかを見てください。同様に他のどんな問題についても、何がチェックされているかを調べるのが、あなたの第一歩です。

設定:

     (require 'auth-source)
     (customize-variable 'auth-sources) ;; 任意、一回だけ行なってください

 -- Variable: auth-sources
     AUTH-SOURCES 変数は、個々のホストとプロトコルのための netrc ファイルがどこに在るかを auth-source ライブラリーに知らせます。好みに応じてどうにでもできますが、ディフォルトの最も簡潔な設定は次の通りです:

          (setq auth-sources '((:source "~/.authinfo.gpg" :host t :protocol t)))

     個々のホストまたはプロトコルのための複数の項目をそのリストに加えることによって、そのホストやプロトコルのための特定の netrc ファイルを持つことができます。

``Netrc'' ファイルは事実上の標準です。それらはこのようになっています:

     machine mymachine login myloginname password mypassword port myport

ポートの指定は無くても構いません。無い場合、auth-source はどんなポートも OK なのだと解釈します。実際のところ、ポートはプロトコルの名前かポート番号のどちらでも良いので、もしそうしたいのならば、ポート 143 とプロトコル ``imap'' のための項目を別々に持つことができます。

もし AUTH-SOURCES をカスタマイズしないと、ディフォルトで生活することになるでしょう。そのディフォルトとは、どんなホストもポートについても netrc ファイル ~/.authinfo.gpg を参照するということです。これは暗号化されたファイルです。EPA を使えるようにしている場合に限りますが、それが強く推奨されます。

     (require 'epa-file)
     (epa-file-enable)
     (setq epa-file-cache-passphrase-for-symmetric-encryption t) ; とても重要

url-auth 認証 (HTTP/HTTPS) のためには、これを netrc ファイルに置いておく必要があります:

     machine yourmachine.com:80 port http login testuser password testpass

これはどんな界面と認証方式 (basic または digest) にも合致します。もっと詳細な制御が必要な場合は、url-auth のソースコードと変数を調べてください。

Tramp の認証にはこれを使ってください:

     machine yourmachine.com port scp login testuser password testpass

ポートは Tramp の接続方法を意味することに注意してください。もしポートの項を使わなければ、最初の方で説明したように、すべての Tramp の方式に合致します。

開発者のためのヘルプ
**********

auth-source ライブラリーには、外部で使うための関数は一つしかありません。

 -- Function: auth-source-user-or-password mode host port
     ホスト HOST およびポート PORT のための MODE で決まる、適切な認証トークンを取り込みます。gnus-verbose が 9 以上であれば、デバッグのためのメッセージを表示します。

     もし MODE が文字列のリストならば、関数は文字列のリストまたは nil を返します。それがただの文字列ならば、関数は一つの文字列か nil を返します。今のところ mode として ``login'' と ``password'' だけを認識しますが、将来はもっと加えられるでしょう。

     HOST はホスト名の文字列です。

     PORT はプロトコル名 (例えば ``imap'') またはポート番号です。ユーザーの netrc ファイルにあるポートに対応する文字列でなければなりません。

          ;; IMAP example
          (setq auth (auth-source-user-or-password
                      '("login" "password")
                      "anyhostnamehere"
                      "imap"))
          (nth 0 auth) ; ログイン名
          (nth 1 auth) ; パスワード