19-4. メ−ルサ−バの LDAP 対応 `28/01〜`2b/03 (1) Mail-Store の LDAP 対応の設計 * メ−ルサ−バの設定の今後 << 検討と希望 >> 以上で小生がやる自前メ−ルサ−バのお守りはお仕舞いである。もうこれ以上はできない。 LDAP の検討は2010年になって再度始めた。Mail-Store の予備機で、予備機能を崩さ ないようにテストしているので、なかなか思うように捗らない。 InterScan7 のデフォルトは Postfix である。 Postfix で SMTP AUTH によるユ−ザ認証 を LDAP は使わない場合でちゃちゃっと確認してみるか、該当ユ−ザがいるかいないか。 ユ−ザがいない場合はただ無視して捨てる。その後 Postfix を LDAP 連携させてみるか。 変更するとしたら Qpopper を Dovecot に、sendmail を Postfix にする。InterScan で はユ−ザ毎に迷惑メ−ルを隔離はせずに LDAP 対応にするだけとする。Dovecot は社内の ユ−ザがメ−ルを受信する際に、LDAP を参照してユ−ザ認証をするよう設定する。 メ−ル送信は Postfix にして LDAP 連携させて、LDAP に登録してないアカウントのメ− ルは送信を止めるようにしようかと思ったが。メ−ルを受ける際だけにユ−ザ認証するこ とにするか。Mail-Store の主と予備マシンで LDAP サ−バを主と予備を稼働させたい。 メ−ル送信の専用ポ−ト、587/TCP サブミッションポ−トという。これでどうして安全に なるのか。プロバイダが契約ユ−ザの利用で使える。587 ポ−トに、決められたIPアド レスからのメ−ル送信は契約ユ−ザからのメ−ルであると言える。 Mail-Store から各ユ−ザが POP3 でメ−ルを取ってくる、このサ−バはUNIX系のSun のコンピュ−タである。このためユ−ザのアカウント管理サ−バは LDAP を使うのが自然 だと思う。Sun のコンピュ−タが Active Directory を使うことはできないはずである。 * 社内にユ−ザがいるのか spamメ−ル対策で、外からのメ−ルを受ける際に Mail-Relay などで社内にユ−ザが いるのか調べる。調べるのは LDAP サ−バに登録されたユ−ザ名である。市販ソフトでも LDAP や RDB のデ−タベ−スを利用して、 調べるのがでてきている。LDAP サ−バは個人 情報が入っている訳で、安全のため内部ネットワ−クにおくことになる。DMZ上にある Mail-Relay から内部にある LDAP サ−バにアクセスするのは少々やらしい。 Mail-Store にメ−ルが来たところでメ−ルアドレスをチェックするかである。 LDAP サ−バからメ−ルアドレスのリストを作る。 それを参照してメ−ルアドレスの存在 をチェックするというのはどうか。 LDAP サ−バが稼働してなくても構わないようにする。 メ−ルアドレスのリストの内容はそう頻繁に変わらない。メ−ルアドレスの追加や削除は 1週間に一度リストを作り直すぐらいでいいかも。 cron で自動でやって sendmail の制 御ファイルに makemap で反映させるとか。IIJ のセミナ−で話を聞いていて、 確かこの ようなことをやっていたと言っていたような。 迷惑メ−ル対策アプライアンスの導入で、隔離したメ−ルを各ユ−ザが見に行けるように するには、LDAP か Active Directory(AD) が必要みたいである。Symantec とトレンドマ イクロはいることを確認した、ミラポイントもいる。LDAP はいいとしても、できれば AD には依存したくない。 Mail-Store でのユ−ザのアカウントの管理もやらないといけない。 これは LDAP になる訳で、マシンが Solaris だから。 やはり LDAP で隔離領域うんぬん はやらないことには、管理が2つになってしまう。それはまずい。 Mail-Store の POP3 ユ−ザのアカウント管理はこれまでやってきた。 アカウントのパス ワ−ドはユ−ザが各自で変更できるように、Usermin 画面を用意もした。 Mail-Store は 予備のマシンを別IPアドレスで置いている。通常稼働の Mail-Store でアカウントをい じったら、予備でもやっておくのが望ましい。通常マシンが壊れた場合に、即座に置き換 えができるようにしておく。通常マシンに LDAP の通常、予備マシンに LDAP の予備を設 けたらどうか。できればマルチマスタ−とか一箇所で管理できるようにしたい。 ------------------------- | □ Mail-Relay | | FireWall □-------------- | Mail-Storeメイン Mail-Store予備 | □LDAPメイン □LDAP予備 | | | -------------------------------------------- MDA( Mail Delivery Agent ) : ユ−ザのメ−ルボックスにメ−ルを配送する MTA( Message Transfer Agent ):送信するメ−ルを受取り、他の MTAにメ−ルを配送する。 * 現状のメ−ルサ−バの様子 メ−ルは受信する際にメ−ルアドレスのユ−ザ名の所を見て、マシンに該当ユ−ザがいる かチェックしている。チェックはマシンの /etc/passwd ファイルを見る。 該当ユ−ザが いるかは調べるが、パスワ−ドはチェックしない。メ−ルボックス /var/mail/user にメ −ルのファイルを追加しようとする際に、該当ユ−ザがいるか調べるのでないか。この処 理をしているのが MTA である sendmail。Mail-Store のマシンでは InterScan が動いて いて、それを sendmail がサンドイッチした形になっている。InterScan でのメ−ルの隔 離はどこでやっているか?。以下の順番 2) の InterScan でやっているはずである。 /usr/lib/sendmail -bd -q1h -C/etc/mail/sendmail-rx.cf 1) の sendmail /usr/lib/sendmail -bd -q1h -C/etc/mail/sendmail-tx.cf 3) の sendmail ↓TCP/25 内外からメ−ル 1) sendmail ( sendmail-rx.cf ) /var/spool/mqueue-rx ↓TCP/10025 2) InterScanでウィルスチェック /opt/trend/imss/queue/postpone ↓TCP/10026 3) sendmail ( sendmail-tx.cf ) /var/spool/mqueue ↓ ↓ 外へのメ−ルは 社内のメ−ルは各ユ−ザのメ−ル << ここでは mbox形式を利用し Mail-Relay へ ボックスへ /var/mail/user ている。もう1つMailDir形 ↑ 式がある。 4) Qpopper から Outlook などメ−ルソフトでメ−ルを取り込む。 /usr/lib/mail/cf/sendmail-tx.mc #/usr/ccs/bin/make sendmail-tx.mc をやっ -------------------------------- てできたファイルが左。 これを /etc/mail/ |DwhostB に sendmail-tx.cf としてコピ−して使用。 |Dmnix.co.jj |define(`SMART_HOST',`smtp:[192.168.2.1]') |DAEMON_OPTIONS(`Port=10026,Addr=127.0.0.1, Name=MTA') /etc/mail/local-host-names メ−ルボックスがこのホストに在るということ。 --------------------------- |nix.co.jj # ls -l /etc/aliases lrwxrwxrwx 1 root root .. /etc/aliases -> ./mail/aliases # ps -ef | grep sendmail root 179 ... 0:00 /usr/lib/sendmail -bd -q1h -C/etc/mail/sendmail-rx.cf root 182 ... 0:00 /usr/lib/sendmail -bd -q1h -C/etc/mail/sendmail-tx.cf smmsp 187 ... 0:00 /usr/lib/sendmail -Ac -q15m * どこでユ−ザ認証ができるか 一連の InterScan の処理で、どこで LDAP ユ−ザ認証をやるのか。Mail-Store での確認。 この状態で 10026 では forward 設定なんかを認識している。存在しないユ−ザも認識し た。SMTP AUTH をかけるのは 10026 番ポ−トでの MTA ソフトでか。 つまり Postfix を 10026 番で動かして SMTP AUTH ユ−ザ認証をさせる。 /etc/aliases /usr/people/katou/.forward /etc/passwd ユ−ザのアカウント ------------- -------------------------- -------------- ikken,baka3 はない。 |ikken: katou |\katou, satou@nix.co.jj |katou::x: ... kkk@nix.co.jj のア |satou::x: ... カウント kkkもない。 # telnet localhost 25 220 mmm.nix.co.jj ESMTP Sendmail 8.12.10; ... << このマシンの hostname は mmm。 verb << 以下でもおしゃべりモ−ドの verb を入れた。 250 2.0.0 Verbose mode mail from: kkk@nix.co.jj "mail from:" と "rcpt to:" を入れた 250 2.1.0 kkk@nix.co.jj... Sender ok ところで quit で抜けた。メ−ルは送っ rcpt to: katou@nix.co.jj てない。"rcpt to: baka3@nix.co.jj"と 250 2.1.5 katou@nix.co.jj... Recipient ok しても "Recipient ok" が出た。ここで quit は存在しないユ−ザを認識していない。 # telnet localhost 10025 220-Welcome to the TrendMicro InterScan MSS SMTP Proxy << InterScanのデ−モンを 220 mmm.nix.co.jj ESMTP Sendmail 8.12.10; ... スル−してsendmail の mail from: kkk@nix.co.jj 10026ポ−トにアクセス 250 2.1.0 kkk@nix.co.jj... Sender ok していると見られる。 rcpt to: ikken@nix.co.jj 050 ikken@nix.co.jj... aliased to katou 050 /usr/people/katou/.forward: line 1: forwarding to \katou, satou@nix.co.jj 250 2.1.5 ikken@nix.co.jj... Recipient ok # telnet localhost 10026 220 mmm.nix.co.jj ESMTP Sendmail 8.12.10; ... localhost 10025 との違いは、上の mail from: kkk@nix.co.jj "220-Welcome to the TrendMicro " 250 2.1.0 kkk@nix.co.jj... Sender ok がないのみ。 rcpt to: katou@nix.co.jj 050 /usr/people/katou/.forward: line 1: forwarding to \katou, satou@nix.co.jj 250 2.1.5 katou@nix.co.jj... Recipient ok # telnet localhost 10026 220 mmm.nix.co.jj ESMTP Sendmail 8.12.10; ... mail from: kkk@nix.co.jj 250 2.1.0 kkk@nix.co.jj... Sender ok localhost 10025 でも、ユ−ザはい rcpt to: baka3@nix.co.jj ないと認識する。 550 5.1.1 baka3@nix.co.jj... User unknown quit * 予備の Mail-Store で試してみる Mail-Store の既存の MTA である sendmail を上書きしないようにしたい。どこか別な場 所にインスト−ルするか、make してできた実行モジュ−ルを直接たたくか。 Postfix は インスト−ルせずに、コンパイルしてできたモジュ−ルを直接、起動して使ってはどうか。 # make install すると既存の sendmail モジュ−ルに上書きしてしまう。 sendmail-tx.cf の方の sendmail デ−モンを止める。そして Postfix を起動させる。い やデ−モンは止めずにポ−ト番号を変えて起動させるか。その方が簡単だ。InterScan で 10026 番をみるのを、例えば 10027 番を見るように変える。Postfixの制御ファイルは?、 /etc/postfix/main.cf、master.cf。sendmail-tx.cf との互換性は、そのまま使えるのか。 Postfix に Cyrus-SASL ライブラリを使うと SMTP AUTH ができる。POP befor SMTP を使 わなくてユ−ザ認証ができるようになる。 POP befor SMTP によるユ−ザ認証はちょっと 変則テクニックだし、まっとうなやり方ではない。sendmail で SMTP AUTH を試したのが "15-6. メ−ルサ−バ・システム、(3)sendmail のリレ−制限とユ−ザ認証" にある。 * 参考で InterScan の LDAP 設定の画面 [管理]->[接続] ---------------- ------ ------ ------------- ----------------------- | コンポ−ネント\| LDAP\| POP3\|デ−タベ−ス\| Control Managerサ−バ\ |------------------ -------------------------------------------------- | LDAP設定 | |--------------------------------------------------------------------------| | | | LDAPサ−バの種類: [Active Directory ▼] | | □有効 LDAP1 | | LDAPサ−バ: [ ] | | 待機ポ−ト番号: [389 ] | | 注意:LDAPサ−バの種類が Microsoft Active Directory の | | 場合、グロ−バルカタログポ−ト3286を使用してください。| | □有効 LDAP2 | | LDAPサ−バ: [ ] | | 待機ポ−ト番号: [389 ] | | | |--------------------------------------------------------------------------| | ポリシ−サ−ビスおよびEUQサ−ビスのLDAPキャッシュ生存期間 | |--------------------------------------------------------------------------| | キャッシュ生存期限(分) [1440 ] | | | |--------------------------------------------------------------------------| | LDAP管理者 | |--------------------------------------------------------------------------| | LDAP管理者アカウント: [ ] | | パスワ−ド: [ ] | | 基本識別名: [ ] 例: DC=foo,DC=foonet,DC=org | | | | 認証方法: ◎ 簡易 | | ○ 詳細: Active Directory に対して | | Kerberos認証を使用する | | | | | Kerberos で3つ設定する所あり | ---------------------------------------------------------------------------- (2) 先ずは LDAP 無しで Dovecot `29/11 * POP3 サ−バの Dovecot で試す POP3 サ−バは Qpopper でなく、昨今は Dovecot がよさそうだ。 いろいろ雑誌や本を見 るにそんな感じである。Cyrus-SASL とは異なる独自 SASL サポ−ト。 IMAP4 で使うメ− ル振り分けの Sieveプラグイン。POP3/POP3S/IMAP/IMAPS 対応。UNIXの /etc/passwd、 PAM、LDAP サ−バの利用、Dovecot 指定のパスワ−ド・ファイルを参照することができる。 LDAP を見ないのでは dovecot-1.2.8 は動いた。LDAPを見る設定にしてコンパイルすると、 実行時にエラ−となり、どうやっても起動しなかった。dovecot-1.2.9 でやっても同じだ った。どうやら GNU のCコンパイラが古くてだめみたいである。 それでちょっと前のバ −ジョンの dovecot-1.0.15 で、駄目元でやってみたら LDAP を見た。 POP3サ−バ 暗号化なし パソコン -------------- --------- 予備の Mail-Storeマシンで LDAPサ |qpopper:110 | <-----> |Outlook| −バを稼働。POP3サ−バをもう1つ |dovecot:112 | <-----> |Express| ポ−ト番号をかえて動かす。 -------------- --------- | | -------------------------------- * 基本的な動作を確認してみる 先ずは LDAP 無し、OpenSSL の暗号化も無しでちゃちゃっと、ただの POP3 サ−バとして コンパイル&インスト−ルしてみる。これで動きを確認する。メ−ルボックス形式はこれ までの mbox とする。以下試してみて、とりあえずメ−ルは受信できた。 # cd /usr2/local/source http://www.dovecot.org/ にソ−ス # gunzip -c dovecot-1.2.8.tar.gz | tar xf - はある。Stablereleases が v1.2.8、 # cd dovecot-1.2.8 Dovecot Sieve plugin for Dovecot v1.2 などがあった。 # setenv 関係するところのみ表示。 PATH=/usr/sbin:/usr/bin:/gccのbin:/usr/ccs/bin LD_LIBRARY_PATH=/usr2/local/lib:/gccのlib CPPFLAGS=-I/usr2/local/include LDFLAGS=-L/usr2/local/lib # ./configure --prefix=/usr2/local # make # make install /usr2/local/sbin/ に dovecot, dovecotpw が入った。 # ls -F /usr2/local/etc dovecot-db-example.conf dovecot-ldap-example.conf openldap/ はOpenLDAP dovecot-dict-sql-example.conf dovecot-sql-example.conf のインスト−ルで入っ dovecot-example.conf openldap/ たもの。 # make install かける前に、 このファイルを DDD.conf ぐらいにコピ−しておいた。 先にインスト−ルしたのがどうなるか見た。DDD.confはそのままで、他のは上書きさ れた。with-ldap を付けたのを先にインスト−ルしたのだが、dovecot-example.conf の中身は同じだった。dovecot-example.conf を dovecot.conf にコピ−して設定。 /usr2/local/etc/dovecot.conf 左は関係する所のみ。http://www.dovecot.jp/doveco ---------------------------- t.conf にこの制御ファイルの日本語の解説がある。 |protocols = pop3 | protocol pop3 { 110 番の次で 111番にしてみたら使われているとでた。 | listen = *:112 /etc/services を見たら sunrpc 111/udp rpcbind が |# .. 使っていた。112 番ポ−トを使うように指定してみた。 | } |#listen = * これもコメント外すと 110番ポ−トを見ることになる。 |disable_plaintext_auth = no 平文パスワ−ドを有効にする。 |ssl = no ssl_disable = yes だと # dovecot -n でエラ−出た。 | |mail_location = mbox:~/mail:INBOX=/var/mail/%u mail_location の古い指定は | default_mail_env。 |mail_privileged_group = mail コメントのままでもできた。 |first_valid_uid = 100 元は 500、デフォルトは 500 以上。 |#last_valid_uid = 0 |#first_valid_gid = 1 デフォルトは non-root/wheel。 |#last_valid_uid = 0 | |protocol pop3 { | pop3_uidl_format = %08Xu%08Xv %u でもできた。この2つの指定無くてもできた。 | pop3_client_workarounds = outlook-no-nuls oe-ns-eoh |} | |protocol lda { | postmaster_address = postmaster@nix.co.jj |} |auth_verbose = yes |auth_debug = yes |auth_debug_passwords = yes | |auth default { 以下これら以外のところはコメントにした。 | mechanisms = plain login login は記述して無くてもできた。 | passdb passwd-file { | args = /usr2/local/etc/passwd 他にも passdb pam { とか passdb passwd { と | } かユ−ザ情報を見るところを複数、指定ができる。 | userdb passwd-file { auth default { 内は、 左で指定した以外は全部 | args = /usr2/local/etc/passwd コメントにした。 | } | user = root /usr2/local/etc/passwd とは Solaris のOSの |} /etc/passwd を見るのでなく、Dovecot 専用に作 |dict { ったパスワ−ド・ファイルを見るということ。 |} |plugin { |} 先立ってグル−プとユ−ザ dovecot を追加しておくこと。 /etc/passwd Solaris のパスワ−ド・ファイル。 sendmailが見る。 -------------------------------------------- |kensan:x:111:11::/usr/people/kensan:/bin/sh パスワ−ドは henomohe。 /usr2/local/etc/passwd このファイルの変更は直ちに有効になる。dovecot が見る。 ---------------------------------------------------------- |kensan:{plain}henomohe:111:11::/usr/people/kensan:/bin/sh 注.マシンには各ユ−ザのアカウントは必要である。つまりこれまで通り /etc/passwd フ ァイルは必要である。MTAである sendmail をこれまで通りのままで使う場合には、ユ −ザのメ−ルを /var/mail/user_name ファイルにユ−ザの UID と GID で作るため。 # /usr2/local/sbin/dovecot << Dovecot を起動する。 1つのパソコンで Outlook と Outlook Express を使い分けて、送信と受信の確認をして みた。予備のメ−ルサ−バで dovecot を 102 番で待ち受けで稼働しておく。予備のメ− ルサ−バの方に Outlook から kensan@nix.co.jj 宛に送信する。 Outlook Express の方 は 102 番からメ−ルを取って来るようにしておいて受信する。 ん?、別に使い分けなく てもいいのか。普段使いが Outlook なので、このテストには Outlook Express とすれば。 このテストから分かることはメ−ルを送信する際には、MTA がユ−ザのアカウントがある か /etc/passwd ファイルで確認している。MTA は仮想とかでないので。 そしてメ−ルを 受信する際には dovecot.conf 管理の /usr2/local/etc/passwd ファイルを見て確認して いる。上記では passdb passwd-file の指定でユ−ザのパスワ−ドを調べて、ユ−ザのユ −ザ名があるか調べるのは userdb passwd-file 指定で行なっていることになる。 -------------------------------------------------------------------------------- ということは LDAP を使うのはメ−ルを受信する場合のみというのも有り。MTA はこれま でのを使いマシンの /etc/passwd を見るのである。 しかしこれでは LDAP を使う意味は なくなってしまう。ユ−ザのアカウント情報を一元管理するどころか増えてしまう訳で。 -------------------------------------------------------------------------------- * 幾つか確認してみる 1年振りにやってみて1日で、とりあえずこのシンプルなテストは再現できた。前にいろ いろテストした記録のファイルがあるが、もう一度さらきにテストしてみる。その方が早 い。忘れてしまってもうすでに他人がやったことになっているのと一緒。急がば回れであ る。ともかくテスト環境を整備しないことには。予備の Mail-Store マシンで Dovecotを 112 番ポ−トで動かす。LDAP や Dovecot の制御ファイルは、パソコンから TeraTerm で telnet して vi 作業をする。Apollo から telnet すると、vi の挙動がおかしいのだ。 [ その1 ] # /usr2/local/sbin/dovecot -n << 上記制御の設定状態を表示する。 # 1.0.15: /usr2/local/etc/dovecot.conf log_path: /usr2/local/etc/dovecot.log info_log_path: /usr2/local/etc/dovecot_info.log protocols: pop3 listen: *:112 ssl_disable: yes disable_plaintext_auth: no login_dir: /usr2/local/var/run/dovecot/login login_executable: /usr2/local/libexec/dovecot/pop3-login first_valid_uid: 43 mail_location: mbox:~/mail:INBOX=/var/mail/%u mail_executable: /usr2/local/libexec/dovecot/pop3 mail_plugin_dir: /usr2/local/lib/dovecot/pop3 pop3_uidl_format: %u pop3_client_workarounds: outlook-no-nuls oe-ns-eoh auth default: verbose: yes debug: yes debug_passwords: yes passdb: driver: passwd-file args: /usr2/local/etc/passwd userdb: driver: passwd-file args: /usr2/local/etc/passwd # telnet localhost 112 これで POP3 サ−バとしてちゃんと動いているか確認する。 +OK Dovecot ready. USER kensan User ユ−ザ名、PASS パスワ−ドを入れた。これらはマシ +OK ンの /etc/passwd を見ているのではない。 dovecot.conf PASS henomohe の指定で、/usr2/local/etc/passwd ファイルを見ている。 +OK Logged in. quit パスワ−ドを間違ったのを入れたら"-ERR Authentication +OK Logging out. failed." と出た。 [ その2 ] 各ユ−ザのホ−ムディレクトリはいるんじゃないのか。メ−ル転送の設定で .forward フ ァイルをおく場所がいる。これは POP3 サ−バとは関係ない。 /usr2/local/etc/passwd ユ−ザのホ−ムディレクトリ部を無くした。 ----------------------------------------------------------- |kensan:{plain}henomohe:111:11::: |#kensan:{plain}henomohe:111:11::/usr/people/kensan:/bin/sh /usr/people/kensan/ が ~ の場所で、ここにmail ディレクトリを作ろうとしたけど失敗 したと出た。 /usr2/local/etc/dovecot.log ------------------------------------------------------------------------- |Dec 08 10:41:48 POP3(kensan): Error: mail_location: mbox: Home directory 続く | not set for user. Can't expand ~/ for mail root dir in: 続く | ~/mail:INBOX=/usr2/local/mail/kensan |Dec 08 10:41:48 POP3(kensan): Fatal: Namespace initialization failed [ その3 ] /usr2/local/etc/dovecot.conf ------------------------------------------------ MTA の sendmail がメ−ルを |mail_location = mbox:~/mail:INBOX=/var/mail/%u /var/mail/kensan に作る。 この記述により /usr/people/kensan/ に mail ディレクトリができる。 メ−ルソフトが POP3 アクセスした際にできたことを確認。Mail-Store にメ−ルが届いてなくても、POP3 アクセスしただけでディレクトリはできた。/var/mail/ に kensan ファイルがない。 [ その4 ] /usr2/local/etc/passwd ---------------------------------------------------------- |kensan:{plain}himitsu:111:11::/usr/people/kensan:/bin/sh マシンの /etc/passwd のパスワ−ドと異なっても関係ない。 このパスワ−ドはパソコン のメ−ルソフトに設定する POP3 のパスワ−ドは、これに合わせること。 (3) Dovecot で LDAP 連携を試す `2b/03 * 以下の様相でテストした dovecot-1.0.15 をコンパイルして、 何とか実行できたのでこれでいろいろテストしてみ る。パソコンのメ−ルソフトから POP3 サ−バにアクセスする際に、 LDAP にユ−ザが登 録されているか判定する。 /usr2/local/etc/openldap/ldap.conf は全部コメント。 # /usr2/local/bin/ldapsearch -x -b 'dc=nix,dc=co,dc=jj' 'uid=kensan' # extended LDIF # LDAPv3 # base with scope subtree # filter: uid=kensan # requesting: ALL # kensan, People, nix.co.jj dn: uid=kensan,ou=People,dc=nix,dc=co,dc=jj objectClass: top objectClass: person LDAPサ−バに登録されている kensan のアカ objectClass: inetOrgPerson ウント情報を表示してみた。cn, sn など略。 uid: kensan mail: kensan@nix.co.jj /usr2/local/etc/dovecot.conf ---------------------------- |ssl_disable = yes dovecot-1.0.15 では ssl = no 指定はだめ。 |auth_verbose = yes |auth_debug = yes デバッグのログをいろいろ取りますよの指定。 |auth_debug_passwords = yes | |auth default { |# passdb passwd { OSの PAM機構を使う場合は passdb pam 指 |# } 定をする。ほかにも passdb shadow、passdb |# passdb passwd-file { checkpassword というのもある。多分shadow |# args = /usr2/local/etc/passwd はOSの /etc/shadow を見るのだと思う。 |# } | passdb ldap { | args = /usr2/local/etc/dovecot-ldap.conf | } | パスワ−ドは LDAP サ−バに問い合わせるの |# userdb passwd { み。passdb passwd、passdb passwd-file の |# } コメントを外すと、上から順番に探してくる。 |# userdb passwd-file { 最初のOSの /etc/passwd、次に /usr2/loc |# } al/etc/passwd、最後に LDAP サ−バである。 |# userdb ldap { |# } | userdb static { | args = uid=111 gid=11 home=/usr/people/%u << ユ−ザ kensan の UID,GID など | } は LDAPサ−バに問い合わせるの |} でなく uid=111 などとしている。 /usr2/local/etc/dovecot-ldap.conf ----------------------------------------------------------- |hosts = 192.168.1.14:389 |ldap_version = 3 |auth_bind = yes |auth_bind_userdn = uid=%u,ou=People, dc=nix, dc=co, dc=jj |base = ou=People, dc=nix, dc=co, dc=jj |scope = subtree |pass_attrs = uid=user,userPassword=password << パスワ−ドしか検索し |pass_filter = (&(objectClass=posixAccount)(uid=%u)) << ないことになっている。 |#default_pass_scheme = PLAIN auth_bind = yes は認証バインド方式。パスワ−ドをこの制御ファイルに書かないの で安全である。Dovecot などアプリケ−ションがユ−ザのアカウントを LDAP サ−バ に問い合わせるのに "パスワ−ド検索方式" と "認証バインド方式" がある。 /usr2/local/etc/openldap/slapd.conf ----------------------------------------------------------------------- |include /usr2/local/etc/openldap/schema/core.schema |include /usr2/local/etc/openldap/schema/cosine.schema |include /usr2/local/etc/openldap/schema/inetorgperson.schema |pidfile /usr2/local/var/run/slapd.pid |argsfile /usr2/local/var/run/slapd.args |access to dn.subtree="ou=People,dc=nix,dc=co,dc=jj" attrs=userPassword | by dn="cn=madmin,ou=People,dc=nix,dc=co,dc=jj" read | by anonymous auth | by * none |access to attrs=userPassword | by self write | by anonymous auth | by * none |access to * | by self write | by * read |database bdb |suffix "dc=nix,dc=co,dc=jj" |rootdn "cn=manager,dc=nix,dc=co,dc=jj" |rootpw {CRYPT}WsdAEU1SiM1w6 |directory /usr2/local/var/openldap-data |index objectClass eq |index uid pres,eq * プログラムの起動とログの確認 # /usr2/local/libexec/slapd << LDAP の起動。 # /usr2/local/sbin/dovecot << Dovecot の起動。 # telnet localhost 112 << これで動作を確認。ちゃんと LDAPサ−バからアカ +OK Dovecot ready. ウント情報を拾ってきている。Outlook Expressで user kensan メ−ルの送受信をこの後やってみたらできた。 +OK pass henomohe +OK Logged in. quit +OK Logging out. # cd /usr2/local/etc dovecot.log には特にログは出てない。 # tail ldaplog Mar 10 16:55:32 mmm slapd[15386]: [ID 607349 local4.debug] conn=13 op=4 BIND anonymous mech=implicit ssf=0 ... BIND dn="uid=kensan,ou=People,dc=nix,dc=co,dc=jj" method=128 ... BIND dn="uid=kensan,ou=People,dc=nix,dc=co,dc=jj" mech=SIMPLE ssf=0 ... RESULT tag=97 err=0 text= # tail dovecot_info.log dovecot: Mar 10 16:55:32 Info: auth(default): client in: AUTH 1 PLAIN service=POP3 secured lip=127.0.0.1 rip=127.0.0.1 resp=AHNhaXRvdTAxADJzc2VpU1NM ... auth(default): ldap(kensan,127.0.0.1): bind: dn=uid=kensan,ou=People, dc=nix, ... auth(default): client out: OK 1 user=kensan dc=co, dc=jj ... auth(default): master in: REQUEST 14 23847 1 ... auth(default): master out: USER 14 kensan uid=110 gid=101 home=/usr/people/kensan ... pop3-login: Login: user=, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, secured ... POP3(kensan): Disconnected: Logged out top=0/0, retr=0/0, del=0/0, size=0 (4) Postfix を LDAP 連携にする? `2b/03 * 仮想ユ−ザのやり方しかないのか Postfix を LDAP でユ−ザ認証するには、SMTP AUTH を必ずやらないけないのか?。どう もバ−チャルドメインの Postfix の設定はやっかいである。MTA の Postfix で仮想ユ− ザとして処理する。この場合はOSのパスワ−ドファイルは見ない。別な独自のパスワ− ドファイルをみる。仮想ユ−ザのメ−ルボックスを Dovecot の POP3サ−バでメ−ルを取 る。アカウント情報は LDAP をこれで見ることができる。OSレベルでは /etc/passwdで 個々のメ−ルユ−ザの管理ができない、それで一人のメ−ルユ−ザがメ−ルを送受信する ということにする。アプリケ−ションのレベルで個々のメ−ルユ−ザを管理することにす る。それが仮想ユ−ザということになる。 ・各自のメ−ルボックスを /usr/people/user に作る以上、/etc/passwd は必要。 ・/etc/passwd にない UID 番号のファイルだって作ることはできる。 ・SMTP AUTH 対応でない MTA では、メ−ルを送る際にはパスワ−ドはみない。 1) LDAP を先ず参照、2) LDAP が止まっていたら独自パスワ−ドファイルを参照。という ようにできればいいのだが。 OSに密接に関係する /etc/passwd は見ないようにしたい。 2つのマシンで rcp や rsync コマンドなどで、/etc/passwd の同期をとるというのは危 険だと思う。/etc/passwd ファイルをコピ−している最中、マシンに問題が起きたりした ら ファイルが壊れてしまう。 予備のマシンに二度とログインできなくなってしまう可能 性だってある。その点、独自のパスワ−ドファイルならリスクは小さいと思う。 メ−ル送信時 --- /etc/passwd 参照。ユ−ザ名のみ確認。パスワ−ドは確認しない。 メ−ル受信時 --- LDAP を先ず参照、LDAP が止まっていたら次に /etc/passwd 参照。 正直言って無理。こんなややこしいのは安定稼働はできたもんではない。 MTA まで LDAP 対応させるというのは難しい。メ−ル送信のなりすましを防止するのは意味はあるが。な りすましてメ−ル受信される方がもっと質が悪い。 POP3 サ−バへアクセスするパスワ− ドを各ユ−ザが変更できるようにする方が、優先してやるべきことである。別にパスワ− ドの変更は今でもできるようにしている、Usermin で。ただそれが予備のマシンまで同期 できないのが問題である。同期させるために LDAP サ−バを設けるのである。 PAM をうまく使えばメ−ルのユ−ザのアカウントは、メ−ル送信の際のことだが、ひょっ としたら簡単に LDAPを利用できるのでないか。「システム管理者のためのLDAP徹底理解」 259ペ−ジを見てそう感じた。Postfix が直接 LDAP を見にいくのでなく、OS機能の PAM で通常は /etc/passwd を見るところを、LDAP を見にいくようにできるのでないか?。 Postfix の制御ファイルはいじることなくだ。いやだめだ。調べたら Postfix は PAM を 利用するのも saslauthd を介することになっている。まったくどうなってるんだ!。 * Postfix のユ−ザ認証機能の実装 Postfix でメ−ルを出す際にユ−ザ認証するには、 Cyrus-SASL というソフトをインスト −ルして使う。Postfix の制御ファイルの smtpd.conf で "pwcheck_method: saslauthd" を記述する。Cyrus-SASL ソフトの saslauthd を LDAP を利用するオプションを付けて稼 働させる。Postfix の制御ファイル main.cf にも2つほど、SASL を利用する指示を記述 しておく。Postfix は LDAP サ−バを直接アクセスすることはできないので、 saslauthd というデ−モンを間にかますということ。 Outlook <--> postfix <--> saslauthd <--> PAM <--> /etc/passwd, LDAP Outlook <--> postfix <--> saslauthd <--> LDAP : pwcheck_method: saslauthd Outlook <--> postfix <--> /etc/passwd ファイル : pwcheck_method: pwcheck Outlook <--> postfix <--> 独自パスワ−ド・ファイル : pwcheck_method: sasldb Postfix の smtpd.conf Cyrus-SASL の制御ファイルで LDAP を見るようにする。 -------------------------- pwcheck_method: sasldb では、 saslpasswd コマンド |pwcheck_method: saslauthd でユ−ザのアカウントを 独自パスワ−ド・ファイルに |mech_list: PLAIN LOGIN 登録する。 パスワ−ドの暗号化もできる。暗号化というよりハッシュ値にできる。その CRAM-MD5 と DIGEST-MD5 は Cyrus-SASL では使えない。ネットで記事を見るにだいぶ混乱している。 * LDAP 対応はちょっと仕切直しだ 余力があれば sendmail を Postfix に変えてみるか。昔 INDY で Postfix を設定したこ とがある、そんなに厄介なものではなかった。 トレンドマイクロの InterScan ではデフ ォルトは Postfix を使うことになっているし。 ただこれまで何とかそれなりに安定して sendmail をずっと稼働させてきた訳で、 他のに変更するというのは幾許かの冒険となる。 多分 Gmail などクラウドのメ−ルサ−ビスを利用するのに舵を取る、 そんなに時間はか からないような気がする。しかし、まだ企業の約7割が自社でメ−ルサ−バを運用してい るという、日経の雑誌でそんな記事を見た。変更する猶予期間は3年ぐらいでないか。 * LDAP への問い合わせ posixAccount : 必須 uidNumber gidNumber homedirectory, 任意 userPassword geos organizationalPerson : 継承 person, 任意 userPassword(person からの継承) inetOrgPerson : 継承 organizationalPerson, 任意 uid givenName mail userPassword posixAccount の属性を追加するため、いったん LDAP のデ−タベ−スを消す。 katou01.ldif に posixAccount を加えた ---------------------------------------------- |dn: uid=katou01,ou=People,dc=nix,dc=co,dc=jj |objectClass: top |objectClass: person |objectClass: inetOrgPerson |uid: katou01 |cn: katou01 Ikken |sn: katou01 |mail: katou01@nix.co.jj << メ−ルアドレス。 |userPassword: henomohe << ユ−ザ katou のパスワ−ド。 * LDAP に問い合わせる際 ユ−ザのパスワ−ドは暗号化したのに変えないといけないのでないか。 xxx.ldif のユ−ザの登録 --------------------------- |userPassword: {CRYPT}xxxx << ここと slapd.conf ------------------------ |rootpw xxx |password-hash {CRYPT} << ここが一致していること。 /usr2/local/etc/dovecot.conf ---------------------------- |auth default { | mechanisms = plain /usr2/local/etc/dovecot-ldap.conf --------------------------------- |default_pass_scheme = CRYPT * Dovecot の設定 /usr2/local/etc/dovecot-ldap.conf -------------------------------------------------------------------------------- |# User attributes are given in LDAP-name=dovecot-internal-name ... |# uid - System UID gid - System GID |# home - Home directory mail - Mail location |# |#user_attrs = homeDirectory=home,uidNumber=uid,gidNumber=gid | |# Filter for user lookup. Some variables can be used ( ... |# %u - username |# %n - user part in user@domain, same as %u if there's no domain |# %d - domain part in user@domain, empty if user there's no domain |#user_filter = (&(objectClass=posixAccount)(uid=%u)) | |# If you wish to avoid two LDAP lookups (passdb + userdb), you can use |# userdb prefetch instead of userdb ldap in dovecot.conf. In that case you'll |# also have to include user_attrs in pass_attrs field prefixed with "userdb_" |# string. For example: |#pass_attrs = uid=user,userPassword=password,\ |# homeDirectory=userdb_home,uidNumber=userdb_uid,gidNumber=userdb_gid | |# Filter for password lookups |pass_filter = (&(objectClass=posixAccount)(uid=%u)) |#default_pass_scheme = CRYPT /usr2/local/etc/dovecot.conf ---------------------------------------------- |auth default { | passdb ldap { | args = /usr2/local/etc/dovecot-ldap.conf | } | passdb passwd { | } | userdb ldap { | args = /usr2/local/etc/dovecot-ldap.conf | } | userdb passwd { | } |} (5) LDAP サ−バの実運用のために * ユ−ザ管理用ソフトの検討 phpLDAPadmin はどうか。メ−ルサ−バの LDAP デ−タを管理する。Apache と PHP5 が必 要。(株)デ−ジ−ネットが開発のフリ−ソフト?、オ−プンソ−ス?。07/10/12 update。 Usermin で LDAP サ−バでのユ−ザのパスワ−ドの変更ができる。 ldapmodify コマンド でもできるが、エントリを vi で編集する代わりにGUIでやれるということ。 phpLDAPadminは LDAP サ−バの簡易制御ソフトではなく、ユ−ザなどの情報を登録するた めの簡易ユ−ザ管理ソフト。Luma(Python,PyQt) とか JXplorer(Java) というのも?。 * 実際にできるやり方は Mail-Store の sendmail と Usermin を LDAP 対応にせないかんのかな。 sendmail はで きそうだが Usermin はどうか。Usermin のバックで LDAP を動かして、GUIはUsermin を使って色々操作できればいいが。 Dovecot では PAM は使わないようにする。dovecot.conf でじかに何を使うか指定した方 がいい。PAM も利用するようにしていると選択肢が訳が分からない。 どうも PAM を利用 する passdb pam { ではユ−ザのパスワ−ドを調べることだけに利用できる。 メ−ルサ−バのソフト sendmail, Postfix, Qpopper, Dovecot などで、LDAP を試すのは 大変である。これらのソフトを LDAP 対応にする、コンパイルだけでも容易にはできない。 そんなわけで、とりあえず手近な装置を、FortiGate なんかを LDAP 制御してみるか?。 * LDAP サ−バの設計と設置 (主と副 LDAP サ−バの設置) Mail-Storeメイン Mail-Store予備 -------------------- -------------------- | Postfix Dovecot | | Postfix Dovecot | | | | | | LDAPメイン | | LDAP予備 | -------------------- -------------------- | | -------------------------------------------------------- LDAP サ−バの冗長化は rsync のコピ−みたいなものぐらいと思っていいのでないか。マ スタ−とスレ−ブの関係が問題か。LDAP サ−バを利用するアプリケ−ション側で、 マス タ−とスレ−ブをどのように指定するかだ。安全性を考える。ラッパ−機構を入れてアク セス制限をする。暗号化する。 部門毎の LDAP サ−バを設置する。メインのLDAPサ−バでアカウントの登録して、自動的 に部門用 LDAP サ−バ に反映されるようにする。 このサ−バのマシンは部門用のサ−ビ スサ−バということで、いろいろ機能をもたせる。部門用の文書サ−バとか。 通常は1つのマシン内でユ−ザのアカウントの処理はされる。ネットワ−クにアカウント 情報が流れることはない。LDAP の問い合わせを暗号化する必要はない。Mail-Store メイ ン の LDAPメイン が止まった場合、LDAP予備をみにいく。LDAP の SASL で暗号化をする。 同じセグメントに配置していれば、 LDAP サ−バ間の通信を暗号化するまでもないような 気がする。スイッチングハブで2つのマシン間でしか通信しないわけだから、 特に LDAP の登録情報が漏れるとは思えない。 フリ−ソフトの UlraPossum というのはどうか。LDAPサ−バのマスタ−、スレ−ブの管理 を容易にするソフトらしい。http://ultrapossum.org/。 別にこんなソフトを使うまでも ないのでないか。どうかなよく分からない。LDAP の市販ソフトではできるのでないか。 * OpenLDAP の暗号化 Cyrus SASL が入ってないとだめ?。LDAPv3 完全準拠にならない。LDAPv3完全準拠という のはどういうことか。LDAPv3 は日本語がちゃんと対応した。LDAP サ−バにLDAPのクライ アントからアクセスする際に暗号化通信をさせるか。LDAPのクライアントにはどういうの があるか。 LDAPサ−バ LDAPサ−バ LDAPクライアント ------ ------ ------- | 副 | <----> | 主 | <-----> | | ------ SSL ------ SSL ------- | | | ------------------------------------------ LDAPサ−バ LDAP中継ソフト LDAPクライアント ------ ------- ------- Mail-Store で | 主 | <-----> | | <-----> | | MTA と POP3 ------ SSL ------- SSL ------- | | | MTA : sendmail or Postfix ------------------------------------------ POP3 : Qpopper or Dovecot 制御ファイルでパスワ−ドを暗号化指定するところがある。ユ−ザのアカウント情報が流 れる、ユ−ザの名前とパスワ−ド。LDAP ではほかにもいろいろ。パスワ−ドは LDAPのデ −タで暗号化できるので、特にネットワ−クを流れても問題ないのでないか。流れるさい は平文に戻る?。LDAP を SSL 対応にすると 636/TCP を使う。389/TCPも使う?。検索が 遅くなる、メ−ル配送のボトルネックになる可能性もある。全部のトラフィックを暗号化 する。LDAP の TLS は デジタルIDでクライアントと SSL 暗号化をする。LDAP を SASL 対応にする。流れるパスワ−ドを暗号化できる。OpenSSL は組み込まなくてもいいのでな いか、SASL(Simple Authentication and Security Layer) で。 * 社内のユ−ザの存在チェックは Mail-Relay でフィルタリングしてでないと、そのまま大量のメ−ルが Mail-Storeに来る。 これらのメ−ルを全部 LDAP でユ−ザの存在チェックをするとなると、負荷はかなり大き いと思う。社内から送信するメ−ルだけ、その送信者の存在チェックをするというのはど うか。外から社内の送信者を偽造されたメ−ルはチェックできないということになるが。 * phpLDAPadmin を Solaris 9 に入れようとしてつまずく # cd /usr/local/source # ls -l -rw-r--r-- 1 ... 11801597 3月 16日 16:37 php-5.2.17.tar.gz -rw-r--r-- 1 ... 1616508 3月 16日 15:40 phpldapadmin-1.2.0.5.zip http://phpldapadmin.sourceforge.net/ からダウンロ−ドしたのは、latest version で phpldapadmin-1.2.0.5.zip 1.6 MB。 http://sourceforge.jp/ からは 拡張子 .tgz のが とれる、2010-01-30 ダウンロ−ド数402。展開するだけでコンパイルとかはない。 # unzip phpldapadmin-1.2.0.5.zip # ls -F phpldapadmin-1.2.0.5 INSTALL config/ htdocs/ locale/ tools/ LICENSE doc/ index.php queries/ VERSION hooks/ lib/ templates/ PHP のサイトから "PHP 5.2.17 (tar.gz) [11,525 Kb] - 06 January 2011"をとってきた。 だめ、コンパイルに失敗する。 昔のならいいかと思ったが php-5.2.1 でも同じエラ−が 出た。zlib,libconv,libgcc-3.4.6 とか新しいのを入れ直さないといけないみたい。 # gzip -d php-5.2.17.tar.gz /usr2/local/etc/openldap に LDAP の制御フィルな # tar xf php-5.2.17.tar どがある。DB_CONFIG.example や slapd.conf など。 # cd php-5.2.17 # ./configure --with-apxs2=/usr/local/apache2/bin/apx --with-ldap=/usr2/local/et | c/openldap --with-gettext checking for xml2-config path... /usr/bin/xml2-config configure: error: libxml2 version 2.6.11 or greater required. * 参考資料 「Software Design」2008/08,P.19〜74,"特集:差がつく運用ノウハウ満載!今どきPostfix > 指南"。LDAP 連携の記事が P.54〜57 にある。何かすごく分かりにくい記事だ。 「Software Design」2006/08, P.30〜37, "ネットワ−ク運用/管理 五輪書「弐:水の巻」、 > 2章 OpenLDAP で Postfix 認証情報を一元管理"。なめるようにして読むこと。 「Software Design」2003/06, P.76〜87,"第3回 PHPで作るWebユ−ザ管理コンソ−ル"。 > 中満氏の記事。http://bluecoara.net/ メ−ルサ−バのユ−ザ管理のWeb画面。 「Software Design」2003/05、中満氏の記事、バ−チャルドメインと LDAPでらくらくシス > テム管理、第2回 LDAPとPostfix。記事としてはもう古い。2003/04 号が第1回の記事。 「Software Design」2002/12, P.145〜178,"第2特集:新規も移行もばっちり! Postfixマ > ニエストロになろう"。Postfix を実際に運用していく場合にはしっかり見ること。 「Software Design」2003/05 の記事では独自のスキマ−ファイルを書いて、LDAP に機能を 追加している。こんなこと普通にやっていいものか。入門 LDAP の本を見たら、独自のス キマ−ファイルでないあらかじめ有るスキマ−ファイルを使っている。 * 国破れて山河あり `2b/08 夏草や兵どもが夢の跡。もう LDAP サ−バを利用するというのは諦めということで、この まま放置してしまおうか。RADIUSサ−バでユ−ザ名とパスワ−ドだけ管理し、それを利用 するぐらいで、もういいぞ。LDAP は多くのユ−ザに関することを管理できる。 ユ−ザだ けでなく何でも管理できてしまうのだが。その柔軟性ゆえに極めて不可解なものになって しまっている。ネットワ−ク関連装置の方では FortiGateでの利用を試したところ、案外 すんなりできた。アプリケ−ションの方ではメ−ルソフトでの利用をトライしてみたが何 ともやりにくかった。こんなんで Postfix や Dovecot で LDAP を本当に利用できるのか、 安定して利用できるのかと思ってしまう。できの悪いソフトに振り回されるのはたまらん。 ついでに関係するPAMのこと。これもとても分かりにくい。 LDAP と組みあわさって不 可解さの相乗効果を発揮している。ということで、これにて閉店ガラガラガラ−。 * マシンのユ−ザ認証機構とPAM ( `2h/11/M 付録にあったのをここに移した ) 改めて取り組みはじめて1ヶ月。執拗に Dovecot と OpenLDAP を試してきた。 ようやく なんとなく分かってきた。PAM は初めに Solaris に搭載されたということである。 しか し Solaris の PAM の情報はほとんどないといっていい。マシンのログインなどでデフォ ルトで PAM は使われているらしい。最初から有効になっているようなのだ。 制御ファイルは /etc/pam.conf。このファイルはへたに書き換えてはいけない。二度とマ シンにログインできなくなる恐れがある。他のマシンから root 権限で telnet アクセス しておくこと、万が一おかしくなってもこの telnet 画面で戻せる。そんなことが調べて いるとしばしば書かれているのを見た。 どうも Solaris 8,9,10 は同じ PAM の仕組みをとっているのでないか。 ネットを検索し まくって乏しい記述を見渡した感想である。 Linux 系が /etc/pam.d/service_name であ るのに対し、Solaris は /etc/pam.conf ファイルにまとめて記述してある。 Solaris に は /etc/pam.d/ は元々はなかった。 Solaris で LDAP を使いたい場合は /lib/security/pam_ldap.so.1 これを PAM で見るよ うに設定する、らしい。 しかしこの pam_ldap.so.1 は Solaris の iPlanet Direcotory Server 用のものらしい。OpenLDAP では http://www.padl.com/ の pam_ldap ソフトをイ ンスト−ルして設定するらしいのだ。 # ls /usr/lib/nss* /usr/lib/nss_compat.so.1* /usr/lib/nss_nis.so.1* /usr/lib/nss_dns.so.1* /usr/lib/nss_nisplus.so.1* /usr/lib/nss_files.so.1* /usr/lib/nss_user.so.1* /usr/lib/nss_ldap.so.1* /usr/lib/nss_xfn.so.1* Solaris の nscd( Name Service Cache Daemon ) というのはどうなっているか。 説明を 見ると gethostbyname のような内部コマンドで、passwd を問い合わせたのをメモリにキ ャッシュするということ。 passwd の他 group, hosts, ipnodes, exec_attr, prof_attr, user_attr もキャッシュする。キャッシュ時間の制御は /etc/nscd.conf フィイルによる。 /usr/sbin/nscd はデフォルトのOSでは動かしていない。PAM で /etc/nsswitch.confを 見る場合にキャッシュは有効になるようだ。これは LDAP サ−バへの問い合わせをキャッ シュできるか。メ−ルの送受信のたびに LDAP サ−バに問い合わせが発生するというのは、 いかがなものか。膨大なアクセスになる。Dovecot を PAM を利用するのであれば。 nss_ldap ってのは何だ。Linux などで標準でサポ−トされている。ユ−ザ認証に LDAPを 利用するのに nss_ldap を介在させることができる。 アプリケ−ションから getpwent() コマンド、そして nss_ldap を見る。 ここから nsswtich.conf を見るなり /etc/passwd を見るなり。「入門 LDAP/OpenLDAP」の140ペ−ジ。説明になっているのだろうか。 ------------------------------------------------------------------------------------ [付録] PAMについて * LDAP サ−バとクライアント /usr/local/etc/openldap/slapd.conf LDAP サ−バ用の slapd プログラムが見る制 ---------------------------------- 御ファイル。 | | |suffix "dc=nix,dc=co,dc=jj" | | /usr/local/etc/openldap/ldap.conf LDAP クライアントが見る制御ファイル。 --------------------------------- |BASE dc=nix,dc=co,dc=jj |URI ldap://192.168.1.9 /etc/nscd.conf nscd プログラムが見る制御ファイル。 --------------------------------------- |# enable-cache hosts no | debug-level 0 | positive-time-to-live passwd 600 | negative-time-to-live passwd 5 * マシンのログインのユ−ザ認証 /etc/nsswitch.conf --------------------- |passwd: files ldap /etc/passwd, /etc/group, /etc/hosts, /etc/shadow は |group: files "passwd: files" など "files" の指定で使われる。 |hosts: files dns こうするとユ−ザ認証でパスワ−ドをチェックするのに、/etc/passwd ファイルを見てな ければ次に LDAP サ−バに尋ねる。 /etc/passwd ファイルでチェックする際に PAM 機構 により、/etc/pam.conf の "login auth requisite pam_authtok_get.so.1" から順番に 評価されていく。 OSのコマンド login のほかに rlogin, rsh, ppp, passwd, cron が pam.conf で評価されるようになっている。 /etc/pam.conf ------------------------------------------------- |login auth requisite pam_authtok_get.so.1 これは上から順番に評価してい |login auth required pam_dhkeys.so.1 く文法になっている。 |login auth required pam_unix_auth.so.1 |login auth required pam_dial_auth.so.1 | | |other auth requisite pam_authtok_get.so.1 |other auth required pam_dhkeys.so.1 |other auth required pam_unix_auth.so.1 | | 結構長い記述だ。 # ls -l /lib/security lrwxrwxrwx ... pam_ldap.so -> ./pam_ldap.so.1 pam_passwd_auth.so とか -rwxr-xr-x ... pam_ldap.so.1 pam_unix_account.so とか lrwxrwxrwx ... pam_unix.so -> ./pam_unix.so.1 pam_unix_auth.so とかいろ -rwxr-xr-x ... pam_unix.so.1 いろある。 * マシンのアプリケ−ションのユ−ザ認証 ユ−ザ認証については PAM 機構にお任せするか。 PAM を利用するか他のユ−ザ認証を利 用するか。アプリケ−ションは /etc/nsswitch.conf はみない。アプリケ−ションの中で PAM 機構を利用するようにしていると pam.conf をみる。 pam.conf にはOS付属のコマ ンド login などの記載の他に other というのがある。POP3 サ−バの Dovecot なんかは、 このother で評価される。Dovecot で PAM を利用するのは、passdb pam { ではユ−ザの パスワ−ドを調べることだけに利用できる。実際に利用するには /etc/pam.d/dovecot フ ァイルを作ること。http://dovecot.jp/dovecot.conf。