<?xml version="1.0" encoding="UTF-8"?>

<feed xml:lang="ja" xmlns="http://www.w3.org/2005/Atom">
    <title>ら・う゛ろぐ</title>
    <subtitle>ラブテックのブログです</subtitle>
    <id>http://www2.lav-tec.co.jp/:1</id>

    <link rel="alternate" type="text/html" href="http://www2.lav-tec.co.jp/" />
    <link rel="self" type="application/atom+xml" href="http://www2.lav-tec.co.jp/atom.php" />
    <generator uri="http://nucleuscms.org/">Nucleus CMS v3.41</generator>
    <updated>2009-06-30T01:20:32Z</updated>

    <entry>
 <title type="html"><![CDATA[BLTC社製LEDランプ販売開始]]></title>
 <link rel="alternate" type="text/html" href="http://www2.lav-tec.co.jp/?itemid=24" />
 <author>
  <name>Nakamura</name>
 </author>
 <updated>2009-06-30T01:20:32Z</updated>
 <published>2009-06-30T10:20:32+09:00</published>
 <content type="html"><![CDATA[（株）ラブテックではBLTC社（台湾）製LEDランプの販売を開始いたしました。<br />
次世代の照明器具として注目されているLED。しかし、国内製品のほとんどが器具一体型であるため、取付には電気工事が必要です。唯一販売されている東芝製LEDランプも照度が低く、ダウンライトなどで使用するには暗すぎて実用的ではありません。<br />
「既存の器具を生かしてLEDを使いたい」というのは誰しも考えることですが、開発途上の製品だけになかなか価格と性能の折り合いの良い製品が少ないというのが現状です。<br />
そんな中で、十分に実用レベルの明るさを持ちながら既存の白熱用器具が使用でき、尚かつ価格も手の届く範囲である同社の製品はLED照明の普及に拍車をかけるものだと思っています。<br /><br />
<img src="http://www2.lav-tec.co.jp/media/1/20090630-p2026-2.png" width="200" height="192"  title="" alt="" /><img src="http://www2.lav-tec.co.jp/media/1/20090630-p2026-1.png" width="201" height="192"  title="" alt="" /><br />
BLT2026シリーズ<br /><br />
第一弾として6Ｗ～18Ｗまでの4製品ライン24種のLEDランプを販売いたします。<br />
製品の詳しい情報は弊社の運営する<a target="_blank" href="http://www.led-lighting.jp/">「ECO照明情報サイト」</a>で御覧下さい。<br />
また、7月1日より同製品を含む<a target="_blank" href="https://shop.led-lighting.jp/">省エネ照明専門ウェブショップ</a>もオープンいたしますので、こちらのほうもよろしくお願いいたします。<br /><br />]]></content>
 <id>http://www2.lav-tec.co.jp/:1:24</id>
</entry><entry>
 <title type="html"><![CDATA[Tips!--LDAP利用についてのいろいろ]]></title>
 <link rel="alternate" type="text/html" href="http://www2.lav-tec.co.jp/?itemid=23" />
 <author>
  <name>Nakamura</name>
 </author>
 <updated>2008-12-19T02:59:30Z</updated>
 <published>2008-12-19T11:59:30+09:00</published>
 <content type="html"><![CDATA[　バーチャルドメイン環境をLDAPを利用して構築してきたわけだが、LDAPを使用する上で思い通りの動作にならずに悩んだ点がいくつかあったのでそれについて少し触れておく。<br /><br />
<b>・phpldapadmin使用でのLDAPアクセス制御設定</b><br /><br />
まずはLDAPのアクセス制御についての記述だ。LDAPを利用するサービスと参照すべき内容、項目に対する権限などを事前に精査してまとめておく必要があるだろう。今回の場合、<br /><br />
<span style="color: rgb(51, 153, 102);">・postfix　&rarr;メールの配送制御で使用<br />
・Smtp Auth　&rarr;認証で使用<br />
・dovecot　&rarr;pop、imapの認証に使用</span><br /><br />
と基本的には3つなのだが、ウェブからLDAPエントリーの書き換えを行うためにphpldapadminも使用しているので、<br /><br />
<span style="color: rgb(51, 153, 102);">・phpldapadmin　&rarr;アカウント管理に使用</span><br /><br />
となる。サービスに関しては管理者をバインドで接続して全ての情報取り出しをしているので問題ないが、アプリケーションであるphpldapadminについては各アカウント管理ユーザーの接続とするつもりだった。<br />
この場合のLDAPサーバーアクセス制御記述なのだが、参考にしたサイトにあった記述を弊社用に置き換えると<br /><br />
<span style="color: rgb(128, 0, 0);">access to dn=&quot;.*,ou=mailsys,dc=lavtec,dc=JP&quot; attribute=userPassword<br />
&nbsp;&nbsp;&nbsp; by self write<br />
&nbsp;&nbsp;&nbsp; by dn=&quot;cn=Manager,dc=lavtec,dc=JP&quot; write<br />
&nbsp;&nbsp;&nbsp; by dn=&quot;uid=admin,  			name=</span><br />]]></content>
 <id>http://www2.lav-tec.co.jp/:1:23</id>
</entry><entry>
 <title type="html"><![CDATA[連載--ホスティングサーバーの再構築（番外編）]]></title>
 <link rel="alternate" type="text/html" href="http://www2.lav-tec.co.jp/?itemid=22" />
 <author>
  <name>Nakamura</name>
 </author>
 <updated>2008-12-16T08:31:08Z</updated>
 <published>2008-12-16T17:31:08+09:00</published>
 <content type="html"><![CDATA[　前回までの行程で一通りのサーバー構築を完了し、実際に運用を始めている。<br />
追加の機能としてメーリングリストを作りたいと思ったのだが、バーチャル環境での構築に関しての情報がこれまた少ないわけだ。<br /><br />
メーリングリストサーバーにはmajodomo、fml、Mailmanなどいろいろあるわけだが、使用するサーバーによってはかなりややこしい仕込みをしないとバーチャル環境では動いてくれないようなのは解ってきた。<br />
かかる手間が同じなら運用がわかりやすいほうがいいかと思い、管理をウェブ上から行えるMailmanを使用してみることにした。<br /><br />
インストールマニュアルを参考にインストールと初期セットアップは普通に終了した。MTAにpostfixを使う場合の基本的な設定もmain.cfには書き込んだが基本的にメーリングリストサーバーはローカルで配送するのでマニュアルに書かれている内容だけの記述では配送でエラーが出てしまう。<br />
Debianなどは専用にカスタマイズしたものが用意されていてmaster.cfのパイプを使って配送できるようなのだが、あいにくとRedHat系のOSにはそういった便利なものは入っていなかった。<br /><br />
要はMailmanで使用するMLのアドレスをローカル配送するようにすればいいわけなので、配送方法を指定するtransport_mapsディレクティブを使用することにした。<br /><br />
まずはpostfix側に設定した内容。<br /><br />
#マニュアルに書かれている内容の追記<br />
<span style="color: rgb(128, 0, 0);">owner_request_special = no<br />
recipient_delimiter = +</span><br /><br />
#エリアスマップの追加<br />
<span style="color: rgb(128, 0, 0);">virtual_alias_maps = ldap:/etc/postfix/forward.cf<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ldap:/etc/postfix/virtual-alias.cf<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hash:/etc/mailman/virtual-mailman</span>　<span style="color: rgb(255, 0, 0);">&larr;追加行</span><br />
#トランスポートマップの設定<br />
<span style="color: rgb(128, 0, 0);">trransport_maps = hash:/etc/mailman/transport</span><br /><br />
次に/etc/mailman/transportファイルを作成する。内容はMLのアドレスをローカル配送にするという単純なもの。<br /><br />
#MLトランスポートの設定<br />
<span style="color: rgb(128, 0, 0);">ml@domain1.net&nbsp; local</span><br /><br />
これをハッシュファイルに変換する。<br /><br />
<span style="color: rgb(0, 0, 255);"># postmap /etc/mailman/transport</span><br /><br />
先にメールサーバー構築で使用したテストアカウントをメーリングリストに登録してテストしてみると、うまく配送された。試しに外部プロバイダのアカウントをメーリングリストに登録してみるとここでエラー発生。ログを確認するとリレーアクセスではねられている。<br />
postfixのリレー制御を調整しなければならないようだ。送信はローカルからなので問題ない。問題は受信者アドレスにあるようだ。<br />
現在のmain.cfで設定している受信者リレー制御は、<br /><br />
<span style="color: rgb(128, 0, 0);">smtpd_recipient_restrictions = permit_mynetworks<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; permit_sasl_authenticated<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reject_unauth_destination</span><br /><br />
確かにこのままではローカルからの送信だとはねられてしまう。majodomoのようにリストユーザーが単純なテキストファイルで保存されていればよかったのだが、Mailmanの場合そんな単純な形式では保存されていない。<br />
ちょっと面倒だがリストメンバーを記述したアクセスマップを作成してそれを使うことにした。具体的には /etc/postfix/ 配下にrecipientというファイルを作成し、accessファイルと同じ形式でメールアドレスを許可リストとして登録した。<br />
つまり、<br /><br />
<span style="color: rgb(128, 0, 0);">メールアドレス1　　OK<br />
メールアドレス2　　OK</span><br /><br />
のように書いたファイルを作成しハッシュしておく。次にmain.cfの smtpd_recipient_restrictions に一行追加する。<br /><br />
<span style="color: rgb(128, 0, 0);">check_recipient_access hash:/etc/postfix/recipient</span><br /><br />
postfixをリロードして再度送信してみると今度はうまくいった。<br />
メーリングリストの運用もこれでできるようになって一通りの機能は網羅できた。次回から今回の構築で直面したいくつかの問題について、どのような手法で解決したかをTipsとして掲載することにする。<br /><br />]]></content>
 <id>http://www2.lav-tec.co.jp/:1:22</id>
