既存のバージョンをアップグレードするには、
以下の標準のインストール手順に従ってください。
前のバージョンとconfigureスクリプトに対するオプションが
同じになるよう確認してください。
新しいリリースになって追加されたオプションを用いることもできます。
メジャーアップグレードになります
すべてのメールパスワードを3.0より前のバージョンからアップグレードするときに
再設定する必要があります。
3.0より前のSqWebMailでは、ウェブメールのログインのために独立したパスワードファイルを
扱っていました。
それはシステムパスワードから自動的に初期設定されましたが、
独立に管理されていました。
「システムパスワード」とは、伝統的な/etc/passwdファイル、
MySQL、LDAPなどの方法で、パスワード認証を行うもの全般を指しています。
SqWebMailはシステムパスワードを更新するお手ごろな手法がなかったため、 独立なウェブメールパスワードファイルが必要だったのです。 3.0の登場とともに、実際のパスワードを更新するためのコードとスクリプトが付加され、 SqWebMailの独立したパスワードファイルは取り除かれました。 ここに統合プランを紹介します:
注釈:もしauthvchkpwモジュールを使っていたなら、
窮地から脱することになります。
非常に古いバージョンを除いたすべてのSqWebMailは、
SqWebMailとvpopmailのパスワードを同期させる
authvchkpwモジュールを持っています。
ほどんど窮地から免れていますが、順調な移行を保証するために
以下の手順を追うべきでしょう。
--prefix=/usr/local/share/sqwebmail3
--with-cachedir=/var/cache/sqwebmail3 --enable-imageurl=/webmail3
--enable-imagedir=/var/www/htdocs/webmail3
--enable-cgibindir=/var/www/cgi-bin/sqwebmail3
これらのオプションはSqWebMail3を前のバージョンと異なるディレクトリに
インストールします(ウェブドキュメントルートを反映する
--enable-imagedirオプションも異なったものを使う必要があるでしょう)。
標準の設定はSqWebMailを/usr/local/share/sqwebmailに
インストールします
(/var/cache/sqwebmailをログインキャッシュとして用い、
/webmailをイメージに用います)。
注意深くオプションを選ぶことによって、
SqWebMail 3.0は以前のバージョンと共存できます。
以前のバージョンのSqWebMailは/usr/local/libexecにいくつかファイルを
インストールしましたが、SqWebMail 3.0はもはやそうしません。
make install DESTDIR=/tmp/sqwebmail3
(例のごとく、xBSDではmakeの代わりにgmakeを使います。
このコマンドは、GNU make 用に実装されています。)/tmp/sqwebmail3にインストールします。
そこが仮想的なchroot jail(同システム内で隔離構築されたルート)のようになります。
例えば、/usr/local/share/sqwebmailは
/tmp/sqwebmail3/usr/local/share/sqwebmailになります。
/tmp/sqwebmail3ツリーの内容を確認してください。
すると、実際のmake installが既存のインストールされたものと
まったく重ならないことが確認できるでしょう。
/tmp/sqwebmail3以下のすべてのファイルとディレクトリに対して
既存のインストールされたものと異なることを確認してください。make installを実行します。
既存のバージョンの設定に合うようにバージョン3の設定データを再入力します。
バージョン3のauthdaemondプロセスの独立のコピーを開始することと、
バージョン3のクリーンアップcronジョブを設定することを忘れないでください。
しばらくの間、それぞれ2つのコピーが存在することになります。
正常な状態を保つために、少々注意が必要になるでしょう。makeuserdbスクリプトを実行してください。authdaemondプロセスを起動します
(同時にバージョン3のcronジョブの設定を行います)。
テスト用メールアカウントのパスワードを「パスワードB」に変更します。
ブラウザでバージョン3のsqwebmailバイナリへのURLを開きます。
そのURLはおそらくhttp://domain/cgi-bin/sqwebmail3/sqwebmailでしょう。
テスト用メールアカウントに「パスワードB」でログインします。
設定ページに移り、「パスワードB」を「パスワードC」に変更します。
ログアウトし、「パスワードC」を使ってログインします。
ここで、既存のSqWebMailへ戻り
(URLはおそらくhttp://domain/cgi-bin/sqwebmailでしょう)、
既存のSqWebMailにおいて「パスワードA」が使えることを確認します。
これは、既存のSqWebMailが独立なパスワードファイルを管理しているからです。cgi-binディレクトリに移動します。
既存のsqwebmailバイナリをsqwebmail.oldと名前変更し、
新しいsqwebmailバイナリを
sqwebmail3サブディレクトリから移動させます。
バイナリの所有者と実行属性が保たれるよう注意してください。authdaemondプロセスを退役させ、cronジョブを取り除きます。
将来のバージョンのSqWebMailを今回と同じ非標準なインストール場所に更新させるために、
configureスクリプトに余計なオプションを常に加える事に
神経質でなければなりません。
今回の件ですべて終わりではありませんので、
configureを再実行し、バージョン3を標準のインストール場所へ
再インストールすることをお勧めします。注釈: 標準の設定はauthdaemonモジュールを構築し、
authdaemon内のすべての実際の認証モジュールを構築するように変更になりました。
これはauthvchkpwモジュールに対しても当てはまります。
authdaemondは新しいパスワード認証の枠組みを支えるものとして必要なものです。
SqWebMail1.1より前では、 ぞれぞれのバージョンが標準の設定ファイル一式をインストールしていました。 もし既存の設定に変更が加えられていた場合、 インストール後にそれらの変更を再適用する必要がありました。
バージョン1.1の開始と共に、この過程はほどんど自動化されました。 バージョン1.1の開始と共に、自動的なアップグレードを可能とするため、 設定ファイルに付加的なメタデータが含まれました。 これが機能するために、新旧双方の背一定ファイルがこのメタデータを含まなければなりません。
それゆえに、バージョン1.1にアップグレードする際は、次のようにします。 既存の設定をバックアップし、このバージョンをインストールする以下の手順に従います。 既存の設定ファイあるは自動更新のためのメタデータを含んでいないため、 インストールのスクリプトは設定ファイルをそれぞれ「filename」から「filename.bak」に 名前を変更し、標準の「filename」をそこに書き込みます。 その後、「filename」を編集し、主導ですべての設定変更を再入力します。 前の設定ファイルを単純にコピーし、新しいバージョンのものを上書きしないでください。 なぜなら、自動更新のめたデータが失われてしまうからです。
注釈:すべての設定ファイルが自動的にアップグレードされるわけではありません。
自動でアップグレードされる設定ファイルは、
authdaemonrc, authldaprc, authmysqlrcと
ldapaddressbookです。
SqWebMailをインストールするために必要なものは:
expect。expectは多くのシステムに含まれています。
もしシステムにインストールされていない場合は、expectは
http://expect.nist.gov/
からダウンロードすることができます。
このユーティリティはpasswdコマンドを操り、
システムログインパスワードを変更するために用いられます。
もしexpectがインストールされていなければ、
SqWebMailを通してシステムログインパスワードを変更することはできません。
しかしながらそれでも、各種認証モジュールを利用することはできます。SqWebMailをコンパイルしインストールする典型的なコマンドの手順は次の通りです:
./configure [オプション - 以下を参照] make configure-check make make check make install-strip # これが動作しなければ make install を実行 make install-configure # 設定ファイルをインストール # cronジョブを設定し、システムの起動スクリプトを変更する。 # ウェブサーバをMSIE用に調節する。
GNU makeがSqWebMailをコンパイルしインストールするために必要です。 xBSDシステムでは、GNU makeは「gmake」コマンドとしてインストールされています。 この文章が「make」コマンドと述べている部分すべてを「gmake」と置き換えてください。 もしシステムにgmakeがない場合、 SqWebMailをインストールする前にgmakeをインストールしてください。
configureプログラムに対するオプションは次の通りです:
--without-module - 明示的に
"module"という名前の認証モジュールを無効にします。
例:--without-authpam は authpam認証モジュールを無効にします(詳細は下記を参照)。--disable-changepass -
ログインパスワードを変更する機能を無効にします。
システムアカウントのログインパスワードを変更するために用いる
authdaemon.passwd suid ユーティリティを
インストールしたくない場合にこれを用います。--disable-utf7-folder-encoding -
フォルダ名の8ビット文字をmodified-UTF7で符号化しないようにします。
詳細は"IMAP と Unicode"を参照してください。
(注釈:このオプションはUnicodeのサポートも無効にします。
UnicodeサポートはGPGサポートを利用するのに必要であり、
もしこのオプションを指定して明示的に--enable-unicodeを指定しなければ、
GPGサポートは無効になります。)--enable-unicode=chset,chset,... -
指定されたUnicodeの文字集合マッピングを含めます。
詳細は"IMAP と Unicode"を参照してください。--with-cachedir=dir,
--with-cacheowner=userid -
SqWebMailは現在有効なログインのキャッシュを用います。
SqWebMailはHTTPリクエストの度に毎回起動し、
その度にアカウントに対応するmaildirに移動しなければなりません。
認証モジュールに問い合わせるのは負荷がかかるため
(HTTPリクエスト毎にMySQL/PostgreSQL/LDAPに問い合わせることを考えてみてください)、
SqWebMailは認証サーバを落としてしまうこと避けるため、
ログイン情報をキャッシュしています。
標準ではそのディレクトリは/var/cache/sqwebmailか
/var/run/sqwebmailです。これらのオプションは
SqWebMailログインキャッシュディレクトリを異なる場所に指定するために用います。cleancache.plスクリプトが起動するように、
定期作業を担うcronジョブに追加しなければなりません。
make installは、
cronジョブ用の記述を含んだメッセージを表示します。--without-gzip -
gzip圧縮を利用しません。
標準では、一部のページはSqWebMailによって送られる前にgzipで圧縮されます
(gzip圧縮に対応しているブラウザに対してのみ)。
これはサーバに負荷を加える結果となることに注意してください。
ですので、必要ならばその機能を無効にするために
--without-gzipを使うことが出来ます。
gzip圧縮が有効になるためには、configureを起動した際に
gzipプログラムが標準のパス内に存在する必要があります
(絶対パスが計算され実行時に用いられます)。--with-db=db -
SqWebMailではGDBMライブラリかDBライブラリのどちらかが必要です。
設定スクリプトはどちらかが有効であるかをチェックします。
もし両方見つかれば、GDBMが選ばれます。
この時代わりにDBライブラリを選ぶためにこのオプションを使います
(DBライブラリだけがインストールされているなら、このオプションは不要です)。
--enable-https -
SqWebMailにすべてのアクセスに対して http:// の代わりに、
https:// URL を生成させます。--enable-https=login -
ログイン機能に対してのみ https:// URL を生成します。
この考えは、ログインとパスワードを送信する時のみにSSLを利用しようとするものです。
このオプションを機能させるためには、
SqWebMailへの http:// パスと https:// パスの双方のURLが同じでなければなりません。--enable-https=auto -
これが現在の標準オプションです。
SqWebMailはクライアントがSSL経由で接続したかそうでないかを判別し、
http:// URL か https:// URL を適切に生成します。--enable-hardtimeout=seconds -
ハードセッションタイムアウト期間を秒単位で指定します。
この期間が経過すると、ユーザは自動的にログアウトします。--enable-softtimeout=seconds -
ソフトセッションタイムアウト期間を秒単位で指定します。
アクセスのない状態でこの期間が経過すると、ユーザは自動的にログアウトします。--enable-autopurge=days -
この期間が経過すると、ごみ箱にあるメッセージは自動的に削除されます。--enable-maxpurge=days -
ごみ箱にあるメッセージを保存しておくユーザが設定可能な
最大期間を日単位で設定します。--with-defaultlang=en -
将来のために予約されています。
標準でSqWebMailが使うHTMLテンプレートファイルの集合を選択します。
現在は英語HTMLテンプレートのみが準備されています。--enable-cgibindir=directory -
SqWebMail 実行プログラムをインストールする場所を指定します。
あなたのシステムの/cgi-bin ディレクトリになるはずです。
configureスクリプトはcgi-binディレクトリを
一般的な場所から探します。
このオプションでconfigureに探すべき場所を使えることが出来ます。--enable-imagedir=directory -
アイコンと画像イメージをインストールする場所を指定します。
ウェブサーバのドキュメント階層内のどこかになるはずです。
configureスクリプトはウェブサーバのドキュメントディレクトリを
一般的な場所から探します。
このオプションでconfigureに探すべき場所を使えることが出来ます。--enable-imageurl=URL -
アイコンと画像がおいてあるディレクトリへのURLを指定します。--enable-mimetypes=filelist -
コロンで区切られたmime.typesファイルのリストを指定します。
添付ファイルがアップロードされたとき、
mime.typesファイルからファイルの拡張子に対応するMIMEタイプが判別されます。
mime.typesファイルは通常PineやApacheに含まれています。
このオプションが指定されていない場合、
mime.typesが通常見つかる場所から探します。
mime.typesファイルが見つかるとリストに追加されます。
コロンで区切られた複数ファイルのリストになります。
最初のファイルでMIMEタイプが判別されなければ、
SqWebMailは次のファイルから探します。--enable-mimecharset=charset -
Content-Type:ヘッダ内に取り付ける標準のcharset=tagタグを指定する。
標準では、iso-8859-1となる。--enable-lang=lang -
将来のために予約されています。
ウェブページの標準の言語を指定します。--enable-bannerprog=program -
バナー(広告)プログラムへの絶対パスを指定します。
SqWebMailはHTMLテンプレート中の文字列 [#B#] をプログラムの出力で置き換えます。
プログラムに対する第一引数にはHTMLファイルのファイル名が与えられます。
バナープログラムの出力を調節するのに使うことができます。
同じHTMLページに複数の@Bタグを貼り付けることも可能です。
各タグを区別するために、ブレイス(中括弧)で囲んで
30バイトまでの文字数字をタグの後ろに続けることができます。
例えば、[#B#]{TOP} と [#B#]{BOTTOM} です。
「TOP」や「BOTTOM」のような文字列は、
バナープログラムに第二引数として与えられます。
--with-maxargsize =n -
SqWebMailがHTTP Postメソッドの要求として受け付ける最大のバイトサイズを指定します。
これは基本的に、SqWebMailが受け付ける最大のテキストメッセージの長さで、
添付ファイルは除きます。--with-maxformargsize=n -
上のオプションと似ていますが、
HTTP マルチパート/フォームデータ POSTメソッドに適用されます。
これはSqWebMailにアップロードすることができる
添付ファイルのおおよその最大サイズになります。--with-maxmsgsize=n -
添付ファイルも含めたメッセージの最大ファイルを指定します。
標準では2Mバイト(2,097,152バイト)です。
添付ファイルはbase64符号化され、ファイルサイズが25%程度増加しますので、
すべての添付ファイルの合計最大サイズは実際は
1.5Mバイト程度となることに注意してください。--with-ispell=pathname -
configureが標準的なパスにispellを発見するか、
このオプションを使ってispellへの絶対パスを指定すれば、
ユーザは文章にスペルチェックをかけることが可能になります。--without-ispell - スペルチェック機能を無効にします。--with-fcgi -
fastcgiサポートを有効にします
(http://www.fastcgi.comを参照)。
libfcgi.aとヘッダファイルがサーチパス内か
SqWebMailのビルドディレクトリ内にあると想定しています。
--enable-bannerprogは、fcgiと一緒には機能しません。--disable-autorenamesent -
毎月、送信済みフォルダを月別に振り分ける機能を無効にします。
環境変数「SQWEBMAIL_AUTORENAMESENT」に「yes」か「no」の値を設定することで、
このオプションと同等の制御ができます
(例えば、環境変数はApacheのhttpd.confで設定できます)。--with-calendarpurge=N -
カレンダー機能が有効な場合、期限の過ぎたイベントをN日経過後に削除します。
標準では30日となっています。configureを実行した後、
CGIファイルとイメージファイルがインストールされるディレクトリを確認するため、
make configure-checkを実行してください。
make configure-checkは、
設定スクリプトがウェブサーバがインストールされていると判断したディレクトリを表示します。
もしSqWebMailが間違って判断していれば、
--enable-cgibindir と --enable-imagedirで適切な指定をし、
configureを再実行してください。
SqWebMailをコンパイルするためにmakeを実行します。
そして、ファイルをインストールするために
make install-stripを実行します。
前に述べたように、make install-stripが機能しなければ、
make installを使ってください。
警告:
make installかmake install-stripを実行する前に、
umask値を022に設定してください。
make install-stripを実行する前に、
sendit.shスクリプトの内容を検証し、
メール転送エージェント(MTA)が正常に呼び出されているか確認してください。
インストール後、定期的にcleancache.plスクリプトを
実行するようにcronジョブに加えます(1時間に一度が最適です)。
cleancache.plは/usr/local/share/sqwebmailに
インストールされています。
make installはcleancache.plスクリプトの
インストールに関する追加情報を表示します。
設定ファイルを初期化するためにmake install-configureを事項します。
SqWebMailの設定ファイルの一部は、複数の設定を担っています。
例えば、authdaemonrcやldapaddressbookなどです
(これらの設定についての追加情報は以下を参照)。
これらの設定ファイルについて、make installは
filename.distをインストールします。
make install-configureはfilename.distを元に
filenameを作成します。
もし、前のfilenameが存在し、
それが自動更新の情報を含んでいれば(SqWebMail1.1以降)、
既存の設定は可能な限り保持されます。
自動更新に対応していない古い設定ファイルの場合は、
filename.bakと名前が変更されます。
自動更新の間、make install-configureは
各設定に対する処置をレポートします。
設定は新しいバージョンにおいても有効である限り保持されます。
古くすたれた設定項目は自動的に削除されます。
もし設定が無効であり保存されない場合は
filename.distから標準の設定が取り込まれます。
make install-configureの出力を保存することをお勧めします
(make install-configure > upgrade.log)。
そうすれば、手動で設定すべき項目を見分けるのに使うことが出来ます。
LDAP認証かvpopmail認証を使うつもりなら、 以下でそれぞれの解説に目を通してください。
標準の設定スクリプトは、認証処理を行うauthdaemondプロセスをインストールします。 システム起動時に認証プロセスが起動するように次のコマンドをシステム起動スクリプトに加えてください:
/usr/local/share/sqwebmail/libexec/authlib/authdaemond start
authdaemond stopはシステム終了時に実行されるべきですが、
必ずしも必要ではありません。
MSIEブラウザ(インターネットエクスプローラ)には、 HTTP/1.1の実装にたくさんのバグがあります(少なくともMSIE4.xと5.x)。 MSIEブラウザと通信する際に、HTTP/1.0を使うように ウェブブラウザを設定しなければなりません(少なくともバグが修正されるまでは)。 問題は添付ファイルのダウンロードに関係するはずです。 明らかにMSIEブラウザはHTTP/1.1を使った際にMIMEがどう機能するかを知りません。 Apacheサーバでは、次の命令をhttpd.confに加えます:
BrowserMatch "MSIE" nokeepalive downgrade-1.0 force-response-1.0
Apacheの最近のバージョンでは既に、 MSIEの特定のバージョン(MSIE 4.0b2)に対する同様な命令が設定されています。 MSIEのどのバージョンにも機能するようbrowsermatchで置き換えましょう。
ログインページを表示するためにsqwebmail
バイナリへのURLを指定します。
テストアカウントでログインを試します。
使いたい付加機能を有効にするため設定ファイルの残りを再確認してください。
もしメールアカウントがIMAPでアクセスできないならば、
--disable-utf7-folder-encodingオプションは、
SqWebMailから不要なコードを一部取り除きます。
IMAPは非アスキー文字を「modified-UTF7」と呼ばれる概念に従って符号化します。
現在、SqWebMailと互換性のあるIMAPサーバは、
Courier-IMAPだけです。
Modified-UTF7に対応するにはいくぶんのオーバーヘッドが生じますので、 このオプションはmodified-UTF7を無効にするために使います。 同じメールアカウントにIMAPによるアクセスがないならば、 これら一式を含める必要はありません。
フォルダ名を符号化するためにmodified-UTF7を用いないIMAPクライアントもいくつかあります。
この場合は、--disable-utf7-folder-encodingを使わなければなりません。
同時にUTF7クライアントと非UTF7クライアントの両方に対応することはできません。
SqWebMailにおける更なるオーバーヘッドは、
ローカル文字集合をUnicodeに対応づける変換テーブルによるものです
(Unicodeからmodified UTF-7が派生しました)。
--disable-utf7-folder-encodingオプションが使われない限り、
この作業は行われます。
configureスクリプトはHTMLテンプレートのための文字集合をとり、
その文字集合とUnicodeとの対応付けを導入します。
標準では、SqWebMailはiso-8859-1文字集合を使ったHTMLテンプレート
がひとつ含まれた状態で配布されています。
追加テンプレートを含んだ派生物をインストールした場合に、
configureは、これらのテンプレートで使われている文字集合を追加します。
有効な文字集合のリストはunicode/charsetlist.txtファイルの中で見つかります。
すべての有効な文字集合がコンパイルされることが確認できるでしょう。 必要な文字集合だけが最終的なSqWebMailの実行ファイルに取り込まれますので、 安心してください。
重要:UTF7符号化が正しく機能するために、 すべてのアプリケーション(IMAPクライアントとSqWebMail)で、 同一の文字集合が設定されている必要があります。 SqWebMailにおいては、HTMLテンプレートディレクトリのCHARSETファイルが 適切な文字集合に設定されている必要があることを意味します。
--enable-unicodeオプションは、
明示的にどの文字集合テーブルを含めるかを指定し、
configureによる選択を上書きするために用いることができます。
これは同じ基本文字集合に対して異なる符号化方式があるときに役に立ちます
(KOI8-R と IBM866のように)。
「--enable-unicode=koi8-r,ibm866」オプションは、
koi8-r文字集合のHTMLテンプレートと共に用いられたときは、
SqWebMailはibm866で符号化されたEメールを
koi8-r文字集合を使って表示することが可能になります(逆もまた然り)。
このように機能するためには、KOI8-RのHTMLテンプレートをインストール
しなければなりません。困ったときには、
sqwebmail/html/en/CHARSETを単純に編集してみてください。
注釈:GnuPG 1.0.5以降を利用する場合は、utf-8文字集合を指定しなければなりません。
configureスクリプトは、GnuPG 1.0.5 以降を見つけた場合、
標準でUnicode対応を有効にし、utf-8文字集合を標準で加えます。
SqWebMailはスペルチェックメッセージに ispellパッケージかaspellパッケージのどちらかを利用することができます。 SqWebMailをインストールする前に、ispellかaspellをインストールしてください。
注釈:SqWebMailは呼び出すスペルチェック辞書を"english"と仮定しています。
一部のシステムでは標準のスペルチェック辞書に異なった名前が使われているでしょう。
SqWebMailで用いられるスペルチェック辞書の名前を変えるためには、
/usr/local/share/sqwebmail/html/en-us/ISPELLDICTファイルに
辞書の名前を書きます。
認証モジュールは、入力されたユーザIDとパスワードを取り、 それらを検証し、そのアカウントに対応するMaildirを開く作業を担っています。
たくさんの認証モジュールが有効です。 それぞれの認証モジュールはログイン認証方法を独自に実装しており、 すべての認証モジュールがあらゆるシステムで使われるわけではありません。 一部の認証モジュールは、特定のライブラリとソフトウエアが インストールされたシステムでのみ用いられます。
configureスクリプトは、システムの設定を確認し
利用される認証モジュールの標準セットを自動で準備します。
--without-moduleオプション
("module"の位置にはモジュールの名前が入ります)を、
モジュールを選択的に無効にするために用いることが出来ます。
しかしながら、通常はそうする理由はありません。
モジュールは実行時にも簡単に無効にすることが出来ます。
authdaemonモジュールがインストールされるのであれば、
authmodulelist設定ファイルかauthdaemonrcファイルから
それらを取り除くことによって実行時に無効にできます。
有効な認証モジュールの簡単なリストです:
authpwd - システムのパスワードファイルで認証します。authshadow - shadow パスワードファイルを使っているシステムでは、
authpwdの代わりにこちらを使います。authpam - PAMライブラリを使って認証します。
PAM認証が行われているシステムでは、
authpwdやauthshadowに代わって
authpamが使われなければなりません。authuserdb - GDBM/DBデータベースから認証します。
データベースを管理する簡単なPerlスクリプトがSqWebMailに含まれています。authmysql - MySQLデータベースに保存されている
アカウントファイルから認証します。authpgsql - PostgreSQLデータベースに保持されている
アカウントファイルから認証します。authldap - LDAPディレクトリに保持されている
アカウントファイルから認証します。authvchkpw - vpopmailライブラリを使って認証します。authdaemon - authdaemond
認証代理プロセスを使います(以下を参照)。ほとんどの認証モジュールはパラメータを定義した対応する設定ファイルがあります (パラメータは、サーバの位置、フィールド名など)。 インストール後、それらの設定ファイルを開き、 設定ファイル内の手引きを追う必要があるでしょう。
バージョン3.0より、SqWebMailの標準設定で
authdaemonモジュールをコンパイルし、
他のモジュールをauthdaemondバックグラウンドデーモン内に配置します。
authdaemondは常駐するバックグラウンドプロセスで、
SqWebMailからの認証リクエストをauthdaemonモジュールを介して受け取ります。
バージョン3.0よりauthdaemonモジュールは、
configureスクリプトで明示的に無効にしない限り、常にインストールされます。
これでインストールの手引きが大変簡素なものになります。
更に、authdaemonはSqWebMailでのパスワードの変更を可能とするため必要です。
authdaemonがインストールされていなければ、
SqWebMailはアカウントパスワードを変更することができないでしょう。
というのは、その手続きが一般的に高い権限を必要とするからです
(SqWebMailはroot権限をすぐに放棄しますが、
authdaemonがバックグラウンドで権限を保持しています)。
すべての認証モジュールがコンパイルされることを留意しておいてください。
configureスクリプトで不要な認証モジュールを無効にすることは可能ですが、
実行時にそれらを無効にした方が良いです。
すべての有効な認証モジュールは
/usr/local/share/sqwebmail/authdaemonrc設定ファイルより読み込まれます。
無効にするにはこの設定ファイルから認証モジュールを取り除きます。
authdaemond モジュールauthdaemondの起動は実際はスクリプトによるものです。
それはシステムの設定に依存します。
一つ以上の異なるauthdaemondバイナリが
インストールされているためです。
authdaemond.plainは特定の「重い」認証モジュールを除いて
すべての有効な認証モジュールが含まれます。
現在の「重い」認証モジュールとは、authldapと
authpgsqlとauthmysqlです。
「重い」認証モジュールの対応が選択されていると、
authdaemond.mysqlや
authdaemond.pgsqlやauthdaemond.ldapなどの
追加バイナリがインストールされます。
authdaemond起動スクリプトは「重い」認証モジュールが
インストールされているかどうかを確認し、もしそうならば、それを起動します。
そうでなければ、標準のauthdaemond.plainバイナリを起動します。
これでLDAPやPostgreSQLやMySQLに対応・非対応の
SqWebMail配布バイナリを作ることが簡単になります。
配布者は、SqWebMailをLDAPとPostgreSQLとMySQLの開発ライブラリを含むシステムで構築し、
authdaemond.mysqlとauthdaemond.pgsqlと
authdaemond.ldap以外のすべてをSqWebMailの基本パッケージに含めます。
authdaemond.mysqlとauthdaemond.pgsqlと
authdaemond.ldapを独立したサブパッケージに含めます。
基本パッケージの導入で基本的なシステム認証サービスがインストールされます。
LDAPかPostgreSQLかMySQLに対応するためには、対応するサブパッケージを導入するだけです。
このモジュールはPAMライブラリを持つシステムで使われるべきです。
このモジュールでは、SqWebMailはPAMモジュールが「webmail」PAMサービスの
認証として定義しているものを用います。
基本的に、authpamはSqWebMailログイン認証に
どんなPAMモジュールが用いられことを許可します。
注釈:このモジュールを含めるのに加えて、
更にPAMライブラリを「webmail」PAMサービスのために設定するための
サイト特有の作業が必要です。
PAMの設定に関する詳細はシステムによって異なり、ドキュメントを確認してください。
もしどうPAMの対応を導入すべきか検討がつかない場合は、
タオルを投げてauthshadowかauthpwdを使うことに誘惑されるでしょうが、
それはあまりお勧めできません。
PAMライブライが有効ならば、authpamを使うことを強く推奨します。
PAM認証を設定する実際の手順はシステムによって異なりますが、
/etc/pam.dディレクトリがある場合は、
次のテキストを含む/etc/pam.d/webmailファイルを作ってみてください:
#%PAM-1.0 auth required /lib/security/pam_pwdb.so shadow nullok account required /lib/security/pam_pwdb.so
システムによっては、pam_pwdb.soモジュールの代わりに
pam_unix.soモジュールが使われているかもしれませんし、
モジュールが異なったディレクトリにあるかもしれません。
もし/etc/pam.dディレクトリの代わりに、
/etc/pam.confファイルがある場合は、
次の行をファイルの最後に追加してみてください:
webmail auth required pam_pwdb.so shadow nullok webmail account required pam_pwdb.so shadow nullok
繰り返しになりますが、
pam_unix.soを使わなければならないかもしれませんし、
PAMモジュールへの絶対パスをしていしなければならないかもしれません。
他のPAMサービスがどう設定されているか見て、
webmailサービス用に設定を複製してみてください。
もしあれば、pppサービスが参考にするのに良い例です。
このモジュールはユーザIDとパスワードを調べるための
GDBMかDBデータベースファイルを利用します
(通常は/etc/userdb.datと/etc/userdbshadow.dat)。
これらのファイルが、/etc/passwdと/etc/shadowファイルと
おおよそ同等の機能を持つGDBMかDBデータベースファイルです。
データベースファイルは複数のPerlスクリプト(SqWebMailに含まれています)
によって間接的に管理されます。
テキストエディタやコマンドラインから実行されるPerlスクリプトによって編集できる
プレインテキストファイル(通常/etc/userdb)より
Perlスクリプトによってデータベースファイルが構築されます。
/etc/userdbは同じフォーマットの複数のテキストファイル
を含むディレクトリである場合もあります(テキストファイルは連結されます)。
このモジュールは対応するログインアカウントのない
仮想メールアカウントを作ることを可能とします。
仮想メールアカウントは、同じシステムユーザIDを共有できます。
/etc/userdbは、完全に/etc/passwdの代わりとして
利用することもできます。
多くのアカウントが存在する場合に、
アカウントを検索するため/etc/passwdを順次検索しなければならないことは
まったくの資源の浪費です。代わりに高速なデータベース検索はデータベースファイルから
同じ情報を高速に取り出すことができます。
詳細は、userdb(8)から始まる同封されているマニュアルページを参照してください。
userdbデータベースは
maildropメールフィルタによっても対応されています。
maildropをSqWebMailで利用するにはバージョン1.3.4以降でなければなりません。
このモジュールの設定をするためには
authmysqlrc設定ファイルを編集してください。
詳細は、authlib/README.authmysql.htmlを参照してください。
このモジュールの設定をするためには
authpgsqlrc設定ファイルを編集してください。
PostgreSQLの設定はMySQLの情報とほぼ同じです。
詳細はauthlib/README.authpostgres.htmlを参照してください。
make installを実行した後、
システムの起動スクリプトを編集し、システム起動時に
authdaemond startが実行されるようにします。
実際どの認証モジュールが使われるか確認するには、
configureスクリプトを実行した後に、
makeを実行し、コンパイルに成功しなければなりません。
makeを実行した際に、authlibディレクトリ内の
authinfoプログラムがコンパイルされます。
このプログラムを実行すると、
どの認証モジュールがコンパイルで組み込まれたか確認することが出来ます。
有効にする認証モジュールを変更するには、
configureスクリプトを再実行するだけです。
SqWebMailをインストールした後、ログインパスワードを
SqWebMailを通して変更できることを確認してください
(もし--disable-changepassを指定した場合はこの項目を無視してください)。
ログアウトとログインを繰り返し、
パスワードの変更が毎回正しく反映されることを確認してください。
仮想ドメインモジュール(authldapや
authmysqlやauthpgsqlの類)においては、
ログインパスワードを変えることは簡単なことです。
難しい状況はSqWebMailがログインにシステムパスワードを使っているときです
(authpwdやauthshadowや
authpam認証モジュール)。
システムごとにログインパスワードを保持するために異なった手段が用いられています。
多くのシステムは従来通りの/etc/passwdや/etc/shadowを用いていますが、
他のシステムでは、バイナリデータベースを用いたり、NISを用いたりしています。
更に一部のシステムではパスワード検索ライブラリは外部のLDAPディレクトリや
データベースへのラッパーです。
最大限の互換性を保つため、SqWebMailはpasswdコマンドを実行して
ログインパスワードを変更します。
これは従来のUNIXのログインパスワードを変更するコマンドです。
passwdは対話的なコマンドです。
通常、端末から呼び出されます。
SqWebMailは、外観の節で述べたように、passwdからの対話的な応答に答えるため、
expectスクリプトを利用します。
expectスクリプトは、単純でありふれた次のように機能する
passwdコマンドを予期しています。
# passwd
Changing password for luser
(current) UNIX password: (古いパスワードがここで入力される)
New UNIX password: (新しいパスワードがここで入力される)
Retype new UNIX password: (新しいパスワードがここで再入力される)
passwd: all authentication tokens updated successfully
#
大きく異なった対話形式を持つpasswdコマンドを使ったシステムでは、
標準のexpectスクリプトは失敗するかもしれません。
そのようば場合は、システムのpasswdコマンドの出力形式に合うように、
expectスクリプトを調節しなければなりません。
最近のシステムは「悪い」バスワードを拒否するpasswdコマンドを使っています。
悪いパスワードとは、辞書の単語に基づくものや、短すぎるものや、
その他の理由から自明のものです。
SqWebMailのパスワード変更機能を確認するときは、
テスト用のパスワードとして無作為に選ばれたちんぷんかんぷんな文字列を使うようにしてください。
さもなければ、標準のexpectスクリプトは正しく機能しているのに、
正しく機能していないように考えてしまうでしょう。
セキュリティの理由から、passwdの実際のメッセージは
SqWebMailによって表示されることはありません。
インストールの後に行える設定がいくつかあります。
以下ではSqWebMailの設定ファイルが/usr/local/share/sqwebmail
にインストールされていると仮定して話を進めます(標準の位置)。
/usr/local/share/sqwebmail/hostname -
SqWebMailが単独ドメイン用の基本設定でインストールされているとき、
SqWebMailはシステムで定義されたホスト名を送出メッセージ用の
リターンアドレスドメインとして設定します。
このファイルが存在するとき、
その値がシステムで定義されたホスト名の代わりに使われます。
/usr/local/share/sqwebmail/autoresponsesquota -
自動応答とメールフィルタが有効である場合、
自動応答に対するシステム全体(systemwide)のクォータ(容量制限)を設定します。
このファイルの内容は一行で、
"Cnnn" か "Snnn"、もしくはその両方を同じ行の中に含みます。
Cnnn は、nnn個までの自動応答の作成を許可します。
Snnn は、すべての自動応答の全体サイズが
nnnバイトまで作成されることを許可します。
もし、両方の記述がある場合は、両方の制限が適用されます。
このファイルがなければ、自動応答の制限はありません。
このクォータ(容量制限)はシステム全体に適用されます。
特定のMaildirに対するクォータ(容量制限)の設定を上書きするには、
そのMaildir内にautoresponsesquotaファイルを作成します
(これが優先されます)。
/usr/local/share/sqwebmail/sendit.sh
メッセージを実際に送出するために呼ばれるシェルスクリプトです。
ヘッダを書き換えたり、ヘッダにクライアントのIPアドレスを付加するような
カスタマイズが可能です
(sqwebmailは標準ではそのようなことはしません)。
/usr/local/share/sqwebmail/nochangingfrom -
もしこのファイルが存在すれば(0バイトのダミーファイル)、
SqWebMailはFrom:ヘッダを書き換えることをさせず、
常に標準の値になります。
/usr/local/share/sqwebmail/usexsender -
もしこのファイルが存在すれば、
SqWebMailはX-Sender:ヘッダをすべての送出メッセージに付加します。
この機能は、Fromヘッダを変更可能にし、かつ送られたメールを
オリジナルアカウントに対して追跡可能にもしたい場合に用います。
メールサーバは送信ユーザのIDをメッセージヘッダに書き込む必要があるのですが、
同じシステムのユーザIDを複数の仮想アカウントで共有している場合は不可能です。
/usr/local/share/sqwebmail/noimages -
もしこのファイルが存在すれば、
イメージやアイコンは使われません。
生成される画面は、文字のみの画面となります。
/usr/local/share/sqwebmail/logindomainlist -
もしこのファイルが存在すれば、
ログインスクリーンにこのファイルの内容を含んだ
ドメインのドロップダウンリストが現れます。
このファイルには、電子メールのドメインのリストを一行一項目ずつ書きます。
SqWebMailが複数ドメインのメールアカウントを提供する場合に作るべきです。
ログイン時に"user@domain"と入力する代わりに、
"user"と入力しドメインをドロップダウンリストから選択するだけで良くなります。
/usr/local/share/sqwebmail/html/LANG/footer -
もしこのファイルが存在すれば、
その内容がすべての送信メッセージの最後に付加されます。
LANGの場所には言語コードが入ります。
インストールされている言語ごとに個別のフッタを準備します。
/usr/local/share/sqwebmail/html/LANG/TIMEZONELIST -
他のタイムゾーンのリストです。
標準では、すべての日時はサーバの標準のタイムゾーンで表示されます。
ログインスクリーンのドロップリストにより他のタイムゾーンを選ぶことができます。
SqWebMailに標準で含まれるタイムゾーンリストは、ほんのわずかな項目だけしかありません。
このファイルを編集して
ログインスクリーンに表示されるタイムゾーンを追加できます。
ログインされたセッションは、動作がない時間が一定以上続くと
自動的にログアウトします。
タイムアウト期限は標準で20分で、configureスクリプトの
--enable-softtimeoutオプションで設定することができます。
この値は、環境変数SQWEBMAIL_TIMEOUTSOFTを設定することで
調節することもできます。
例えば、Apacheではhttpd.confファイルに次のように追加してください:
SetEnv SQWEBMAIL_TIMEOUTSOFT 3600
ハードタイムアウトという概念もあります。
バードタイムアウトは例え何をしようともセッションをログアウトします。
タイムアウト期限は標準で2時間で、configureスクリプトの
--enable-hardtimeoutオプションで変更することができます。
また、環境変数SQWEBMAIL_TIMEOUTHARDで設定することもできます。
警告:
ハードタイムアウトの期間はログインキャッシュを管理するために用いられます
(もしログインキャッシュ機能が選択されていれば)。
この値は、cleancache.pl清掃スクリプトで使われており、
この値の変更は適切に調整されていなければなりません。
同じログインキャッシュと異なるハードタイムアウト値を使うことは不可能です
(次のセッションで述べられるバーチャルドメインと異なって)。
いたずらに環境変数で値をいじる事はまったくお勧めできません。
簡単にシステム全体が機能しなくなります。それは、おやめください。
もし、ハードタイムアウトを調整したなら、同時にログインキャッシュディレクトリを削除し、
インストールされているcleancache.plスクリプトの
$timeouthard 変数の値を調整してください。
動的に生成されるHTMLの標準テンプレートセットは
/usr/local/share/sqwebmail/htmlにインストールされています。
同じサーバで複数のドメインのWebアクセスを処理する場合に、
ドメインごとに異なったHTMLテンプレートセットを指定することが可能です。
この機能は直接SqWebMail内で実装されているのではなく、 SqWebMailで直接指定する標準の機構は存在しません。 代わりに、設定する作業が若干必要となります。
ドメインベース・テンプレートはsqwebmailバイナリを実行する前に、
Webサーバで環境変数SQWEBMAIL_TEMPLATEDIRを設定することで実現されます。
この環境変数の内容が標準の場所である
/usr/local/share/sqwebmail/htmlを書き換えます。
Webサーバでドメインごとにこの変数の値を設定することによって、
ドメインごとに使われる異なったテンプレートを使うことができます。
これをするために、HTMLテンプレートディレクト
/usr/local/share/sqwebmail/htmlのコピーを作成します。
そして、WebサーバのSQWEBMAIL_TEMPLATEDIRの値を適切に設定します。
例えば、Apacheでは、
<VirtualHost a.b.c.d>
ServerName webmail.example.com
[...]
SetEnv SQWEBMAIL_TEMPLATEDIR /usr/local/share/webmail/webmail.example.com
[...]
</VirtualHost>
可能性は無限大です。
SqWebMailは共有フォルダ(shared folders)に対応しています。
SqWebMailは共有フォルダを作成するための
拡張maildirmakeコマンドを配布物に含んでいます。
maildirmakeコマンドは標準では
/usr/local/libexec/sqwebmailにインストールされ、
マニュアルページは標準では
/usr/local/share/sqwebmail/manにインストールされます。
共有フォルダを設定するための詳細はマニュアルページを参照してください。
SqWebMailは公開されているLDAPアドレス帳から個人のアドレス帳に 電子メールアドレスを取り込むことが出来ます。 システム共通のアクセス可能なLDAPアドレス帳リストが全員に定義され、 個人はそれぞれのために追加のLDAPアドレス帳を設定することが出来ます。
LDAPアドレス帳を検索するには、
OpenLADPの実行時ライブラリとツールがインストールされている必要があります。
OpenLDAP開発ライブラリはインストールされている必要がありません。
SqWebMailは単純にLDAPアドレス帳を問い合わせるために
ldapsearchツールを実行し、結果を読み込みます。
/usr/local/share/sqwebmail/ldapaddressbookファイルは、 アクセス可能なアドレス帳のシステム共通の標準リストを含んでいるべきです。 標準ファイルがインストールされ、 共通のインターネットアドレス帳がいくつか記述されています。 それぞれの行は次のような情報から構成されます:
name<tab>host<tab>port<tab>suffix<tab>binddn<tab>bindpw
<tab> はASCII文字のTABコードです。
/usr/local/share/sqwebmail/ldapsearchは
ldapsearchツールを呼び出すためのラッパーシェルスクリプトです。
configureスクリプトはOpenLDAPツールがインストールされている場所を探します。
このシェルスクリプト中のldapsearchへのパスが正しいか確認し、
必要があれば修正します。
標準のシェルスクリプトはldapsearchに
検索時間を60秒に、アドレス帳から最大で20項目を返すように制限するための
オプションを追加して起動します。
メールフィルタは付加機能です。 メールフィルタにより到着するメッセージを自動的に特定のフォルダに振り分けたり、 転送したり、受信拒否をしたり、メッセージのヘッダや本文の内容によって判断する 規則を設定することが可能となります。 簡単な自動応答機能も使うことができます。 メールフィルタ機能を利用するには、ローカルメールエージェントとして maildropメールフィルタがインストールされている必要があります。 メールフィルタはmaildropのバージョン1.3.4以降を必要とします。 SqWebMailはメールを配送するときに使われるmaildropのための フィルタのレシピを作成します。 maildropのメールフィルタ言語は非常に強力で、 SqWebMailはメールフィルタ言語の一部の機能のみを提供しますが、 メールフィルタに必要な主な機能には十分対応されています。
メールフィルタをインストールし、有効にするための詳細は、
maildir/README.maildirfilter.htmlファイルを参照してください。
メールフィルタオプションは自動応答機能を設定するためにも使われます。 自動応答機能は独立したスクリーンで提供されます。 標準では、作成される自動応答の数とサイズに制限はありません。 それゆえ、自動応答の容量制限を設定することを推奨します ("実行時の設定"を参照してください)。
自動応答は適切なMIMEコンテンツを含めることができます (プレインテキスト以外のMIMEコンテンツをアップロードすることができます)。 次の特別な手順が自動応答コンテンツをマルチパートで準備するために必要です。 例えば、同じメッセージをテキストとHTMLで記述したものでは:
ファイル拡張子をmessage/rfc822MIMEコンテンツに割り当てます。
例えば、mime.typesファイルを編集し、
message/rfc822MIMEタイプを見つけ(なければ追加し)、
"msg"のようなファイル拡張子を少なくとも一つあることを確認します。
マルチパートMIMEの自動応答を準備します。 一番便利な方法は、従来の電子メールクライアントを使って 普通の電子メールメッセージを準備することです。 RFC822形式のメッセージを".msg"拡張子でファイルに保存し、 自動応答スクリーンでそれをアップロードします。
SqWebMailはアップロードされた
message/rfc822コンテンツから
MIMEヘッダを除くすべてのヘッダを取り除き、
MIMEコンテンツタイプヘッダとMIMEコンテンツを残します。
このSqWebMailのリリースには
基本的なスケジュール管理の試験的な実装が含まれています。
この機能を有効にすることができます。
詳細はpcp/README.htmlを参照してください。
SqWebMailのスケジュール管理機能は、
私的なメールサーバで使われることを想定してデザインされています。
公開ウェブサーバでの利用には適していません。
更なる情報のためにはREADMEファイルを参照してください。
SqWebMailはGnuPGを使ったメールの暗号化と復号化を行うことができます。
暗号化を使うための設定に関する詳細は、
gpglib/README.htmlファイルを参照してください。
http://www.courier-mta.org/FAQ.html#authlibを参考にしてください。
認証モジュールに関するもっと詳細な解説、一般的な問題に対する提案や対策が記述されています。
時々Solarisのように風変わりなOSでは、 前節の手順ではコードがコンパイルされても、実行に失敗し、 奇抜なエラーメッセージが出力されます。
これは、OSが実行時ライブラリがある標準的なディレクトリしか
参照していないために起こる問題です。
/usr/local/openldap/libにリンクすべき共有ライブラリがあったとしても、
OSは実行時ライブラリを/libと
/usr/libにしか探しにいきません。
コンパイラによっては、実行ファイルに共有ライブラリへのパスを含めるための
オプションが準備されています。
詳細は、コンパイラのドキュメントを参照してください。
これらのオプションが有効であると判断できないときは、
必要なライブラリを/usr/libに移動するか、
シンボリックリンクを/usr/libからそれぞれのライブラリへ張るという
解決方法もあります。
Microsoft Internet Explorerのあるバージョン(バージョン4と5)には、 HTTP/1.1プロトコルの実装にバグがあり、 添付ファイルをダウンロードする際に、無作為に奇妙なエラーがMSIEに発生します。
この特定のバグに対してApacheを調節する方法を示します。
次の命令をApacheのhttpd.confに加え、
インターネットエクスプローラクライアントへの応答には
HTTP/1.0プロトコルを強制的に使うようにします。
BrowserMatch "MSIE [45]" nokeepalive downgrade-1.0 force-response-1.0
Copyright 1998 - 2002 Double Precision, Inc.
日本語訳 市川 俊一 Toshikazu Ichikawa
