qmail-ldap のある暮らし
このドキュメントは,http://www.qmail-ldap.org/wiki/Lwql にある Life with qmail-ldap を翻訳したものです.
'''基本的に英語が苦手なため,翻訳ミス等が多数ある事が予想されますし,意訳をしている場面もあると思います.その為,原文もあわせて読んで下さい.
このドキュメントのオリジナルバージョンは HTML フォーマットで http://www.lifewithqmail.org/ldap/ から常に取得できます.
このドキュメント及び Dave Sill の Life With Qmail - qmail のある暮らし (http://www.lifewithqmail.org/) は qmail および ldap についての基本を説明していない為,理解していない場合はインスピレーションがわかないだろうし,役に立たないでしょう.このドキュメントは qmail-ldap の基本的なセットアップを説明しますが,あなたは,qmail および ldap を,qmail-ldap の作業をする際に理解しなければなりません.
qmail-ldap は,ユーザデータを検索するターゲットをディスク上のファイルからでは無く,ldap ディレクトリから検索する為の qmail 1.03 へのパッチです.これは,特に分散環境でより簡単な管理が可能になります.ISP 等で大きなメール環境を導入する為に非常によく適したクラスタリングサポートビルトインを qmail-ldap にまとめてあります.
このドキュメントは,あなたが行う必要がある物のほとんどを与えることを試みています.qmail-ldap のコンポーネントとどの様にそれらが一緒に適合するかの方法を記述し,代表的な導入の説明を提供します.そして,プロセスの中で良くある質問のいくつかを取り上げます.しかし,既存の qmail と ldap に関するドキュメントの置き換える事を意図してはいません.これはリファレンスではなく,順序よく進めるための入門書です.
このすばらしいソフトウェアの一部は Andre Oppermann と Claudio Jeker によって開発されました.
オンラインのドキュメント
公式の qmail-ldap のページ
Deve Sill の qmail のあるくらし
qmail-ldap のための追加パッチ
Adfinis がリリースした phpQLAdmin は Web ベースで qmail-ldap を管理するツールで,現在は Turbo Fredriksson がメンテナンスしています.
コマンドラインで管理するツールが利用可能です: http://www.enderunix.org/qldapadmin
同じく,メーリングリスト qmail-ldap@qmail-ldap.org があります.参加,退会等の情報はこちら
もしあなたがリストに投稿するとしたら,あなたは利用可能なドキュメントを読み,LDAP と qmail について必要な情報を読み理解し,少なくとも control 以下の設定ファイル及び完全なエラーログを必要とします.これらが本当に多くなってしまった場合 Web サーバにアップロードし,それを情報とみなす為に URL を公表して下さい.
検索可能なアーカイブがあります.どうか,リストを尋ねる前に利用してください.
Lightweight Directory Access Protocol または LDAP は大きいネットワークと組織の管理で非常に有用なツールです.SQL データベースシステムよりも最大 10倍速い,読み取りオペレーションに最適化されたデータベースです.LDAP の最も良い特徴の 1つが,ユーザアカウントを格納する能力です.一つのアカウントエントリが,UNIX ワークステーション,imap サーバ,Web ページのアクセスコントロールや電子メールアカウントで利用する事が出来ます.
LDAP サーバで qmailUser スキーマとユーザアカウントをロードする事で,組織の中のすべてのメールサーバで同じアカウントデータを共有する事ができます.Qmail-LDAP はすべてのユーザが内部の電子メールアカウントに user@company.com のようなスタイルを使うときでも,各ユーザのアカウントエントリで指定されたメールホストへのルーティングをサポートします.user@mailhost1.company.com のような内部アドレスをついかい,メールをイントラネットに残すときでも,それらを user@company.com に変換する必要はありません.
Qmail-LDAP の電子メールアカウントを格納するために LDAP を使う場合は,LDAP ディレクトリを構築するか,既存のディレクトリを修正する必要があります.Qmail-LDAP は,LDAP について事前に理解している事を管理者に要求しますので,HOWTO のこのセクションでは基本的な LDAP または,unix のトピックは扱いません.LDAP ディレクトリの構築と管理に不慣れな人々にとってのすばらしい本があります.そして,http://www.openldap.org/ に検索可能なメーリングリストアーカイブがあります.
1. Qmail-LDAP の作業の最初のパートは,ディレクトリサーバをセットアップし,スキーマの追加を行う事です.あなたがスキーマのチェックを無効にした場合,これは必要ありませんが,スキーマチェックを無効とした状態で LDAP サーバを動作させる事はとても困難になるでしょう.どのようにスキーマをロードするかは,あなたのサーバに依存します.
slapd.conf を編集し,以下のラインを追加して下さい.もちろんファイルロケーションとマッチさせて下さい:
include /etc/ldap/schema/inetOrgPerson.schema include /etc/ldap/schema/nis.schema (required by inetOrgPerson.schema) include /etc/ldap/schema/qmail.schema (found from the qmail-ldap patch, copy it to your schema directory)
変更の効果を生むために,slapd を再起動して下さい.
slapd.oc.conf を編集し,以下のスキーマを追加して下さい.
objectclass qmailUser requires objectclass, mail, uid allows mailMessageStore, homeDirectory, userPassword, mailAlternateAddress, qmailUID, qmailGID, mailQuota, mailHost, mailForwardingAddress, deliveryProgramPath, qmailDotMode, deliveryMode, mailReplyText, accountStatus
変更の効果を生むために,slapd を再起動して下さい.
あなたがロードしたスキーマがあるので,少々システムを構成する事が必要です.私は,仮想のユーザアカウントを議論しようとしています.メールサーバ上にユーザの為のホームディレクトリ又は,/etc/passwd アカウントがぜんぜん無い事を意味します.つまり,これはユーザの遊び場では無く,メールサーバなのです.
これは,少量の制御ファイルの設定を伴います:
- edit /etc/passwd and add: vmail:*:11184:2110::/var/qmail/maildirs/:/bin/true
- edit /etc/group and add: vmail::2110
- mkdir /var/qmail/maildirs
- chown -R vmail:vmail /var/qmail/maildirs
- cd /var/qmail/control
- /var/qmail/control 内の指定された内容を持つ以下の制御ファイルを作成して下さい:
defaultdelivery: ./Maildir/
ldapmessagestore: /var/qmail/maildirs
ldapgid: 2110
ldapuid: 11184
必要ならば,UID/GID とパスを代用して下さい.
注意: あなたが Courier-IMAP を使っている場合,この同じ vmail ユーザは,Maildir にアクセスする為に使用する事が出来ます.
あなたは,この時点でディレクトリ階層とアカウントを作成する必要があります.ここでは,以前にまったくエントリも無い,新しくインストールされたディレクトリサーバからどうやって進めるかをデモンストレートします.
a. ldif を作成する為,あなたのお気に入りのテキストエディタを使用して下さい.また,以下はあなた固有のセットアップ状態に従って修正して下さい.ldif における最初のブロックは,slapd.conf ファイル内で定義されるディレクトリベースとマッチしていなければなりません:
suffix "ou=company, c=CC"
また,次のエリアも
ou: accounts
dn: uid=elvis, ou=accounts, o=company, c=CC cn: Elvis Presley sn: Presley objectClass: top objectClass: person objectClass: inetOrgPerson objectClass: qmailUser mail: elvis@graceland.com mailAlternateAddress: elvis.presley@graceland.com mailAlternateAddress: the-king@graceland.com mailAlternateAddress: theking@nirvana.org mailHost: mailhost1.graceland.com mailMessageStore: /var/qmail/maildirs/elvis uid: elvis userPassword: {MD5}X03MO1qnZdYdgyfeuILPmQ=
b. ファイルを作成した後,ldapadd ユーティリティを使用してディレクトリ内にそれを読込んで下さい.
ldapadd -acrv -h ldap.company.com -D "cn=manager,dc=company,dc=com" -w managers_password -f my.ldif
詳細については ldapadd(1) マニュアルページを参照して下さい.
qmail-queue
qmail-queue はメッセージを受け,それらをキューに置きます.それらは常に "received" ラインを通過し,メッセージ検査をまったく行いません.
qmail-send
qmail-send は qmail-queue によって発信キューに置かれたメッセージを処理し,ローカル配送の為の qmail-lspawn とリモート配送の為の qmail-rspawn を使用します.qmail-send はキューにある全てのメッセージを直接配送に再スケジュールします.
qmail-todo
qmail-send の作業負担を減らす為に qmail-todo はメールの前処理を行います.qmail-todo により,高い処理能力のメールサーバ全体の性能は過負荷をかけられた qmail-send プロセスによって引き起こされる "無差別な qmail シンドローム" よりずっと良いでしょう.
qmail-lspawn
qmail-lspawn はメールをローカルに配送する為にユーザを探し,それを実行する為に qmail-local を呼び出します.これはクラスタリングをサポートしています.
qmail-local
qmail-local は配送を実行します.これは .qmail ファイルを処理します.
qmail-rspawn
qmail-rspawn はリモート配送の為に qmail-remote を呼び出します.
qmail-remote
qmail-remote は SMTP 経由でメールをリモートホストに送信します.これは TLS 暗号化,QMTP プロトコル及びその他の機能をサポートします.
qmail-inject
qmail-inject は標準入力からメッセージを読み,ヘッダを追加し配送を処理する qmail-queue を呼び出します.
qmail-smtpd
qmail-smtpd は通常,25/tcp ポートをリスンし,SMTP 経由でリモートホストからメッセージを受け取ります.これは,SMTP 通信の間に LDAP ディレクトリを照合する為に補助プログラムである auth_smtp 及び qmail-verify を呼び出す事が出来ます.qmail-smtpd は TLS 暗号化と新しい環境変数をトリガとするアンチスパム技術を纏めてサポートします.
qmail-qmqpd
qmail-qmqpd は QMQP 経由でリモートホストからメッセージを受け取る,迅速なメッセージキューイングプロトコル (Quick Message Queuing Protocol) です.これは "常にメッセージを中継" します.従って,事前認証済みのホストだけが接続出来る事を確認しなければなりません.QMQP はクラスタ内の配送に使われます.もし貴方が qmail-ldap をクラスタ環境で使いたい場合は qmail-qmqpd をセットアップしなければなりません.
qmail-popup
qmail-popup はネットワーク上で POP3 経由でユーザ名,パスワードを読み認証の為のサブプログラム (通常は auth_pop) を呼び出します.
qmail-pop3d
qmail-pop3d は qmail-popup から呼び出され,POP3 セッションを処理します.
auth_pop
auth_pop は qmail-popup から認証するユーザに呼び出されます.これは qmail-ldap クラスタ内で POP3 セッションの転送に責任を持ちます.
auth_imap
auth_imap は auth_pop と同様の働きをしますが,IMAP の為の物です.セッションの転送をハンドリングします.
qmail-ldaplookup
LDAP のセットアップが正しく行われているかを確認するツールです.qmail-ldaplookup -u [uid] または qmail-ldaplookup -m [mail address] と使用してください.
Daemontools は,qmail-ldap に必要不可欠なコンパニオンパッケージです.デーモンを実行,管理する事を補佐するいくつかのヘルパープログラムを提供します.
qmail-ldap はいかなる修正も無く /var/qmail/boot をサービス起動スクリプトにより使用されて引き渡されます.
svc -t /service/qmail-send
svstat /service/qmail-sendは,特定のデーモンを監視する為に svscan より実行され,これが死んでしまった場合は再起動されます.
UCSPI は UNIX クライアント/サーバプログラムインタフェースです.これは,プロセス間通信のへぷパープログラムの為のコマンドライン体系と環境変数仕様を定義します; これは,クライアントとサーバを書く事をより簡単にします.
UCSPI-TCP は TCP アプリケーションの為の UCSPI の別の実装です; これは,特定の環境変数とそれらの詳細について,より多くの詳細な指定をします.
ucspi-tcp は UCSPI-TCP を実装している djb のパッケージです.
Appendix 1 に従って,ucspi-tcp 及び daemontools のインストールを行って下さい.
cr.yp.to から qmail-1.03.tar.gz を取得します..www.qmail-ldap.org からパッチを取得します.両ファイルを展開し,qmail-1.03 ディレクトリへ移動します.ソースツリーにパッチを適用します.
patch -p1 < /path/to/qmail-ldap-1.03-xxxxxxxx.patch
セットアップに反映する為,Makefile を編集して下さい.以下の値を変更する事が可能です:
LDAPLIBS=-lldap -llberNetScape の為には,次の様な何かが必要となるでしょう.
LDAPLIBS=-L/usr/local/ldap/lib -lldap50 -llber50 -lpthread LDAPINCLUDES=-I/usr/local/ldap/includePATH を調節する事を忘れないで下さい.
echo 125 > /path/to/conf-spawn - OR - echo "cc -O2 -DFD_SETSIZE=4096" > /path/to/conf-cc
Makefile の修正及び conf-* の確認を行った後,qmail のユーザを追加しなければなりません.コンパイルの前にそれらを追加する事が必要で,コンパイル後はそれらの uid を変更する事は出来ません.INSTALL.ids のサンプルスクリプトを参照して下さい.
さぁ,コンパイルの時間です:
make setup check
TLS (SSL 暗号化) を使用する場合,証明書を作成する必要があります.証明書については OpenSSL のドキュメントを参照して下さい.
make cert - or - make cert-req
echo "mail.yourdomain.com" > me
echo "yourdomain.com" > rcpthosts echo "mail.yourdomain.com" >> rcpthosts echo "otherdomain.com" >> rcpthosts
ldap.example.com:389 ldap2.example.com:389
echo "cn=root, o=yourcorp, c=de" > ldaplogin
echo 0 > ldaplocaldelivery
echo "qmailuser" > ldapobjectclass
注意: 20010101 は壊れていて,効果を発揮しませんでした.
both (LDAP 属性 "deliveryProgramPath" と .qmail ファイルの両方を使用できます) dotonly (.qmail ファイルのみ利用出来ます) ldaponly (LDAP 属性 "deliveryProgramPath" と .qmail ファイルの両方が利用できません) ldapwithprog (LDAP 属性 "deliveryProgramPath" が利用出来,.qmail ファイルは利用できません)
デフォルト: ldaponly
注意: もちろん non-ldap 配送 (ldaplocaldelivery が有効ならば /etc/passwd で検索されたユーザ情報) は行われます.
mailmessagestore: joe/ mailmessagestore: /maildisk/joe/
are equivalent.
デフォルト: NULL
新たに配送される全てのメッセージを送信者に差し戻す事になるまで,ユーザが利用出来るディスク空間のデフォルトの最大値.サイズはバイト単位で表記します.existant な場合はユーザの mailquotasize 属性によって上書きされます.デフォルト: NULL (サイズ制限無し)
echo "1000000" > defaultquotasize
上記の場合: 1000000 byte (1MB) のサイズ.
quotawarining の設定を忘れないで下さい.忘れてしまっていた場合,全ての quota による警告メッセージは発行されません.
新たに配送される全てのメッセージを送信者に差し戻す事になるまで,ユーザが利用出来るメッセージ数のデフォルトの最大値.カウントはファイル単位です.existant な場合はユーザの mailquotacount 属性によって上書きされます.デフォルト: NULL (カウント制限無し)
echo "1000" > defaultquotacount
上記の場合: 最大 1000 のメッセージ数.
quotawarining の設定を忘れないで下さい.忘れてしまっていた場合,全ての quota による警告メッセージは発行されません.
クォータ警告メッセージのカスタムテキスト.
echo "You can contact us at +49 40 12345678" > quotawarning
注意: 複数行が利用出来ます.qmail-reply に似た %HEADER% マジックをサポートします.デフォルト: NULL (全てのクォータ警告が出力されません!)
echo "You can contact us at +49 40 12345678" > custombouncetext
echo "joe@yourdomain.com" > relaymailfrom echo "@otherdomain.com" >> relaymailfrom
最初の例は,joe@yourdomain.com が中継する事を可能にし,2番目は @otherdomain.com で終わる全てのアドレスが中継可能な事を表しています.
autohomedirmake 機能をコンパイルした場合,homedir が無い場合に作成する為のスクリプトのフルパスを指定します.スクリプトはユーザの uid/gid を持って実行される為,ホームディレクトリが /home にあり joe (システム uid joe) のホームディレクトリが作成されるべきである場合,joe は /home への書き込み権限を持つ必要があります.全てのユーザが単一のシステム uid/gid ペアにマップされた仮想の利用環境である場合,この機能はとても優れており virtual/virtual と渡す事が出来ます.そして /home には virtual だけが書き込み可能であれば大丈夫です.The script gets the path for the to be created homedir as first parameter and aliasempty as second one.
#!/bin/sh mkdir -m 700 -p $1
echo 1 > ldapcluster
0 はクラスタを無効にします
Hiroyuki Seino http://www.seichan.org/ http://www.seichan.org/blog/
Today:1 Yesterday:3 All:19354