</entry><entry>
 <title type="html"><![CDATA[連載-- ホスティングサーバーの再構築 その10]]></title>
 <link rel="alternate" type="text/html" href="http://www2.lav-tec.co.jp/?itemid=21" />
 <author>
  <name>Nakamura</name>
 </author>
 <updated>2008-12-12T04:04:09Z</updated>
 <published>2008-12-12T13:04:09+09:00</published>
 <content type="html"><![CDATA[<b>◇Spamassassinの実装</b><br /><br />
Spamassassinは非常に強力で優れたメール用コンテンツフィルターである。今年の3月に弊社のメールサーバーにも導入したが、2週間程度の調整でほぼ100%のスパム排除に成功している。<br />
&nbsp; Spamassassinはメールのヘッダ、本文の内容を精査し、語句や文章の内容に対してスコアと呼ばれる点数を加算していく。この点数が設定した上限点を上回るとスパムと判定され、これまた設定した内容でメールを加工して配信してくれる。スパムと判定された場合、初期状態では件名の最初に設定された語句（[SPAM]）を付加して配送する。<br /><br />
Spamassassinの設定ファイルは/etc/mail/spamassassin/に一括して置かれている。動作の設定はlocal.cfを編集して行うが、ここに設定する内容は最小限で問題ない。<br /><br />
・local.cfファイル内容<br />
#SPAMと判定する閾値（デフォルト）<br />
<span style="color: rgb(128, 0, 0);">required_hits 5</span><br />
#スパム報告の形式<br />
<span style="color: rgb(128, 0, 0);">report_safe 1</span><br /><br />
デフォルトは1なのだが、local.cfのデフォルトは0に設定されている。0の場合ヘッダへのリポート挿入だけで本文には手を加えない。ここでは1にして本文を添付ファイルとして送付するようにしている。<br /><br />
#件名に[SPAM]という文字を挿入する（デフォルト）。<br />
<span style="color: rgb(128, 0, 0);">rewrite_header Subject [SPAM]</span><br /><br />
ここは単に件名を書き換えるだけでなく差出人、宛先を書き換えることもできる。その場合Subjectの部分をFromまたはToにして書き換える内容を記述すればいい。<br /><br />
#ヘッダの追加<br />
<span style="color: rgb(128, 0, 0);">add_header spam MySpamTag Spam detected<br />
add_header all Spamchecked</span><br />
最初の行は第2引数spamによってスパム判定された場合に挿入することを指定している。第3引数はその際に付加するヘッダの名称。その後に続く文字が付加される文字列である。2行目は全てのヘッダにチェック済みであることを付加するための設定。<br /><br />
#最大トークン数の設定<br />
<span style="color: rgb(128, 0, 0);">bayes_expriry_max_db_size 200000</span><br /><br />
デフォルトでは15万トークンを越えると一部が削除されるようになっている。ここでは20万に設定した。<br /><br />
次に日本語環境に合わせたスコアの書き換えとルールを追加するわけだが、これについてはネット上に多数のものが公開されている。使えそうなものを探してダウンロードしてくるといいだろう。後はダウンロードしたファイルをlocal.cfと同じディレクトリに配置し、include文をlocal.cfに追記してこれらのファイルを読み込ませるように設定すればSpamassassinの設定は終わりである。<br /><br />
次にpostfixがSpamassassinを使うように設定する。postfixにはコンテンツフィルタを使う機能が搭載されているのでその機能をそのまま利用する。<br />
&nbsp; 最初にコンテンツフィルタスクリプトを作成し、その実行専用ユーザーを登録しておく。<br /><br />
・/usr/local/bin/spam-filter ファイル（スクリプトファイル）<br /><br />
<span style="color: rgb(128, 0, 0);">#!/bin/sh<br />
SENDMAIL=/usr/sbin/sendmail<br />
SPAMASSASSIN=/usr/bin/spamc<br /><br />
$SPAMASSASSIN | $SENDMAIL &quot;$@&quot;<br /><br />
exit $?</span><br /><br />
内容は至って簡単である。postfixから渡されたメールをSpamassassin本体であるspamcに渡し、パイプを使用してまた送信するだけのものだ。このスクリプトをそのままrootで実行するのは問題があるのでspamfilterという実行専用のシステムユーザーを登録しておく。<br /><br />
<span style="color: rgb(0, 0, 255);"># useradd -u 450 spamfilter</span><br /><br />
先に作成したスクリプトファイルの権限を変更しておく。<br /><br />
<span style="color: rgb(0, 0, 255);">#chmod 755 /usr/local/bin/spam-filter</span><br /><br />
次に/etc/postfix/master.cfファイルを編集してコンテンツフィルターを使う様に設定する。最初のsmtp設定末尾にオプションを追記する。<br /><br />
<span style="color: rgb(128, 0, 0);">-o content_filter=spamass:<br />
</span><br />
ファイルの末尾にプログラムを登録する。<br /><br />
<span style="color: rgb(128, 0, 0);">spamass&nbsp;&nbsp; unix&nbsp; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pipe<br />
&nbsp; user=spamfilter argv=/usr/local/bin/spam-filter -f $(sender) -- $(recipient)</span><br /><br />
&nbsp;ここまでで設定は完了だ。Spamassassinを起動し、postfixを再起動する。テスト用メールを送受信してみる。ヘッダにSpamcheckedの記述があればコンテンツフィルターを通過したことが解る。<br /><br />
動作確認が終わったらsa-updateコマンドで最新情報をダウンロードしておこう。あとは運用しながら誤認識してしまったメールをsa-learnコマンドで学習させたり、許可サイトをホワイトリストに登録して鍛えていけばいい。<br /><br />]]></content>
 <id>http://www2.lav-tec.co.jp/:1:21</id>
</entry><entry>
 <title type="html"><![CDATA[連載-- ホスティングサーバーの再構築 その9]]></title>
 <link rel="alternate" type="text/html" href="http://www2.lav-tec.co.jp/?itemid=20" />
 <author>
  <name>Nakamura</name>
 </author>
 <updated>2008-12-08T04:04:05Z</updated>
 <published>2008-12-08T13:04:05+09:00</published>
 <content type="html"><![CDATA[<b>◇メールサーバーの構築3 SMTP AUTHの実装</b><br /><br />
スパムメールがこれだけ氾濫してくると、送信者認証はメールサーバー構築の中で必須となってしまった感がある。それもセキュリティにより優れたSMTP AUTHを使用するのが一般的だ。TLSも実装してより安全性を高めたいところだが、最近のウェブブラウザーやメールクライアントはデフォルトで自己認証は弾いてしまう。認証機関の証明書を取得すればそれで済むことではあるが、弊社のようにホスティング自体を特定顧客に無償で提供している場合、認証機関への登録はコスト的に厳しいものがある。<br />
ということでTLSに関してはもう少し先に導入することとして、基本的な認証システムだけを実装することにした。<br /><br />
まずはsaslサーバーの設定に入っていこう。まずはメールサーバーの認証に使うようにsaslを設定する。/usr/lib/sasl2 の中のsmtpd.confを編集する。<br /><br />
<span style="color: rgb(128, 0, 0);">pwcheck_method: saslauthd<br />
mech_list: plain login</span><br /><br />
次にsaslが認証メカニズムとしてldapを使用するように設定しなければならないわけだが、参考にしようとした多くのサイトの記述が実際のsaslauthdファイルのファイルパスとは違っていることが多いので気をつけなければならない。ほとんどのサイトが/etc配下に置かれているような記述だったが、RedHat系の場合、実際は/etc/sysconfig配下に置かれている。<br />
&nbsp; saslauthdファイルを編集追記する。<br /><br />
・変更箇所<br />
<span style="color: rgb(128, 0, 0);">MECH=ldap</span><br />
・追加箇所（起動オプション）<br />
<span style="color: rgb(128, 0, 0);">FLAGS=&quot;-O /etc/saslauthd.conf -c&quot;</span><br /><br />
この起動オプションに指定した設定ファイルsaslauthd.confにldapへの接続情報を記述する。/etc にsaslauthd.confファイルを以下のように作成する。<br /><br />
<span style="color: rgb(128, 0, 0);">ldap_servers: ldap://localhost:389/<br />
ldap_auth_method: bind<br />
ldap_bind_dn: uid=master,ou=Mailsys,dc=lavtec,dc=jp<br />
ldap_bind_pw: パスワード<br />
ldap_search_base: ou=Mailsys,dc=lavtec,dc=jp</span><br /><br />
サービスを起動して接続テストをしてみる。<br /><br />
<span style="color: rgb(0, 0, 255);"># servcie saslauthd start<br />
# testsaslauthd -u test1 -p パスワード<br />
0: OK &quot;Success.&quot;<br />
#</span><br /><br />
のようになれば成功である。<br />
次にpostfixを設定する。main.cfを編集して以下の行を編集追加する。<br /><br />
・アクセスコントロールを追加変更<br />
<span style="color: rgb(128, 0, 0);">smtpd_sender_restrictions = reject_authenticated_sender_login_mismatch, permit<br />
smtpd_recipient_restrictions = permit_mynetworks<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; permit_sasl_authenticated<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reject_unauth_destination</span><br />
・SMTP AUTHの設定<br />
<span style="color: rgb(128, 0, 0);"># SMTP AUTH Configration<br />
smtpd_sasl_auth_enable = yes<br />
broken_sasl_auth_clients = yes<br />
smtpd_sender_login_maps = ldap:/etc/postfix/login-address.cfg</span><br /><br />
アクセスコントロールの最初の行は認証できない送信者を拒否する設定だ。permit_sasl_authenticated で受信者にも同様の設定を追加しておく。<br />
SMTP AUTHの設定では使用するログインマップをマップファイルで指定している。次にこのマップファイルを作成する必要があるわけだが、これはpostfixで作成したldap用の.cfファイルをコピーして一部書き換えるだけだ。<br /><br />
・login-address.cfgファイルの中身<br />
<span style="color: rgb(128, 0, 0);">server_host = 127.0.0.1<br />
server_port = 389<br />
timeout = 5<br />
search_base = ou=Mailsys,dc=lavtec,dc=jp<br />
query_filter = (mail=%s)<br />
result_attribute = uid<br />
result_format = %s<br />
scope = sub<br />
bind = yes<br />
bind_dn = uid=master,ou=Mailsys,dc=lavtec,dc=jp<br />
bind_pw = パスワード</span><br /><br />
postfixの設定をリロードしてテストしてみる。まず、クライアント側に認証設定をしないでアクセスしてみて拒否されるかを確認。拒否されたら認証設定を入れて再度送信してみる。送信できれば設定は完了だ。<br /><br />
次はベイジアンフィルターを使った最もポピュラーなコンテンツフィルターSpamAssassinを設定する。　続く<br /><br />]]></content>
 <id>http://www2.lav-tec.co.jp/:1:20</id>
</entry><entry>
 <title type="html"><![CDATA[連載-- ホスティングサーバーの再構築 その8]]></title>
 <link rel="alternate" type="text/html" href="http://www2.lav-tec.co.jp/?itemid=19" />
 <author>
  <name>Nakamura</name>
 </author>
 <updated>2008-12-03T06:27:49Z</updated>
 <published>2008-12-03T15:27:49+09:00</published>
 <content type="html"><![CDATA[<b>◇メールサーバーの構築2（POP3,IMAP）</b><br /><br />
dovecotはPOPとIMAPの両方をサポートするサーバーだ。設定が簡単なのも有り難い。<br />
LDAPと連携させるのも予め用意されている設定テンプレートが使用できるので至って楽である。<br />
&nbsp; まずは設定ファイルである /etc/dovecot.conf ファイルを編集する。設定する箇所は以下の通りである。<br /><br />
<span style="color: rgb(128, 0, 0);">#サポートするプロトコル<br />
protocols = pop3 imap<br />
#SSLをとりあえず無効化しておく<br />
ssl_disable = yes<br />
#無効化に伴い平分パスワードを許可しておく<br />
disable_plaintext_auth = no<br />
#メール保存形式とデフォルトの保存場所<br />
default_mail_env = maildir:/home/vMailsys/%d/Maildir<br />
#IMAPの設定（デフォルトのまま特に変更しない）<br />
protocol imap {<br />
&nbsp; #mail_executable = /usr/libexec/dovecot/imap<br />
&nbsp; #imap_max_line_length = 65536<br />
&nbsp; #mail_use_modules = no<br />
&nbsp; #mail_modules = /usr/lib/dovecot/imap<br />
&nbsp; #login_greeting_capability = no<br />
&nbsp; #imap_client_workarounds = outlook-idle<br />
}<br />
#POP3の設定（これもデフォルトのまま）<br />
protocol pop3 {<br />
&nbsp; #login_executable = /usr/libexec/dovecot/pop3-login<br />
&nbsp; #mail_executable = /usr/libexec/dovecot/pop3<br />
&nbsp; #pop3_no_flag_updates = no<br />
&nbsp; #pop3_enable_last = no<br />
&nbsp; pop3_uidl_format = %08Xu%08Xv<br />
&nbsp; #pop3_logout_format = top=%t/%T, retr=%r/%R, del=%d/%m, size=%s<br />
&nbsp; #mail_use_modules = no<br />
&nbsp; #mail_modules = /usr/lib/dovecot/pop3<br />
&nbsp; #pop3_client_workarounds = <br />
}<br />
#認証の設定<br />
auth default {<br />
&nbsp; mechanisms = plain<br />
&nbsp; passdb ldap {<br />
&nbsp;&nbsp;&nbsp; args = /etc/dovecot-ldap.conf<br />
&nbsp; }<br />
&nbsp; userdb static {<br />
&nbsp;&nbsp;&nbsp; args = uid=89 gid=89 home=/home/vMailsys/%d/%u<br />
&nbsp; }<br />
&nbsp; user = root<br />
}</span><br /><br />
ポイントとしては<br />
<span style="color: rgb(128, 0, 0);">ssl_disable = no &nbsp;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
がデフォルトなのでSSLをセットアップしていない場合には「yes」に変更しておくことと、同時に<br />
<span style="color: rgb(128, 0, 0);">disable_plaintext_auth = yes</span><br />
を「no」に変更しておく必要がある点だ。また、POP3のuidlはデフォルトで上記のようになっているはずだが、なっていなければ追記しておく。ここでは明示化するためにコメントアウトを消している。<br /><br />
認証の設定ではパスワードのデータベースをLDAPにするため、LDAPの設定ファイルであるdovecot-ldap.confへのパスを記述している。また、ユーザーデータベースとして保存先とその所有者であるpostfixのuid、gidを指定する。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
次にLDAPの設定ファイルを作成するわけだが、<br />
&nbsp; /user/share/doc/dovecot-1.0/exsample/<br />
にサンプルがあるので、これを<br />
&nbsp; /etc/<br />
にコピーして編集する。編集する箇所は、<br /><br />
<span style="color: rgb(128, 0, 0);">#LDAPサーバーのアドレス<br />
hosts = 127.0.0.1<br />
#ログインするユーザー<br />
dn = uid=master,ou=mailsys,dc=lavtec,dc=jp<br />
#パスワード<br />
dnpass = パスワード<br />
#ユーザーバインド<br />
auth_bind = no　<span style="color: rgb(51, 51, 51);">&larr;ユーザー単位でログインさせないのでno</span><br />
#検索ベース<br />
base = ou=mailsys,dc=lavtec,dc=jp<br />
#検索スコープ<br />
scope = subtree<br />
#パスワードチェックの内容<br />
pass_attrs = uid=user,userPassword=password<br />
#パスワードの検索フィルター<br />
pass_filter = (&amp;(objectClass=inetOrgPerson)(uid=%u))</span><br /><br />
以上で設定は終了する。dovecotを起動して先に作成してあるテストユーザーで受信してみる。<br /><br />
と、ここから<span style="color: rgb(255, 102, 0);">ハマッタ</span>・・・・。<img alt="" src="/nucleus/plugins/mitasnom/editor/images/smiley/msn/cry_smile.gif" /><br /><br />
送信テストで送ったはずのメールが受信できない。ログを確認しても送信、受信ともエラーは出力されていない。<br />
直接メールの保存ディレクトリを開いてみる。と、/home/vMailsysの下に<span style="color: rgb(51, 153, 102);">「domain1」</span>と<span style="color: rgb(51, 153, 102);">「test1」</span>のディレクトリが作られているではないか！<br /><br />
「test1」を開いてみるとdovecotの制御ファイルが作成されている。つまり上記の設定に記述した<br />
<span style="color: rgb(128, 0, 0);">default_mail_env = maildir:/home/vMailsys/%d/%u/Maildir</span><br />
もしくは<br />
<span style="color: rgb(128, 0, 0);">&nbsp; userdb static {<br />
&nbsp;&nbsp;&nbsp; args = uid=89 gid=89 home=/home/vMailsys/%d/%u<br />
&nbsp; }</span><br />
の記述が機能していないということになる。default_mail_envの中に記述した%dの指定が認識されていない可能性があるので、ここを<br />
<span style="color: rgb(128, 0, 0);">default_mail_env = ~/Maildir</span><br />
と書き換えてみる。しかし結果は同じだった。<br />
ここから七転八倒、2日間いろいろと設定を書き換えながら挑戦して最終的に行き着いたのが次の設定である。<br /><br />
<span style="color: rgb(128, 0, 0);">default_mail_env = ~/Maildir</span><br />
として、<br /><br />
<span style="color: rgb(128, 0, 0);">&nbsp; userdb ldap {<br />
&nbsp;&nbsp;&nbsp; args = /etc/dovecot-ldap.conf<br />
&nbsp; }</span><br /><br />
で、ユーザーのhomeもLDAPから取得するように変更。これに伴い、dovecot-ldap.confに<br /><br />
#保存先をフルパスで取得できるようにimapMailDir項目を追加<br />
<span style="color: rgb(128, 0, 0);">user_attrs = uid=user,imapMailDir=mail<br />
user_filter = (&amp;(objectClass=inetOrgPerson)(uid=%u))</span><br /><br />
このままだと検索したuidのままファイルを書き込みにいってaccess deniedエラーでMaildirにアクセスできないため、<br /><br />
<span style="color: rgb(128, 0, 0);">user_global_uid = 89<br />
user_global_gid = 89</span><br /><br />
を追加して、単一ユーザー操作に変更。<br />
LDAPデータベースのほうにも属性imapMailDirを追加してそこにフルパスを登録することで送受信とも正常に動作するようになりました。<br /><br />
なぜ最初の設定でうまくいかなかったのかは未だに不明。いくつかのサイトを参考にして書いてみたんですけどねー・・・。結局自分で解決するハメになりましたがおかげで設定ファイルの書き方とかかなり勉強になりました。<br /><br />
次はSMTP AUTHの実装に入っていきたいと思います。　続く<br /><br />]]></content>
 <id>http://www2.lav-tec.co.jp/:1:19</id>
</entry><entry>
 <title type="html"><![CDATA[連載-- ホスティングサーバーの再構築 その7]]></title>
 <link rel="alternate" type="text/html" href="http://www2.lav-tec.co.jp/?itemid=18" />
 <author>
  <name>Nakamura</name>
 </author>
 <updated>2008-12-02T04:50:35Z</updated>
 <published>2008-12-02T13:50:35+09:00</published>
 <content type="html"><![CDATA[<b>◇メールサーバーの構築（MTA）</b><br />
MTAとしては過去にsendmail、qmailを使ってきたが、ここ2年程はpostfixを使用している。弊社のMTAはpostfixをLDAPで運用しているがホスティング用のサーバーはHDEを使用していたということでqmailだった。<br />
&nbsp; このリニューアルでpostfixに統一するのだがLDAPで複数のバーチャルドメインを設定したことがないので、いい勉強になりそうだ。<br />
&nbsp; 初回の記事に書いているが、MTAとしてpostfix、POP3にdovecotを使用する。またスパム対策としてcyrus-saslでSMTP AUTHを、コンテンツフィルタとしてSpamassassinを使用する予定だ。<br /><br />
まずは必要なパッケージを再確認する。インストール段階で必要なパッケージはインストールしてあるわけだが、必要なサポートが入っているかを確認しなければならない。もし入っていなければソースからビルドし直す必要がでてくる。<br /><br />
・postfixのサポート検索テーブル形式の確認<br />
<span style="color: rgb(0, 0, 255);"># postconf -m</span><br />
<span style="color: rgb(0, 0, 255);">btree<br />
cidr<br />
environ<br />
hash<br />
ldap</span>&nbsp; <span style="color: rgb(255, 0, 0);">&larr;ldapが入っているので問題ない</span><br />
<span style="color: rgb(0, 0, 255);">nis<br />
pcre<br />
proxy<br />
regexp<br />
static<br />
unix<br />
</span><br />
・saslのサポート認証形式の確認<br />
<span style="color: rgb(0, 0, 255);"># saslauthd -v<br />
saslauthd 2.1.21<br />
authentication mechanisms: getpwent kerberos5 pam rimap shadow ldap</span><br /><br />
こちらもldapが入っているので問題ない。<br /><br />
Spamassassinだが、パッケージをインストールしてはいるがセキュリティに関わるソフトウエアなので頻繁にアップデートされている。パッケージは3.2.4だったが3.2.5がリリースされていたのでこちらをダウンロードした。また、日本語パッチもリリースされているのでそれもダウンロードしておく。<br />
&nbsp; Spamassassinはperlで書かれているため必要なモジュールも確認してCPANでインストールしておく。必要となるモジュールはディストリビューションやバージョンにより微妙に異なる為、Apamassassinのサイトで確認したほうがいいだろう。<br /><br />
さて、今回はLDAPを使用して構成するので先にLDAP用の設定ファイルを作成することにした。使用する設定ファイルは以下のようなものである。<br /><br />
<table cellspacing="1" cellpadding="1" border="1" style="width: 344px; height: 98px;">    <tbody>        <tr>            <td>ldap-account.cf</td>            <td>配送先（ディレクトリ指定）ファイル</td>        </tr>        <tr>            <td>ldap-forward.cf</td>            <td>転送設定ファイル</td>        </tr>        <tr>            <td>ldap-alias.cf</td>            <td>エリアス設定ファイル</td>        </tr>        <tr>            <td>ldap-group.cf</td>            <td>グループ配送設定ファイル</td>        </tr>    </tbody></table><br />
基本的には以上の4つがあればいいだろう。<br />
各設定ファイルの書き方だが例としてldap-account.cfを使って簡単に説明する。<br /><br />
例：ldap-account.cf<br />
<span style="color: rgb(128, 0, 0);">server_host = 127.0.0.1<br />
server_port = 389<br />
timeout = 5<br />
search_base = ou=mailsys,dc=lavtec,dc=jp<br />
query_filter = (mail=%s)<br />
result_attribute = mailDir<br />
result_format = %s/Maildir/<br />
scope = sub<br />
bind = yes<br />
bind_dn = uid=master,ou=mailsys,dc=lavtec,dc=jp<br />
bind_pw = パスワード（平文）</span><br /><br />
★各項目の説明<br />
・server_host<br />
LDAPサーバーのアドレス。<br /><br />
・server_port<br />
LDAPサービスのポート。<br /><br />
・timeout<br />
接続タイムアウト。<br /><br />
・search_base<br />
LDAPデータベースの検索ベースツリー。<br /><br />
・query_filter<br />
検索キー。LDAP検索ではいくつかの置き換え文字が使用できるが、ここでは入力キーそのままの「%S」を使用している。つまり、データベース項目「mail」が入力キーと一致するレコードを検索するという意味である。この他にもメールアドレスの＠前にあるユーザー部分だけを指定する「%u」、＠以降のドメイン部分だけを指定する「%d」なども使用可能だ。<br /><br />
・result_attribute<br />
検索結果から取得すべき項目の指定。ここではメールの保存先である「mailDir」を指定している。<br /><br />
・result_format<br />
検索結果を取得する際のフォーマット指定。<br /><br />
今回のサーバーは複数ドメインを取り扱うのだが、Maildir形式で保存する際に<br /><br />
/デフォルトメールディレクトリ/ドメイン名/ユーザー名/Maildir/<br /><br />
という階層で保存したい。この場合、LDAPデータベースの「mailDir」項目に<br /><br />
ドメイン名/ユーザー名<br /><br />
のように入力しておけばいいわけである。注意すべき点は「mailDir」項目の入力で先頭にスラッシュ「/」を入れないことである。postfixはvirtual_mailbox_baseで指定した保存先の最後に自動的にスラッシュを付加して認識する。この為スラッシュが2個続いてしまうと保存先を認識できなくなる。<br /><br />
・scope<br />
検索スコープの指定。サブツリーを指定する。<br /><br />
・bind、bind_dn、bind_pw<br />
バインドの指定。<br />
今回の構築では「master」アカウントのみを使ってLDAPデータベースを検索させる。バインドの指定をしなかった場合、ログインしてきた各ユーザー単位で検索するようになる。バインドを使用するメリットは複数の検索を同一セッションで処理できる点である。<br /><br />
どのファイルもこんな感じで書くわけだが、検索キーと取得する結果を書き換えるだけで他のファイルも完成する。<br /><br />
次にこのファイルに合わせてpostfixの設定ファイル「main.cf」を編集する。設定、加筆する内容は以下の通り。<br /><br />
<span style="color: rgb(128, 0, 0);">#ホストの設定<br />
myhostname = ホスト名（fqdn）<br />
#ドメインの設定<br />
mydomain = ドメイン名<br />
#接続を受け付けるインターフェイス<br />
inet_interfaces = IPアドレス<br />
#受信ドメインの設定（ローカルのみ）<br />
mydestination = $myhostname, localhost<br />
#ネットワークの設定<br />
mynetworks = ネットワークアドレス<br /><br />
#セキュリティー設定<br />
#リレーを許可するドメイン（ローカル配送に適用）<br />
relay_domains = $mydestination<br />
#アクセスを許可するクライアントの設定（ローカル配送用）<br />
smtpd_client_restrictions = check_client_access hash:/etc/postfix/access<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; check_client_access cidr:/etc/postfix/access.cidr<br />
#ローカルアカウントへのアクセスをローカルネットに限定する（mynetworksと連動）<br />
smtpd_recipient_restrictions = permit_mynetworks<br />
#セッション制限の設定<br />
smtpd_client_connection_count_limit = 10<br /><br />
#バーチャルドメイン設定<br />
#取り扱うバーチャルドメインの設定<br />
virtual_mailbox_domains = ドメイン１,ドメイン２,ドメイン３<br />
#バーチャルドメインのメール配送先親ディレクトリ<br />
virtual_mailbox_base = /home/vMailsys<br />
#実際の配送先ディレクトリ<br />
virtual_mailbox_maps = ldap:/etc/postfix/ldap-account.cf<br />
#バーチャル設定を利用するユーザーの最低ID番号<br />
virtual_minimum_uid = 89<br />
#バーチャルを使用するユーザーのuidとgid。ここではpostfixのuid、gidを使用する。<br />
virtual_uid_maps = static:89<br />
virtual_gid_maps = static:89<br />
#バーチャルエリアスの参照先設定<br />
virtual_alias_maps = ldap:/etc/postfix/ldpa-forward.cf<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ldap:/etc/postfix/ldap-alias.cf<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ldap:/etc/postfix/ldap-group.cf<br /><br />
#メール配送形式の設定（Maildir形式の指定）<br />
home_mailbox = Maildir/<br /><br />
#レートコントロール（スパム攻撃への対応同時接続制限）<br />
#単位時間（単位：秒）<br />
anvil_rate_time_unit = 60<br />
#単位時間内接続許可数<br />
smtpd_client_connection_rate_limit = 6<br />
#単位時間内送信許可数<br />
smtpd_client_message_rate_limit = 20<br />
#単位時間内宛先数<br />
smtpd_client_recipient_rate_limit = 20<br />
#制限を除外するホスト（自身のみ）<br />
smtpd_client_event_limit_exceptions = 127.0.0.1<br />
#ログの出力間隔（単位：秒）<br />
anvil_status_updata_time = 3600<br />
</span><br />
設定ファイルに問題ないかチェックしてみる。<br /><br />
<span style="color: rgb(0, 0, 255);"># /etc/init.d/postfix check</span><br /><br />
「OK」が返ってくれば基本的な設定は終了だ。NGだった場合はもう一度設定を見直してみる。ここでのチェックに通らないのはスペルミスなどのちょっとした原因が多い。<br /><br />
postfixのサービスを起動してみて事前に作っておいたテスト用アカウントで送信のテストをしてみる。postfixはMTAの機能しか持っていないのでこのままでは受信ができない。<br />
次回はPOP3、IMAPサーバーであるdovecotの設定である。　続く<br /><br />]]></content>
 <id>http://www2.lav-tec.co.jp/:1:18</id>
</entry><entry>
 <title type="html"><![CDATA[連載--ホスティングサーバーの再構築　その6]]></title>
 <link rel="alternate" type="text/html" href="http://www2.lav-tec.co.jp/?itemid=16" />
 <author>
  <name>Nakamura</name>
 </author>
 <updated>2008-11-23T04:13:41Z</updated>
 <published>2008-11-23T13:13:41+09:00</published>
 <content type="html"><![CDATA[<strong>◇phpldapadminのセットアップ</strong><br /><br />
さて、LDAPデータベースのGUIツールであるphpldapadminをセットアップするわけだが、その前にこのシステムで使用するデータについて整理しておこう。<br /><br />
・ユーザーアカウントデータ<br />
<table cellspacing="1" cellpadding="0" border="1" style="width: 277px; height: 165px;">    <tbody>        <tr>            <td>uid</td>            <td>&nbsp; アカウント名</td>        </tr>        <tr>            <td>mail</td>            <td>&nbsp; メールアドレス</td>        </tr>        <tr>            <td>&nbsp;mailForward</td>            <td>&nbsp;転送先アドレス</td>        </tr>        <tr>            <td>&nbsp;mailAlias</td>            <td>&nbsp;エリアス</td>        </tr>        <tr>            <td>&nbsp;domainName</td>            <td>&nbsp;所属ドメイン</td>        </tr>        <tr>            <td>&nbsp;mailDir</td>            <td>&nbsp;メール配送ディレクトリ</td>        </tr>        <tr>            <td>&nbsp;accountGroup</td>            <td>&nbsp;グループ配送名</td>        </tr>        <tr>            <td>&nbsp;accountActive</td>            <td>&nbsp;有効無効</td>        </tr>        <tr>            <td>&nbsp;userPassword</td>            <td>&nbsp;パスワード</td>        </tr>    </tbody></table>これにcn、snを追加した11項目がアカウントデータとなる。<br /><br />
各項目とメールシステムでの利用方法について一つづつ見ていこう。<br /><br />
1.uid<br />
これはキーとなる識別子であるユーザーのアカウント名。<br /><br />
2.mail<br />
uidに対するメールアドレス。通常MTAからの問い合わせでの検索キーとして使用する。<br /><br />
3.mailForward<br />
メール転送する場合の転送先アドレス。MTAは2.にマッチするレコードを見つけるとここをチェックし、ここにもレコードがあると3.のアドレスにメールを配送する。<br /><br />
4.mailAlias<br />
別名配送する場合の別名メールアドレス。ここに設定されたメールアドレスのメールは2.に配送される。<br />
たとえば問い合わせ用アドレスinfo@sample.comというアカウント実態のないメールを総務部のAさんに届くようにしたいというような場合に使用する。AさんのアカウントレコードのmailAliasにinfo@sample.comと記述しておけばinfo宛てのメールはAさんのメールアドレスに配送されるわけである。<br /><br />
5.domainName<br />
アカウントユーザーが所属するドメイン名。とりあえず設定しておくだけの項目ですぐには使わない。postfix側の検索方法指定次第だが、ドメインツリーをまたいだグループ配送などに使用することを想定している。<br /><br />
6.mailDir<br />
MTAに配送させる（サーバー上で保存する）ディレクトリ名。配送先としてpostfixからのクエリーに返す値となる。この値を元に予めpostfix側に設定しておくバーチャルメールボックス配下に個別のメールボックスを生成して保存する。今回はここに/ドメイン名/ユーザー名を設定してドメイン単位でフォルダを振り分けることを想定している。<br /><br />
7.accountGrop<br />
グループアカウントとして設定するグループ名を記述する。<br /><br />
8.accountActive<br />
アカウントの有効、無効をレコードの削除をしないで指定できるようにする。<br /><br />
9.userPassword<br />
ユーザーパスワードを設定しpop3の認証とSMTP Auth認証で使用する。<br /><br />
postfixでは配送先を検索する際、エリアス、メールアドレス、転送先の順に評価される。設定されている検索先テーブルにレコードがあった場合、それぞれのレコード属性にそった配送が実行される仕組みだ。<br /><br />
いよいよphpldapadminのセットアップだが、これはいたって簡単である。<br /><br />
1.任意のディレクトリにバイナリパッケージを解凍する。<br /><br />
2.ウェブでの公開ディレクトリにフォルダごと移動し、phpMyAdminの時を同じようにapacheの公開設定ファイルであるphpldap.confファイルを作成して/etc/httpd/conf.dディレクトリに配置する。<br /><br />
3.phpldapadmin配下のconfディレクトリにconfig.sample.phpファイルがあるのでこれをコピーしてconfig.phpとして設定を記述する。<br /><br />
設定ファイルの変更箇所は以下の3カ所だけでとりあえずは動く。<br /><br />
<span style="color: rgb(128, 0, 0);">$ldapservers-&gt;SetValue($i,'server','name','My LDAP Server');<br />
$ldapservers-&gt;SetValue($i,'server','host','127.0.0.1');<br />
$ldapservers-&gt;SetValue($i,'server','port','389');</span><br /><br />
ここの値を任意のアドレス、ポートに書き換えるのだが、ローカルホスト上で使用するのであれば何も変更しなくてもこのままで動く。設定項目はたくさんあり、表示の制御やログインのメカニズム、方法など細かく設定可能だが、これは後で設定すればいいだろう。<br /><br />
ここで注意点だがPHPがデフォルトでは16MBのメモリで動くように設定されているのだが、phpldapadminは16MBでは動作しない。php.iniを編集して32MB程度にあげておくといいだろう。また、httpでアクセスするとセキュリティー警告が表示される。サーバー自己証明書でもいいのでSSLで動作させよう。<br /><br />
apacheを再起動してhttp://localhost/phpldapadminにアクセスしてログイン画面が表示されればセットアップは終了である。<br /><br />
phpldapadminにはデータ登録用にいくつかのテンプレートが用意されているが、当然の如く今回追加したスキーマ項目が使えない。そこで、postfix専用のテンプレートを作成することにした。テンプレートはphpldapadminディレクトリ下のtemplateの中に入っている。この中にはサンプルが用意されていて、これを編集することでテンプレートを追加することが可能だ。実際に画面に表示されるテンプレートはcreationディレクトリにあるテンプレートとなる。<br />
&nbsp; <br />
&nbsp; 今回作成したテンプレートはリンクの「らぶてっくの書庫」から参照、ダウンロードも可能なので自由に使っていただいてかまわない。<br /><br />
&nbsp;Managerでログインして予め入力してあったレコードを確認してみると特に問題なさそうだ。<br />
設定した各ドメインにテスト用のユーザーを3件づつ登録しておく。<br />
ここで登録するデータには以下のような設定をしておく。<br />
・test1アカウント<br />
通常の送受信テスト用<br />
・test2アカウント<br />
転送テスト用として転送アドレスをtest1に設定する<br />
・test3アカウント<br />
エリアス配送テスト用としてエリアスにtest4@domain.netを登録しておく<br /><br />
LDAPの設定は一応終わった。次はメールサーバーのセットアップに入っていく。　続く<br /><br />]]></content>
 <id>http://www2.lav-tec.co.jp/:1:16</id>
</entry><entry>
 <title type="html"><![CDATA[連載-- ホスティングサーバーの再構築 その5]]></title>
 <link rel="alternate" type="text/html" href="http://www2.lav-tec.co.jp/?itemid=12" />
 <author>
  <name>Nakamura</name>
 </author>
 <updated>2008-11-20T03:05:34Z</updated>
 <published>2008-11-20T12:05:34+09:00</published>
 <content type="html"><![CDATA[<strong>◇LDAPサーバーの構築</strong><br />
&nbsp; 今回の再構築の中で一番の鬼門と考えているのがLDAPによるバーチャルドメイン、バーチャルアカウント管理とメールサーバーの連携部分だ。 過去に2回LDAPとメールサーバーの連携は構築しているが、複数ドメインを管理するとなるとLDAPのデータベース構成から考え直さなくてはいけない。<br /><br />
メールサーバーに実装したい機能として、<br />
&nbsp;1.複数のバーチャルドメインのユーザー管理を各ドメイン管理ユーザー自身が行えるような機能。 <br />
&nbsp;2.メール転送、別名配送の機能。<br />
&nbsp;3.メーリングリスト配送のサポート。<br />
&nbsp;4.SMTP AUTHの実装。<br />
&nbsp;5.スパムフィルターの実装。<br />
&nbsp;などがあり、このうち1～4まではLDAPとの連携が必要な部分になってくる。<br /><br />
参考になるサイトがないかといろいろと検索をしていると<a href="http://park15.wakwak.com/~unixlife/practical/postfix2-1.html">とてもいいサイト</a>を発見した。<br />
情報が2004年と古いためそのままでは動かないと思われる部分もあるが、構成などはそのまま使える。 また、過去2回の構築で不満に思っていたスキーマオブジェクトの不足もpostfix用のスキーマが用意されており非常に有り難かった。<br /><br />
データベースの構成ツリーは下図のようなもので、全体を管理するアカウント「master」と各個別ドメインを管理する「admin」を管理ユーザーとして登録した。この「master」アカウントはpostfixからの検索に使用するアカウントで、「admin」アカウントは後々各ホスティング先の管理者が独自でのドメインユーザー管理に使用する予定である。<br />
<img height="291" width="451" border="0" src="/media/1/20081119-tree.png" alt="" /><br />
まずはサーバーの設定ファイルである /etc/openldap/slapd.conf を編集する。編集して変更、追加した内容は以下のようなものである。<br /><br />
・使用するスキーマを追加するための記述。<br />
&nbsp;<span style="color: rgb(128, 0, 0);">include&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /etc/openldap/schema/misc.schema<br />
&nbsp;include&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /etc/openldap/schema/postfix.schema</span><br />
&nbsp;・アクセス制御の記述。<br />
&nbsp;<span style="color: rgb(128, 0, 0);">access to *<br />
</span>&nbsp;<span style="color: rgb(128, 0, 0);">&nbsp;&nbsp;&nbsp; by self read<br />
&nbsp;&nbsp;&nbsp;&nbsp; by dn=&quot;cn=Manager,dc=lavtec,dc=JP&quot; write</span><br />
&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(128, 0, 0);">by * none<br />
</span>&nbsp;<span style="color: rgb(128, 0, 0);">access to dn.subtree=&quot;ou=mailsys,dc=lavtec,dc=JP&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp; by self write &nbsp;&nbsp;&nbsp; by dn=&quot;cn=Manager,dc=lavtec,dc=JP&quot; write<br />
&nbsp;&nbsp;&nbsp;&nbsp; by dn=&quot;uid=admin,ou=mailsys,dc=lavtec,dc=JP&quot; write<br />
&nbsp;&nbsp;&nbsp;&nbsp; by dn=&quot;uid=master,ou=mailsys,dc=lavtec,dc=JP&quot; write<br />
&nbsp;&nbsp;&nbsp;&nbsp; by * read<br />
&nbsp;access to dn.subtree=&quot;ou=mailsys,dc=lavtec,dc=JP&quot; attrs=userPassword<br />
&nbsp;&nbsp;&nbsp;&nbsp; by self write<br />
&nbsp;&nbsp;&nbsp;&nbsp; by dn=&quot;cn=Manager,dc=lavtec,dc=JP&quot; write<br />
&nbsp;&nbsp;&nbsp;&nbsp; by dn=&quot;uid=admin,cn=sampledomain.net,ou=mailsys,dc=lavtec,dc=JP&quot; write<br />
&nbsp;&nbsp;&nbsp;&nbsp; by dn=&quot;uid=master,ou=mailsys,dc=lavtec,dc=JP&quot; write<br />
&nbsp;&nbsp;&nbsp;&nbsp; by anonymous auth<br />
&nbsp;&nbsp;&nbsp;&nbsp; by * none</span><br />
&nbsp;ここではスコープをsubtreeにしてmailsysy以下のディレクトリ操作を制御する。 管理ユーザーには書き込みを許可、それ以外は閲覧可能。パスワードは管理者と本人のみ変更可能とした。<br /><br />
・データベースに関する記述と管理者設定<br />
&nbsp;<span style="color: rgb(128, 0, 0);">suffix&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;dc=lavtec,dc=JP&quot;<br />
&nbsp;rootdn&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;cn=Manager,dc=lavtec,dc=JP&quot;<br />
&nbsp;rootpw&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {SSHA} パスワード<br />
</span>&nbsp;（rootpwはslappasswdコマンドで暗号化したものを転記する）<br /><br />
設定ファイルに間違いがないかコマンドでチェックする。<br /><br />
<span style="color: rgb(0, 0, 255);"># slaptest</span><br /><br />
これで問題ないようであればLDAPサーバーを起動できる。<br />
&nbsp;起動に成功してもこの状態では実体としてのディレクトリオブジェクトは存在していない。 詳細な登録はphpldapadminを使用して後から行うが、まずは基本的なオブジェクトを登録しておく必要があるので登録用データを作成する。<br /><br />
・初期データ登録用ldifファイル内容（init.ldif）<br />
&nbsp;<span style="color: rgb(128, 0, 0);">dn: dc=lavtec,dc=JP<br />
&nbsp;objectClass: dcObject<br />
&nbsp;objectClass: organization<br />
&nbsp;o: lavtec dc=lavtec<br /><br />
dn: cn=Manager,dc=lavtec,dc=JP<br />
&nbsp;objectClass: organizationalRole<br />
&nbsp;cn: Manager<br /><br />
dn: ou=mailsys,dc=lavtec,dc=JP<br />
&nbsp;objectClass: organizationalUnit<br />
&nbsp;ou: mailsys<br /><br />
dn: uid=master,ou=mailsys,dc=lavtec,dc=JP<br />
&nbsp;objectClass: masterAccount<br />
&nbsp;cn: master<br />
&nbsp;sn: master<br />
&nbsp;uid: master<br />
&nbsp;userPassword:パスワード<br />
&nbsp;accountGroup: master</span><br /><br />
さて、このファイルを登録用ツール（コマンド）であるldapaddを使って登録するわけだが、ここでハマった。 <br />
本来は、<br /><br />
<span style="color: rgb(0, 0, 255);"># ldapadd -x -D &quot;cn=Manager,dc=lav-ec,dc=JP&quot; -W -f init.ldif</span><br /><br />
で登録できるはずなのだが以下のようなメッセージが表示されて登録できない。<br /><br />
<span style="color: rgb(0, 0, 255);">ldapadd : No CN Specified</span><br /><br />
インターネットでこのメッセージを検索すると行末に余計なスペースが入っている場合に表示されることがあるというような情報があるだけだった。 ファイルをviで開いて確認したがスペースなどは入っていない。<br />
ウィンドウズの端末で編集したファイルをアップロードしてして使用しているが、文字コードを確認してもUTF-8で問題ないようだ。Gnomeのテキストエディタgeditで開いてもおかしなところはどこにもない。<br />
&nbsp;openldapはデフォルトでログを吐かないため、ログを書き出すように/etc/syslog.confを設定する。<br /><br />
<span style="color: rgb(128, 0, 0);"><span style="background-color: rgb(255, 255, 255);">local4.*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /var/log/ldaplog</span></span><br /><br />
をsyslog.confの行末に追加してldapサーバーを再起動すると/var/logディレクトリにldaplogが生成された。 もう一度ldapaddを実行して内容を見てみると読み込んだところが<br /><br />
<span style="color: rgb(0, 0, 255);">text=</span><br /><br />
という空白になっていることがわかった。つまりファイルのテキストを読めていないのである。<br />
と、簡単に書いてきたが、最初のldapaddコマンドからここまで5時間近く試行錯誤していたのだ。<br /><br />
こうなるとldifファイルになにかゴミがついているとしか考えられない。 <br />
viで新規にファイルを作成してgeditの内容をペーストしてみると行頭にbomのコードである&lt;FEFF&gt;がはいっているではないか・・・。<br /><br />
&nbsp;viはそのままでファイルを開くとbomの有無を自動判別するのか無視するのか全く表示されない。geditもまた保存時に出てくるダイアログではUTF-8としてしかロケールを表示しない。<br />
こんなことで5時間も悩んでいたと思うと情けなくなってきた。 <br /><br />
不要なコードを外してldapaddを実行すると今度はすんなり流し込むことができた。<br />
これでLDAPサーバーの基本的なセットアップは終了した。<br />
&nbsp;次は実データを投入するためのGUIであるphpldapadminのセットアップに移っていこう。　続く<br /><br />
<span style="color: rgb(255, 0, 255);">追記：ここまでに作成した設定ファイルなどはリンクの「らぶてっくの書庫」から詳細をみることができるので興味のある方はご覧ください。</span><br /><br />]]></content>
 <id>http://www2.lav-tec.co.jp/:1:12</id>
</entry><entry>
 <title type="html"><![CDATA[連載-- ホスティングサーバーの再構築 その4]]></title>
 <link rel="alternate" type="text/html" href="http://www2.lav-tec.co.jp/?itemid=11" />
 <author>
  <name>Nakamura</name>
 </author>
 <updated>2008-11-18T03:47:30Z</updated>
 <published>2008-11-18T12:47:30+09:00</published>
 <content type="html"><![CDATA[<p><b>◇データベース（DB）のセットアップと管理GUIのインストール設定</b><br />
今回使用するDBはMySQLである。オープンソースで最も普及しているRDBMSだ。勿論商用のDBエンジンであるオラクルなどと比べてしまえば機能的にはかなり限定されるわけだが、その分非常にシンプルで分かり易い。より高機能なRDBMSを求めるならPostgresSQLという選択肢もあるわけだが、単純にデータの入れ物として利用することを考えるとMySQLのほうが使いやすいだろう。<br />
ちなみに筆者が以前構築した官公庁向けのDBでは、要求仕様がかなり厳密に指定されており、その仕様を満たすにはPostgresSQLでなければならなかったこともあった。<br />
どちらのRDBMSも日々進化を遂げており、今や商用DBエンジンに勝るとも劣らない性能を搭載するようになってきていることは喜ばしいことである。<br /><br />
さて、今回使用するMySQLはOSパッケージに含まれているものをそのまま使用している。特別なオプションを使用する場合はソースからのコンパイルが必要だが、今回はデータの入れ物として基本的なことしかやらないのでそのまま使用する。<br /><br />
まずはMySQLのサービスを起動して管理者用のパスワードを設定する。<br /><br />
サービスの起動<br />
<span style="color: rgb(0, 0, 255);">#service mysqld start</span><br /><br />
管理者パスワードの設定<br />
<span style="color: rgb(0, 0, 255);">#mysqladmin -u root -p [パスワード]</span><br /><br />
この後、現在のパスワードの入力を求められる。コンパイルからインストールした場合はインストールの段階でパスワードを設定しているが、パッケージを使用しているのでパスワードは設定されていない。そのままエンターキーで確定する。<br />
次にログインしてDBを確認してみる。<br /><br />
<span style="color: rgb(0, 0, 255);">#mysql -u root -p<br />
#Enter passwod: パスワードを入力</span><br /><br />
<span style="color: rgb(0, 0, 255);">&gt;mysql</span><br /><br />
となればログインは成功である。次にデフォルトでインストールされる管理用DB「mysql」にアクセスしてテーブルを確認する。<br /><br />
<span style="color: rgb(0, 0, 255);">&gt;mysql use mysql<br />
Database changed<br />
&gt;mysql</span><br /><br />
これでDBが選択された。<br />
<span style="color: rgb(0, 0, 255);"><br />
&gt;mysql select * from user ;</span><br /><br />
アカウントの管理テーブルである「user」にクエリーしてみるとrootユーザーが登録されていることが確認できる。ここまででmySQLの動作確認は終了した。<br />
次に管理用GUIである「phpMyAdmin」をインストールする。「phpMyAdmin」はphpで書かれたウェブアプリで、MySQLの管理をGUIで行えるようにしたものだ。<br />
予めダウンロードしてあったパッケージを解凍する。<br /><br />
<span style="color: rgb(0, 0, 255);">#tar -zxvf phpMyAdmin-3.0.1.1-all-languages.tar.gz</span><br /><br />
このパッケージはファイル名にall-languqgeとあるように多国語に対応した国際化パッケージである。<br />
解凍されたフォルダは実際にウェブからアクセスする際のパス名となるので名前を変更しておく。名前はなんでもかまわない。とりあえず「mySqladm」としておく。<br /><br />
次にこれを動作させる場所を決めるわけだが、セキュリティ上通常のホームページの場所とは隔離しておきたい。今回はファイルシステムのトップレベル「/」に「manage」というフォルダを作成してその中で動かすこととする。<br /><br />
<span style="color: rgb(0, 0, 255);">#cd /<br />
#mkdir manage<br />
#mv /pass/to/mySqladm /manage/</span><br /><br />
このディレクトリにウェブからアクセスできるようにしなければならないわけだが、apacheの設定ファイルであるhttpd.confファイルに書き込んでしまうとファイルがどんどん大きくなって非常に読みづらくなってしまう。<br />
幸いApache2からは拡張設定を読み込む機能が使えるようになり、初期状態で使用できるようになっている。<br />
これはhttpd.confファイルのLoadModule～行の後にある<br /><br />
<span style="color: rgb(128, 0, 0);">include conf.d/*.conf</span><br /><br />
という行で定義されている。<br />
つまり.confという拡張子の設定ファイルをここに入れておけばApacheの起動時に読み込んでくれるわけだ。<br />
早速このディレクトリに移動して設定ファイルを作成してみる。ファイル名は「phpMyAdmin.conf」である。<br /><br />
・phpMyAdmin.confの内容<br /><br />
<span style="color: rgb(128, 0, 0);">#ディレクトリをウェブで動作させるためのディレクトリ設定<br />
Alias /mySqladm /manage/mySqladm<br />
#ディレクトリのディレクティブ<br />
&lt;Directory /manage/mySqladm/&gt;<br />
&nbsp;&nbsp; order deny,allow<br />
&nbsp;&nbsp; deny from all<br />
&nbsp;&nbsp; allow from all <br />
&lt;/Directory&gt;<br />
#主要プログラム部分へのアクセス制御設定<br />
&lt;Directory /manage/mySqladm/libraries&gt;<br />
&nbsp;&nbsp;&nbsp; Order Deny,Allow<br />
&nbsp;&nbsp;&nbsp; Deny from All<br />
&nbsp;&nbsp;&nbsp; Allow from None<br />
&lt;/Directory&gt;</span><br /><br />
これでApacheの設定は完了した。<br /><br />
次にphpMyAdminの設定ファイルを作成する。<br />
mySqladmフォルダに移動して中身をみると「config.sample.inc.php」というファイルが存在する。このファイルをベースに設定を書き込み「config.inc.php」という名前で保存し直せば設定ファイルができあがる。（この設定ファイルのサンプルはバージョンによってファイル名が異なるので注意）<br />
最低限設定しなければならないのはデータベース管理者のユーザー名とパスワードだけである。該当する行は、<br /><br />
<span style="color: rgb(128, 0, 0);">$cfg['Servers'][$i]['controluser'] = '';<br />
$cfg['Servers'][$i]['controlpass'] = '';</span><br /><br />
の2行で、ここのシングルクォーテーションの間にユーザー名とパスワードを書き込めば設定は完了する。<br /><br />
ウェブサーバーを再起動させて設定した管理ページにアクセスしてみるとログインページは表示されるが画面下のほうにエラーが表示された。今回認証方式にクッキー認証を使用しているが、その場合のクッキー暗号化キーワードが設定されていないというような内容である。<br />
再度config.inc.phpを開いてみると、<br />
<span style="color: rgb(128, 0, 0);"><br />
$cfg['blowfish_secret'] = '';</span><br /><br />
という行があり、クッキー認証には記述が必要という注意書きがあるではないか。<br />
適当な文字をキーワードに入力して再度ログイン画面を表示させると今度はエラーが表示されなかった。どうやらこれでセットアップは終わったようだ。<br /><br />
さて、ここまでで基本的な設定は終了したが、このままでは管理者ユーザーであるrootで簡単にログインできてしまう。これはセキュリティ上よろしくないので新たに管理ユーザーを作成し、config.inc.phpの設定もそちらに変更しておくこととする。<br /><br />
次回からはメールサーバーの構築に入っていくわけだが、バーチャルドメイン、バーチャルユーザーでの運用にはいろいろとテクニックが必要だ。<br />
すんなりと構築できるとは考えられない。<br />
構築過程の試行錯誤をレポートしていくことになるだろう。　続く</p><br />]]></content>
 <id>http://www2.lav-tec.co.jp/:1:11</id>
</entry>
</feed>
