<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Pictnotes</title>
	<atom:link href="http://www.pictnotes.jp/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.pictnotes.jp</link>
	<description>Linux Apache PHP PostgreSQL とかのメモ書き</description>
	<lastBuildDate>Tue, 06 Jul 2010 03:30:39 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>nas の追加用の手順</title>
		<link>http://www.pictnotes.jp/?p=261</link>
		<comments>http://www.pictnotes.jp/?p=261#comments</comments>
		<pubDate>Tue, 06 Jul 2010 03:28:44 +0000</pubDate>
		<dc:creator>kiyo</dc:creator>
				<category><![CDATA[Redhat ES(CentOS)]]></category>

		<guid isPermaLink="false">http://www.pictnotes.jp/?p=261</guid>
		<description><![CDATA[&#8212;-
NASのIPアドレス	192.168.1.100
export名		/nas01
&#8212;-
とする。
/etc/fstabに
&#8212;-ここから
192.168.1.100:/nas01    /nas/nas01   nfs     rw 0 0
&#8212;-ここまで
と記載。
#mkidir  /nas/nas01	←マウント先ディレクトリを作成。
# mount -a		←マウント
# df  			←確認
とコマンドを発行確認。
]]></description>
			<content:encoded><![CDATA[<p>&#8212;-<br />
NASのIPアドレス	192.168.1.100<br />
export名		/nas01<br />
&#8212;-<br />
とする。<br />
/etc/fstabに<br />
&#8212;-ここから<br />
192.168.1.100:/nas01    /nas/nas01   nfs     rw 0 0<br />
&#8212;-ここまで<br />
と記載。</p>
<p>#mkidir  /nas/nas01	←マウント先ディレクトリを作成。<br />
# mount -a		←マウント<br />
# df  			←確認<br />
とコマンドを発行確認。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pictnotes.jp/?feed=rss2&amp;p=261</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ssl の csr の内容を確認する</title>
		<link>http://www.pictnotes.jp/?p=259</link>
		<comments>http://www.pictnotes.jp/?p=259#comments</comments>
		<pubDate>Thu, 01 Jul 2010 01:18:08 +0000</pubDate>
		<dc:creator>kiyo</dc:creator>
				<category><![CDATA[未分類]]></category>

		<guid isPermaLink="false">http://www.pictnotes.jp/?p=259</guid>
		<description><![CDATA[秘密鍵の内容を確認
 openssl rsa -in example.key -text
csrの内容確認
openssl req -in example.csr -text
]]></description>
			<content:encoded><![CDATA[<p>秘密鍵の内容を確認</p>
<blockquote><p> openssl rsa -in example.key -text</p></blockquote>
<p>csrの内容確認</p>
<blockquote><p>openssl req -in example.csr -text</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.pictnotes.jp/?feed=rss2&amp;p=259</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ssh の接続が遅い場合</title>
		<link>http://www.pictnotes.jp/?p=255</link>
		<comments>http://www.pictnotes.jp/?p=255#comments</comments>
		<pubDate>Thu, 17 Jun 2010 08:12:39 +0000</pubDate>
		<dc:creator>kiyo</dc:creator>
				<category><![CDATA[Command]]></category>

		<guid isPermaLink="false">http://www.pictnotes.jp/?p=255</guid>
		<description><![CDATA[http://www.openssh.org/ja/faq.html
にかいてありました。
3.3 &#8211; ssh(1) が接続する、あるいはログインするのに時間がかかる。
ひじょうに長い遅延 (10秒以上) はふつうホストの名前解決によってひきおこされます:
    * glibc のいくつかのバージョン (とくに Red Hat Linux 6.1 に付いている glibc) では、ドメイン名から &#8220;IPv6 あるいは IPv4 の&#8221; アドレスを解決するのに時間がかかります。この問題は、ssh_config 設定ファイルで AddressFamily inet を加えることでとりあえず解決することができます。
    * クライアント側あるいはサーバ側の DNS の参照に問題がある場合もあります。クライアント側とサーバ側で nslookup コマンドを使って、お互いの名前と IP アドレスを検索してみてください。さらに、クライアントの IP 名検索で返された名前をサーバ側で検索します。 sshd_config 設定ファイルに UseDNS no を加えることでほとんどのサーバ側の DNS 検索を抑えることができます。 
ということで、/etc/ssh/sshd_config に

UseDNS no
AddressFamily inet

を追記して、sshdを再起動。それぞれ、コメントアウト行があったのでその下に
追記しました。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.openssh.org/ja/faq.html">http://www.openssh.org/ja/faq.html</a><br />
にかいてありました。</p>
<blockquote><p>3.3 &#8211; ssh(1) が接続する、あるいはログインするのに時間がかかる。<br />
ひじょうに長い遅延 (10秒以上) はふつうホストの名前解決によってひきおこされます:<br />
    * glibc のいくつかのバージョン (とくに Red Hat Linux 6.1 に付いている glibc) では、ドメイン名から &#8220;IPv6 あるいは IPv4 の&#8221; アドレスを解決するのに時間がかかります。この問題は、ssh_config 設定ファイルで AddressFamily inet を加えることでとりあえず解決することができます。<br />
    * クライアント側あるいはサーバ側の DNS の参照に問題がある場合もあります。クライアント側とサーバ側で nslookup コマンドを使って、お互いの名前と IP アドレスを検索してみてください。さらに、クライアントの IP 名検索で返された名前をサーバ側で検索します。 sshd_config 設定ファイルに UseDNS no を加えることでほとんどのサーバ側の DNS 検索を抑えることができます。 </p></blockquote>
<p>ということで、/etc/ssh/sshd_config に</p>
<blockquote><p>
UseDNS no<br />
AddressFamily inet
</p></blockquote>
<p>を追記して、sshdを再起動。それぞれ、コメントアウト行があったのでその下に<br />
追記しました。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pictnotes.jp/?feed=rss2&amp;p=255</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>rsync Missing trailing-&#8221; in remote-shell command. ってなるばあい</title>
		<link>http://www.pictnotes.jp/?p=252</link>
		<comments>http://www.pictnotes.jp/?p=252#comments</comments>
		<pubDate>Thu, 01 Apr 2010 10:34:02 +0000</pubDate>
		<dc:creator>kiyo</dc:creator>
				<category><![CDATA[Shell]]></category>

		<guid isPermaLink="false">http://www.pictnotes.jp/?p=252</guid>
		<description><![CDATA[shellとかで、rsync を利用していて。
Missing trailing-&#8221; in remote-shell command.
rsync error: syntax or usage error (code 1) at main.c(335) [sender=2.6.8]

と出る場合の対処法。
RSYNC_RSH=&#8221;/usr/bin/ssh -i /home/username/.ssh/backup.key&#8221;
export RSYNC_RSH
として、sshの部分を環境変数に入れてしまえばOK
上記をおこなうと、
RSYNC=&#8217;/usr/bin/rsync -avz &#8211;rsh=&#8221;ssh -i /home/username/.ssh/backup.key&#8221;&#8216;
と書いていたところが
RSYNC=&#8217;/usr/bin/rsync -avz&#8217;
でよくなる。
スクリプトの解釈で、ダブルコーテーションとかの部分で上手く処理できてないみたいです。
rsyncが。
]]></description>
			<content:encoded><![CDATA[<p>shellとかで、rsync を利用していて。</p>
<blockquote><p>Missing trailing-&#8221; in remote-shell command.<br />
rsync error: syntax or usage error (code 1) at main.c(335) [sender=2.6.8]
</p></blockquote>
<p>と出る場合の対処法。</p>
<blockquote><p>RSYNC_RSH=&#8221;/usr/bin/ssh -i /home/username/.ssh/backup.key&#8221;<br />
export RSYNC_RSH</p></blockquote>
<p>として、sshの部分を環境変数に入れてしまえばOK</p>
<p>上記をおこなうと、<br />
RSYNC=&#8217;/usr/bin/rsync -avz &#8211;rsh=&#8221;ssh -i /home/username/.ssh/backup.key&#8221;&#8216;<br />
と書いていたところが<br />
RSYNC=&#8217;/usr/bin/rsync -avz&#8217;<br />
でよくなる。</p>
<p>スクリプトの解釈で、ダブルコーテーションとかの部分で上手く処理できてないみたいです。<br />
rsyncが。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pictnotes.jp/?feed=rss2&amp;p=252</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iptables &#8211; IPv4 のパケットフィルタと NAT を管理するツール (INPUTサンプル)</title>
		<link>http://www.pictnotes.jp/?p=246</link>
		<comments>http://www.pictnotes.jp/?p=246#comments</comments>
		<pubDate>Tue, 16 Feb 2010 04:11:05 +0000</pubDate>
		<dc:creator>kiyo</dc:creator>
				<category><![CDATA[Command]]></category>
		<category><![CDATA[Os]]></category>
		<category><![CDATA[Redhat ES(CentOS)]]></category>

		<guid isPermaLink="false">http://www.pictnotes.jp/?p=246</guid>
		<description><![CDATA[細かく設定するには、シェルとかで管理すべきみたいなのですが、基本のINPUTの部分だけをおさえておきます。
そこまで自信がないので、深くは信じないでください。(他のとみくらべてね)
# コメント行
* table名(filter nat mangle)のどれか、基本的には、filterを利用
:  [:]
COMMIT は設定反映といった感じ

オプション
 -A で、追加。
 -p プロトコル　tcp,、udp、 icmp、 allが指定できる。
 -m(&#8211;match) -pで暗黙のうちに指定されるが、-mで指定してもOK.-pとセットで使う。
 &#8211;dport (-p tcp の場合のみ)送信先ポートまたはポート範囲の指定
 -i インターフェイス eth0 eth1 とか
 -s ipアドレス(送信元の指定)
 -j [ACCEPT&#124;DROP] 許可不許可　「-A INPUT -s  -j ACCEPT 」で、そのIPアドレスから接続許可
&#8220;-m state&#8221; を指定した場合の拡張オプション
 &#8211;state [NEW&#124;"INVALID" &#124;ESTABLISHED&#124;RELATED] 接続状態
 NEWは新規接続のパケット,&#8221;INVALID&#8221; は既存パケットと関係のないパケット,ESTABLISHEDは既存パケットと関係あるパケット,RELATEDは新規接続のパケットであるが、既存パケットに関係のあるパケットである。
 これにより、いちいち応答パケットを許可する設定をしなくても済みます。

設定サンプル
#table名を記載
*filter
#とりえあず、INPUTは制限、OUTPUT FORWARDは、全てを許可
:INPUT DROP
:FORWARD ACCEPT
:OUTPUT ACCEPT
#下記は、ICMP用
#ICMPは送信したデータが届かなかったとき、また障害があったときに利用されるプロトコルです。
#0 = エコー応答Echo Reply（エコー応答）（pingなど）
#8 = エコー要求（pingなど）
-A INPUT [...]]]></description>
			<content:encoded><![CDATA[<p>細かく設定するには、シェルとかで管理すべきみたいなのですが、基本のINPUTの部分だけをおさえておきます。<br />
そこまで自信がないので、深くは信じないでください。(他のとみくらべてね)</p>
<blockquote><p># コメント行<br />
* table名(filter nat mangle)のどれか、基本的には、filterを利用<br />
:<チェーン名> <チェーンポリシー> [<パケットカウンタ>:<バイトカウンタ>]<br />
COMMIT は設定反映といった感じ
</p></blockquote>
<p>オプション</p>
<blockquote><p> -A で、追加。<br />
 -p プロトコル　tcp,、udp、 icmp、 allが指定できる。<br />
 -m(&#8211;match) -pで暗黙のうちに指定されるが、-mで指定してもOK.-pとセットで使う。<br />
 &#8211;dport (-p tcp の場合のみ)送信先ポートまたはポート範囲の指定<br />
 -i インターフェイス eth0 eth1 とか<br />
 -s ipアドレス(送信元の指定)<br />
 -j [ACCEPT|DROP] 許可不許可　「-A INPUT -s <ipaddress> -j ACCEPT 」で、そのIPアドレスから接続許可</p>
<p>&#8220;-m state&#8221; を指定した場合の拡張オプション<br />
 &#8211;state [NEW|"INVALID" |ESTABLISHED|RELATED] 接続状態<br />
 NEWは新規接続のパケット,&#8221;INVALID&#8221; は既存パケットと関係のないパケット,ESTABLISHEDは既存パケットと関係あるパケット,RELATEDは新規接続のパケットであるが、既存パケットに関係のあるパケットである。<br />
 これにより、いちいち応答パケットを許可する設定をしなくても済みます。
</p></blockquote>
<p>設定サンプル</p>
<blockquote><p>#table名を記載<br />
*filter<br />
#とりえあず、INPUTは制限、OUTPUT FORWARDは、全てを許可<br />
:INPUT DROP<br />
:FORWARD ACCEPT<br />
:OUTPUT ACCEPT<br />
#下記は、ICMP用<br />
#ICMPは送信したデータが届かなかったとき、また障害があったときに利用されるプロトコルです。<br />
#0 = エコー応答Echo Reply（エコー応答）（pingなど）<br />
#8 = エコー要求（pingなど）<br />
-A INPUT -p icmp -m icmp &#8211;icmp-type 8 -j ACCEPT<br />
-A INPUT -p icmp -m icmp &#8211;icmp-type 0 -j ACCEPT<br />
# 接続済みは許可<br />
-A INPUT -m state &#8211;state RELATED,ESTABLISHED -j ACCEPT<br />
#接続許可IP<br />
#local<br />
-A INPUT -s 127.0.0.1 -j ACCEPT<br />
#メンテナンスのIPとか<br />
-A INPUT -s xxx.xxx.xxx.xxx -j ACCEPT<br />
#サービスベースでの接続　80番ポート<br />
-A INPUT -p tcp -m tcp &#8211;dport 80 -j ACCEPT<br />
# -mは指定しなくてもいける<br />
-A INPUT -p tcp &#8211;dport 443 -j ACCEPT<br />
# dnsはudpも指定<br />
-A INPUT -p tcp &#8211;dport 53 -j ACCEPT<br />
-A INPUT -p upd &#8211;dport 53 -j ACCEPT<br />
# ntp はupdで<br />
-A INPUT -p upd &#8211;dport 123 -j ACCEPT<br />
#反映<br />
COMMIT</p>
</blockquote>
<p>という事で、必要部分だけ綺麗に書くと</p>
<blockquote><p>*filter<br />
:INPUT DROP<br />
:FORWARD ACCEPT<br />
:OUTPUT ACCEPT<br />
-A INPUT -p icmp -m icmp &#8211;icmp-type 8 -j ACCEPT<br />
-A INPUT -p icmp -m icmp &#8211;icmp-type 0 -j ACCEPT<br />
-A INPUT -m state &#8211;state RELATED,ESTABLISHED -j ACCEPT<br />
-A INPUT -s 127.0.0.1 -j ACCEPT<br />
-A INPUT -s xxx.xxx.xxx.xxx -j ACCEPT<br />
-A INPUT -p tcp -m tcp &#8211;dport 80 -j ACCEPT<br />
-A INPUT -p tcp &#8211;dport 443 -j ACCEPT<br />
-A INPUT -p tcp &#8211;dport 53 -j ACCEPT<br />
-A INPUT -p upd &#8211;dport 53 -j ACCEPT<br />
-A INPUT -p upd &#8211;dport 123 -j ACCEPT<br />
COMMIT
</p></blockquote>
<p>-A INPUT -s xxx.xxx.xxx.xxx -j ACCEPT<br />
の部分は、もう少し制御して<br />
-A INPUT -p tcp &#8211;dport 22 -s xxx.xxx.xxx.xxx -j ACCEPT<br />
とサービスまで絞り込んだ方がよりいいです。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pictnotes.jp/?feed=rss2&amp;p=246</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>logrotateで日付付のログをバックアップする。</title>
		<link>http://www.pictnotes.jp/?p=244</link>
		<comments>http://www.pictnotes.jp/?p=244#comments</comments>
		<pubDate>Wed, 10 Feb 2010 04:36:49 +0000</pubDate>
		<dc:creator>kiyo</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Command]]></category>
		<category><![CDATA[Shell]]></category>

		<guid isPermaLink="false">http://www.pictnotes.jp/?p=244</guid>
		<description><![CDATA[過去に
「logrotate &#038; bash で日付付のログをバックアップする。」
っていうのをメモっているけど、別ファイルのbashをつくるのもめんどうなのでより簡単メモ

/var/log/httpd/*log {
    daily
    rotate 10
    create
    compress
    missingok
    notifempty
    sharedscripts
    postrotate
        /sbin/service httpd reload > /dev/null 2>/dev/null &#124;&#124; true
   [...]]]></description>
			<content:encoded><![CDATA[<p>過去に<br />
「logrotate &#038; bash で日付付のログをバックアップする。」<br />
っていうのをメモっているけど、別ファイルのbashをつくるのもめんどうなのでより簡単メモ</p>
<blockquote><p>
/var/log/httpd/*log {<br />
    daily<br />
    rotate 10<br />
    create<br />
    compress<br />
    missingok<br />
    notifempty<br />
    sharedscripts<br />
    postrotate<br />
        /sbin/service httpd reload > /dev/null 2>/dev/null || true<br />
        EXT=date +%Y%m%d -d &#8216;1 days ago&#8217;<br />
        for f in $1;<br />
            do mv $f.1.gz $f.$EXT.gz;<br />
        done<br />
    endscript<br />
}</p></blockquote>
<blockquote><p>        EXT=date +%Y%m%d -d &#8216;1 days ago&#8217;<br />
        for f in $1;<br />
            do mv $f.1.gz $f.$EXT.gz;<br />
        done
</p></blockquote>
<p>が追加分、corn では、通常4時2分に起動するので、基本的に前日の日付をつけておく。<br />
でもって、ローテートしたファイルをリネームしているだけ、<br />
これだと、本来、「rotate 10」のところは、１でもいいのだけど、念のための保険で10回<br />
にしているだけです。<br />
こっちの方が簡単だな。</p>
<p>追記:2010.02.23<br />
EXT=date +%Y%m%d -d &#8216;1 days ago&#8217;<br />
の部分をそのままコピペすると、WPが変換かけてるのでうごきません。<br />
「1 days ago」をシングルコーテーションで囲み直して、<br />
「date +%Y%m%d -d &#8216;1 days ago&#8217;」全体を実行演算子で囲んでください。</p>
<p>でもって、バージョンの違いかわからないけど、compress が　postrotate<br />
の後に行われる場合がある。こうなると日付のファイル名にリネーム<br />
できなくなる。(gzで圧縮した後のファイル名をリネームしようとしてるので)</p>
<p>という事で、さらに改訂。compressをlogrotateにまかせずに。</p>
<blockquote><p>/var/log/httpd/*/*log {<br />
    daily<br />
    rotate 10<br />
    create<br />
    missingok<br />
    notifempty<br />
    sharedscripts<br />
    postrotate<br />
        /sbin/service httpd reload > /dev/null 2>/dev/null || true<br />
        EXT=date +%Y%m%d -d &#8216;1 days ago&#8217;<br />
        for f in $1;<br />
        do<br />
        if [ -e $f.1 ] ; then<br />
            gzip $f.1;<br />
            mv $f.1.gz $f.$EXT.gz;<br />
        fi<br />
        done<br />
    endscript<br />
}</p></blockquote>
<p>といった形で、postrotateのなかでしてしまう。先に、killプロセス送っているので<br />
ログも新しいファイルに書き出されているので、圧縮中のログが消える心配も<br />
ないので、こちらの方がいいかも。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pictnotes.jp/?feed=rss2&amp;p=244</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CentOS5.3 にQmail vpopmail qmailadmin をインストール。</title>
		<link>http://www.pictnotes.jp/?p=202</link>
		<comments>http://www.pictnotes.jp/?p=202#comments</comments>
		<pubDate>Tue, 17 Nov 2009 06:43:27 +0000</pubDate>
		<dc:creator>kiyo</dc:creator>
				<category><![CDATA[Qmail]]></category>

		<guid isPermaLink="false">http://www.pictnotes.jp/?p=202</guid>
		<description><![CDATA[http://tech.hitsug.net/?CentOS%2Fqmail
http://centossrv.com/qmail.shtml
http://www.syns.net/2/2/index.html
http://centos.i-recording.net/vpopmail_install.html
等のサイトを参考にさせて頂きました。感謝。
インストールする前の注意点

使う機能によってパッチを当てる数が違ってきます。
qmailは、ユーザやグループに厳格です。気をつけましょう。
使用するポートを開放する事（ファイアウォール、ルータ等の設定）

25番ポート　SMTP　メール送信
110番ポート　POP3　メール受信
587番ポート　SMTP　OP25B対策（サブミッションポート）
465番ポート　SMTPS　メール送信 SSL対応
995番ポート　POP3S　メール受信 SSL対応



1.qmailインストール準備
1-1.qmailインストールに必要なユーザ、グループを作成する 。
グループを「qmail, nofiles」の2つのグループを作成
[root@localhost ~]# cd
[root@localhost ~]# groupadd qmail
[root@localhost ~]# groupadd nofiles
1-2.インストール先ディレクトリの作成
[root@localhost ~]# mkdir /var/qmail
[root@localhost ~]# chgrp nofiles /var/qmail
[root@localhost ~]# ls -alh /var/
省略
drwxr-xr-x  2 root nofiles 4.0K Nov 16 18:07 qmail
省略
1-3.必要ユーザーの作成
「alias, qmaild, qmaill, qmailp, qmailq, qmailr, qmails」の6つのユーザを作成
それぞれの用途は

alias -&#62; alias (エイリアス)
qmaild -&#62; qmail daemon(デーモン)
qmaill -&#62; qmail log (ログ関係用)
qmailp -&#62; qmail ????
qmailq -&#62; qmail queue [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://tech.hitsug.net/?CentOS%2Fqmail">http://tech.hitsug.net/?CentOS%2Fqmail</a><br />
<a href="http://centossrv.com/qmail.shtml">http://centossrv.com/qmail.shtml</a><br />
<a href="http://www.syns.net/2/2/index.html">http://www.syns.net/2/2/index.html</a><br />
<a href="http://centos.i-recording.net/vpopmail_install.html">http://centos.i-recording.net/vpopmail_install.html</a></p>
<p>等のサイトを参考にさせて頂きました。感謝。</p>
<p><strong>インストールする前の注意点</strong></p>
<ul>
<li>使う機能によってパッチを当てる数が違ってきます。</li>
<li>qmailは、ユーザやグループに厳格です。気をつけましょう。</li>
<li>使用するポートを開放する事（ファイアウォール、ルータ等の設定）
<ul>
<li>25番ポート　SMTP　メール送信</li>
<li>110番ポート　POP3　メール受信</li>
<li>587番ポート　SMTP　OP25B対策（サブミッションポート）</li>
<li>465番ポート　SMTPS　メール送信 SSL対応</li>
<li>995番ポート　POP3S　メール受信 SSL対応</li>
</ul>
</li>
</ul>
<h2>1.qmailインストール準備</h2>
<h3>1-1.qmailインストールに必要なユーザ、グループを作成する 。</h3>
<p>グループを「qmail, nofiles」の2つのグループを作成</p>
<blockquote><p>[root@localhost ~]# cd<br />
[root@localhost ~]# groupadd qmail<br />
[root@localhost ~]# groupadd nofiles</p></blockquote>
<h3>1-2.インストール先ディレクトリの作成</h3>
<blockquote><p>[root@localhost ~]# mkdir /var/qmail<br />
[root@localhost ~]# chgrp nofiles /var/qmail<br />
[root@localhost ~]# ls -alh /var/<br />
省略<br />
drwxr-xr-x  2 root nofiles 4.0K Nov 16 18:07 qmail<br />
省略</p></blockquote>
<h3>1-3.必要ユーザーの作成</h3>
<p>「alias, qmaild, qmaill, qmailp, qmailq, qmailr, qmails」の6つのユーザを作成<br />
それぞれの用途は</p>
<ul>
<li>alias -&gt; alias (エイリアス)</li>
<li>qmaild -&gt; qmail daemon(デーモン)</li>
<li>qmaill -&gt; qmail log (ログ関係用)</li>
<li>qmailp -&gt; qmail ????</li>
<li>qmailq -&gt; qmail queue (待ち行列)</li>
<li>qmailr -&gt; qmail respawn (自動再起動)</li>
<li>qmails -&gt; qmail send (送信)</li>
</ul>
<p>とおもう。。</p>
<p>ログインさせないので、それ用のshellがあるか確認</p>
<blockquote><p>[root@localhost src]# cat /etc/shells<br />
/bin/sh<br />
/bin/bash<br />
/sbin/nologin<br />
/bin/tcsh<br />
/bin/csh<br />
/bin/ksh</p></blockquote>
<p>とあるので、/sbin/nologin をつかいます。</p>
<blockquote><p>#group nofiles<br />
[root@localhost ~]# adduser -g nofiles -s /sbin/nologin -d /var/qmail/alias -M alias<br />
[root@localhost ~]# adduser -g nofiles -s /sbin/nologin -d /var/qmail -M qmaild<br />
[root@localhost ~]# adduser -g nofiles -s /sbin/nologin -d /var/qmail -M qmaill<br />
[root@localhost ~]# adduser -g nofiles -s /sbin/nologin -d /var/qmail -M qmailp<br />
#group qmail<br />
[root@localhost ~]# adduser -g qmail -s /sbin/nologin -d /var/qmail -M qmailq<br />
[root@localhost ~]# adduser -g qmail -s /sbin/nologin -d /var/qmail -M qmailr<br />
[root@localhost ~]# adduser -g qmail -s /sbin/nologin -d /var/qmail -M qmails</p></blockquote>
<p>-M オプションは、ユーザのホームディレクトリを作成しないです。つけないと、</p>
<blockquote><p>adduser: warning: the home directory already exists.<br />
Not copying any file from skel directory into it.</p></blockquote>
<p>と言われます。<br />
個人ユーザ用の設定ファイルがすでに存在しててあたらに作れなかったと言われているだけなので無視しても大丈夫ですが、.bashrcとかができるので削除しておいてください。</p>
<h2>2.qmailインストール</h2>
<p><span style="color: #ff0000;">※qmailや、patchの最新版のURLはそれぞれ確認すること。</span><br />
とりあえず、必要な物のダウンロード先</p>
<ul>
<li>qmail(1.03) / MTA / <a href="http://cr.yp.to/qmail.html" target="_blank">http://cr.yp.to/qmail.html</a></li>
<li>http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/<br />
<a href="http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/qmail-1.03.errno.patch" target="_blank">qmail-1.03.errno.patch / エラー対策パッチ</a></li>
<li><a href="http://www.itheart.com/phpgw/qmail-date-localtime.patch" target="_blank">qmail-date-localtime.patch</a> / 日本標準時間対応パッチ</li>
<li><a href="http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/qmail-1.03.qmail_local.patch" target="_blank">http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/</a> / 時刻の表示をローカルタイム(JST) にする。</li>
<li><a href="http://qmail.org/qmail-smtpd-relay-reject" target="_blank">qmail-smtpd-relay-reject</a> / 不正中継拒否対応パッチ / Mailアドレスのユーザ名部分に&#8221;@&#8221;、&#8221;!&#8221;、&#8221;%&#8221;が含まれているメールを拒否する。</li>
<li><a href="http://www.suspectclass.com/~sgifford/qmail/qmail-0.0.0.0.patch">qmail-0.0.0.0.patch</a> / IPアドレス0.0.0.0をローカルアドレスとする。</li>
<li><a href="http://qmail.org/qmailqueue-patch">qmailqueue-patch</a> / qmail-scanner導入時に必要である。</li>
<li><a href="http://members.elysium.pl/brush/qmail-smtpd-auth/dist/qmail-smtpd-auth-0.31.tar.gz">qmail-smtpd-auth</a> / SMTP-Auth対応パッチ</li>
<li><a href="http://tomclegg.net/qmail/qmail-remote-auth.patch">qmail-remote-auth.patch</a> / 外部SMTP-Auth対応パッチ</li>
</ul>
<h3>2-1.qmailのインストール</h3>
<p>作業ディレクトリは、 /usr/local/src</p>
<blockquote><p>[root@localhost ~]# cd /usr/local/src/</p></blockquote>
<p>Qmailディレクトリに移動</p>
<blockquote><p>[root@localhost src]# tar xvfz qmail-1.03.tar.gz<br />
qmail-1.03/<br />
略<br />
qmail-1.03/constmap.c<br />
[root@localhost src]# cd qmail-1.03</p></blockquote>
<p>patch類のダウンロード及び、適応。</p>
<blockquote><p>[root@localhost qmail-1.03]# wget http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/qmail-1.03.errno.patch<br />
[root@localhost qmail-1.03]# wget http://www.itheart.com/phpgw/qmail-date-localtime.patch<br />
[root@localhost qmail-1.03]# wget http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/qmail-1.03.qmail_local.patch<br />
[root@localhost qmail-1.03]# wget http://qmail.org/qmail-smtpd-relay-reject<br />
[root@localhost qmail-1.03]# wget http://www.suspectclass.com/~sgifford/qmail/qmail-0.0.0.0.patch<br />
[root@localhost qmail-1.03]# wget http://qmail.org/qmailqueue-patch<br />
[root@localhost qmail-1.03]# wget http://members.elysium.pl/brush/qmail-smtpd-auth/dist/qmail-smtpd-auth-0.31.tar.gz<br />
[root@localhost qmail-1.03]# wget http://tomclegg.net/qmail/qmail-remote-auth.patch<br />
[root@localhost qmail-1.03]# tar xvfz qmail-smtpd-auth-0.31.tar.gz<br />
qmail-smtpd-auth-0.31/<br />
qmail-smtpd-auth-0.31/auth.patch<br />
qmail-smtpd-auth-0.31/CHANGES<br />
qmail-smtpd-auth-0.31/base64.c<br />
qmail-smtpd-auth-0.31/base64.h<br />
qmail-smtpd-auth-0.31/README.auth<br />
[root@localhost qmail-1.03]# cp qmail-smtpd-auth-0.31/* ./<br />
[root@localhost qmail-1.03]# patch &lt; qmail-1.03.errno.patch<br />
patching file cdb_seek.c<br />
patching file dns.c<br />
patching file error.3<br />
patching file error.h<br />
[root@localhost qmail-1.03]# patch &lt; qmail-date-localtime.patch<br />
patching file date822fmt.c<br />
[root@localhost qmail-1.03]# patch &lt; qmail-1.03.qmail_local.patch<br />
patching file qmail-local.c<br />
[root@localhost qmail-1.03]# patch &lt; qmail-smtpd-relay-reject<br />
patching file qmail-smtpd.c<br />
[root@localhost qmail-1.03]# patch &lt; qmail-0.0.0.0.patch<br />
patching file ipme.c<br />
[root@localhost qmail-1.03]# patch &lt; qmailqueue-patch<br />
patching file Makefile<br />
patching file qmail.c<br />
[root@localhost qmail-1.03]# patch &lt; auth.patch<br />
patching file Makefile<br />
patching file TARGETS<br />
patching file qmail-smtpd.8<br />
patching file qmail-smtpd.c<br />
Hunk #2 succeeded at 63 (offset 1 line).<br />
Hunk #3 succeeded at 256 (offset 15 lines).<br />
Hunk #4 succeeded at 416 (offset 2 lines).<br />
Hunk #5 succeeded at 659 (offset 15 lines).<br />
[root@localhost qmail-1.03]# patch &lt; qmail-remote-auth.patch<br />
patching file qmail-remote.c<br />
patching file Makefile</p></blockquote>
<p>入れ込みます。</p>
<blockquote><p>[root@localhost qmail-1.03]# make<br />
[root@localhost qmail-1.03]# make setup<br />
./install<br />
[root@localhost qmail-1.03]# make check<br />
./instcheck</p></blockquote>
<p>インストール状況の確認</p>
<blockquote><p>[root@localhost qmail-1.03]# ls -al /var/qmail/<br />
total 44<br />
drwxr-xr-x 10 root   qmail 4096 Nov 16 19:10 .<br />
drwxr-xr-x 26 root   root  4096 Nov 16 18:07 ..<br />
drwxr-sr-x  2 alias  qmail 4096 Nov 16 19:10 alias<br />
drwxr-xr-x  2 root   qmail 4096 Nov 16 19:10 bin<br />
drwxr-xr-x  2 root   qmail 4096 Nov 16 19:10 boot<br />
drwxr-xr-x  2 root   qmail 4096 Nov 16 19:15 control<br />
drwxr-xr-x  2 root   qmail 4096 Nov 16 19:10 doc<br />
drwxr-xr-x 10 root   qmail 4096 Nov 16 19:10 man<br />
drwxr-x&#8212; 11 qmailq qmail 4096 Nov 16 19:10 queue<br />
drwxr-xr-x  2 root   qmail 4096 Nov 16 19:10 users</p></blockquote>
<p>control以下が空っぽなのを確認</p>
<blockquote><p>[root@localhost qmail-1.03]# ls -al /var/qmail/control/<br />
total 28<br />
drwxr-xr-x  2 root qmail 4096 Nov 16 19:15 .<br />
drwxr-xr-x 10 root qmail 4096 Nov 16 19:10 ..</p></blockquote>
<p>デフォルトのファイルをとりあえず作る。</p>
<blockquote><p>[root@localhost qmail-1.03]#  ./config-fast example.com &lt;-　自ホストFQDN<br />
Your fully qualified host name is localhost.ne.jp.<br />
Putting localhost.ne.jp into control/me&#8230;<br />
Putting ne.jp into control/defaultdomain&#8230;<br />
Putting ne.jp into control/plusdomain&#8230;<br />
Putting localhost.ne.jp into control/locals&#8230;<br />
Putting localhost.ne.jp into control/rcpthosts&#8230;<br />
Now qmail will refuse to accept SMTP messages except to localhost.ne.jp.<br />
Make sure to change rcpthosts if you add hosts to locals or virtualdomains!</p></blockquote>
<p>もう一度確認、ファイルができてます。</p>
<blockquote><p>[root@localhost qmail-1.03]# ls -al /var/qmail/control/<br />
total 28<br />
drwxr-xr-x  2 root qmail 4096 Nov 16 19:15 .<br />
drwxr-xr-x 10 root qmail 4096 Nov 16 19:10 ..<br />
-rw-r&#8211;r&#8211;  1 root root     6 Nov 16 19:15 defaultdomain<br />
-rw-r&#8211;r&#8211;  1 root root    10 Nov 16 19:15 locals<br />
-rw-r&#8211;r&#8211;  1 root root    10 Nov 16 19:15 me<br />
-rw-r&#8211;r&#8211;  1 root root     6 Nov 16 19:15 plusdomain<br />
-rw-r&#8211;r&#8211;  1 root root    10 Nov 16 19:15 rcpthosts</p></blockquote>
<p>FQDNを失敗した場合はこちらを修正すればOK<br />
コマンドの登録</p>
<blockquote><p>[root@localhost qmail-1.03]# cd<br />
[root@localhost ~]# vi .bash_profile<br />
export PATH=$PATH:/var/qmail/bin &lt;- これをかきこみます。<br />
[root@localhost ~]# source .bash_profile<br />
[root@localhost ~]# which qmail-local<br />
/var/qmail/bin/qmail-local</p></blockquote>
<h2>3.tcpserverインストール</h2>
<p>qmailへのSMTP接続制御を行うため、tcpserverが含まれたucspi-tcpをインストールする</p>
<ul>
<li><a href="http://cr.yp.to/ucspi-tcp/install.html">ucspi-tcp</a>/ tcpserver(ucspi-tcp-0.88.tar.gz) / サーバ制御ツール</li>
<li><a href="http://www.qmail.org/rpms/patches/ucspi-tcp-0.88.errno.patch">ucspi-tcp-0.88.errno.patch</a> / エラー対策パッチ</li>
<li><a href="http://www.nrg4u.com/">ucspi-tcp-ssl tcpserver SSL</a> /  TLS patch / <a href="http://www.nrg4u.com/qmail/ucspi-tcp-ssl-20050405.patch.gz">tcpserver SSL対応パッチ</a></li>
</ul>
<p>インストール作業</p>
<blockquote><p>[root@localhost ~]# cd /usr/local/src/<br />
[root@localhost src]# wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz<br />
[root@localhost src]# tar xvfz ucspi-tcp-0.88.tar.gz<br />
ucspi-tcp-0.88<br />
略<br />
ucspi-tcp-0.88/x86cpuid.c<br />
[root@localhost src]#cd ucspi-tcp-0.88<br />
[root@localhost ucspi-tcp-0.88]# wget http://www.qmail.org/rpms/patches/ucspi-tcp-0.88.errno.patch<br />
[root@localhost ucspi-tcp-0.88]# wget http://www.nrg4u.com/qmail/ucspi-tcp-ssl-20050405.patch.gz<br />
[root@localhost ucspi-tcp-0.88]# gunzip ucspi-tcp-ssl-20050405.patch.gz<br />
[root@localhost ucspi-tcp-0.88]# patch &lt; ucspi-tcp-ssl-20050405.patch<br />
patching file FILES<br />
patching file Makefile<br />
patching file TARGETS<br />
patching file addcr.1<br />
patching file argv0.1<br />
patching file date@.1<br />
patching file delcr.1<br />
patching file error.h<br />
patching file finger@.1<br />
patching file fixcrio.1<br />
patching file hier.c<br />
patching file http@.1<br />
patching file mconnect.1<br />
patching file recordio.1<br />
patching file tcp-environ.5<br />
patching file tcpcat.1<br />
patching file tcpclient.1<br />
patching file tcprules.1<br />
patching file tcprules.c<br />
patching file tcprulescheck.1<br />
patching file tcprulescheck.c<br />
patching file tcpserver.1<br />
patching file tcpserver.c<br />
patching file who@.1</p></blockquote>
<p>ucspi-tcp-ssl-20050405.patch をあてると、同時にucspi-tcp-0.88.errno.patch<br />
の内容も修正されるので、ucspi-tcp-0.88.errno.patch はあてる必要はありません。</p>
<p>sslは、rpm等で、openssl-devel等が入っているか確認してから入れて下さい。(入ってない場合は入れる事)</p>
<p>続きの作業</p>
<blockquote><p>[root@localhost ucspi-tcp-0.88]# make<br />
[root@localhost ucspi-tcp-0.88]# make setup<br />
./install<br />
[root@localhost ucspi-tcp-0.88]# make check<br />
./instcheck</p></blockquote>
<p>中継許可ホストに自ホストを登録</p>
<blockquote><p>[root@centos ~]# echo &#8216;127.:allow,RELAYCLIENT=&#8221;"&#8216; &gt;<br />
/etc/tcp.smtp</p></blockquote>
<p>/etc/tcp.smtpをcdb形式に変換</p>
<blockquote><p>[root@centos ~]# tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp &lt; /etc/tcp.smtp</p></blockquote>
<h2>4.fastforwardインストール</h2>
<p>sendmail用システム共通メール転送設定ファイル(/etc/aliases)をqmailで利用するのに必要なfastforwardをインストールする</p>
<ul>
<li><a href="http://cr.yp.to/software/fastforward-0.51.tar.gz" target="_blank">fastforward-0.51</a> / <a href="http://cr.yp.to/fastforward.html" target="_blank">サイト</a> / fastforward本体</li>
</ul>
<p>インストール作業</p>
<blockquote><p>[root@localhost ~]# cd /usr/local/src<br />
[root@localhost src]# wget http://cr.yp.to/software/fastforward-0.51.tar.gz<br />
[root@localhost src]# tar xvfz fastforward-0.51.tar.gz<br />
[root@localhost fastforward-0.51]# vi error.h<br />
extern int errno;<br />
↓<br />
#include　←　変更<br />
[root@localhost fastforward-0.51]# make<br />
[root@localhost fastforward-0.51]# make setup<br />
./compile install.c<br />
install.c: In function &#8216;main&#8217;:<br />
install.c:103: warning: return type of &#8216;main&#8217; is not &#8216;int&#8217;<br />
./compile hier.c<br />
./load install hier.o auto_qmail.o strerr.a substdio.a \<br />
error.a open.a str.a<br />
./install<br />
[root@localhost fastforward-0.51]# make check<br />
./compile instcheck.c<br />
instcheck.c: In function &#8216;main&#8217;:<br />
instcheck.c:80: warning: return type of &#8216;main&#8217; is not &#8216;int&#8217;<br />
./load instcheck hier.o auto_qmail.o strerr.a substdio.a \<br />
error.a str.a<br />
./instcheck</p></blockquote>
<h2>5.vpopmailのセットアップ</h2>
<p><span style="color: #ff0000;">※qmailや、patchの最新版のURLはそれぞれ確認すること。</span><br />
<a href="http://sourceforge.net/projects/vpopmail/files/vpopmail-stable/5.4.28/vpopmail-5.4.28.tar.gz/download" target="_blank">vpopmail-5.4.25</a> / <a href="http://sourceforge.net/projects/vpopmail/files/vpopmail-stable/" target="_blank">vpopmailサイト</a> / バーチャルドメインを実現させる。</p>
<blockquote><p>[root@localhost src]# cd /usr/local/src<br />
[root@localhost src]# wget http://sourceforge.net/projects/vpopmail/files/vpopmail-stable/5.4.28/vpopmail-5.4.28.tar.gz/download<br />
[root@localhost src]# tar xvfz vpopmail-5.4.28.tar.gz<br />
[root@localhost src]# cd vpopmail-5.4.28<br />
[root@localhost vpopmail-5.4.28]# groupadd vchkpw</p></blockquote>
<p>-&gt; 89にする必要はないよ。そういう説明は多いがfreebsdの場合、89にデフォルトで予約されてるみたいだからそこからきてるみたい。</p>
<blockquote><p>[root@localhost vpopmail-5.4.28]# useradd -g vchkpw -s /sbin/nologin  -d /var/qmail/vpopmail -M vpopmail<br />
[root@localhost vpopmail-5.4.28]# mkdir /var/qmail/vpopmail<br />
[root@localhost vpopmail-5.4.28]# chown vpopmail:vchkpw /var/qmail/vpopmail/<br />
[root@localhost vpopmail-5.4.28]# ls -al /var/qmail/<br />
drwxr-xr-x  2 vpopmail vchkpw 4096 Nov 16 21:52 vpopmail<br />
[root@localhost vpopmail-5.4.28]# ./configure &#8211;disable-clear-passwd  &#8211;enable-logging=y &#8211;enable-qmail-ext &#8211;enable-roaming-users</p></blockquote>
<p>configureがおわったら、最後に設定一覧がでてきます。</p>
<blockquote><p>vpopmail 5.4.28<br />
Current settings<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>vpopmail directory = /var/qmail/vpopmail<br />
domains directory = /var/qmail/vpopmail/domains<br />
uid = 508<br />
gid = 503<br />
roaming users = ON  &#8211;enable-roaming-users<br />
tcpserver file = /home/vpopmail/etc/tcp.smtp<br />
open_smtp file = /home/vpopmail/etc/open-smtp<br />
rebuild tcpserver file = ON  &#8211;enable-rebuild-tcpserver-file (default)<br />
password learning = OFF &#8211;disable-learn-passwords (default)<br />
md5 passwords = ON  &#8211;enable-md5-passwords (default)<br />
file locking = ON  &#8211;enable-file-locking (default)<br />
vdelivermail fsync = OFF &#8211;disable-file-sync (default)<br />
make seekable = ON  &#8211;enable-make-seekable (default)<br />
clear passwd = OFF &#8211;disable-clear-passwd<br />
user dir hashing  = ON  &#8211;enable-users-big-dir (default)<br />
address extensions = ON  &#8211;enable-qmail-ext<br />
ip alias = OFF &#8211;disable-ip-alias-domains (default)<br />
onchange script = OFF &#8211;disable-onchange-script (default)<br />
domain quotas = OFF &#8211;disable-domainquotas (default)<br />
auth module = cdb &#8211;enable-auth-module=cdb (default)<br />
auth inc = -Icdb<br />
auth lib =<br />
system passwords = OFF &#8211;disable-passwd (default)<br />
pop syslog = show successful and failed login attempts &#8211;enable-logging=y<br />
auth logging = ON  &#8211;enable-auth-logging (default)<br />
spamassassin = OFF &#8211;disable-spamassassin (default)<br />
maildrop = OFF &#8211;disable-maildrop (default)<br />
****************************************************</p>
<p>If you plan to use the vpopmail usage daemon<br />
run the following commands:</p>
<p>cd vusaged &amp;&amp; ./configure &amp;&amp; make</p>
<p>Then follow the INSTALL file to install</p>
<p>****************************************************</p></blockquote>
<p>vpopmail をdaemonとして扱う場合は上記処理(   cd vusaged &amp;&amp; ./configure &amp;&amp; make)をしましょう。</p>
<blockquote><p>[root@localhost vpopmail-5.4.28]# make<br />
省略<br />
gcc     -o vusagec  vusagec.o client.o conf.o ippp.o libvpopmail.a  -lcrypt<br />
make[2]: Leaving directory /usr/local/src/vpopmail-5.4.30&#8242;<br />
make[1]: Leaving directory /usr/local/src/vpopmail-5.4.30&#8242;<br />
[root@localhost vpopmail-5.4.28]# make install<br />
省略<br />
make[2]: Leaving directory /usr/local/src/vpopmail-5.4.30&#8242;<br />
make[1]: Leaving directory /usr/local/src/vpopmail-5.4.30&#8242;</p>
<p>****************************************************</p>
<p>     If you plan to use the vpopmail usage daemon<br />
     run the following commands:</p>
<p>   cd vusaged &#038;&#038; ./configure &#038;&#038; make</p>
<p>     Then follow the INSTALL file to install</p>
<p>****************************************************
</p></blockquote>
<h2>6.自動応答機能のセットアップ</h2>
<p><a href="http://www.inter7.com/devel/autorespond-2.0.5.tar.gz" target="_blank">autorespond-2.0.5</a> / <a href="http://www.inter7.com/" target="_blank">サイト</a> / 自動応答機能を実現するqmailアドオンツール<br />
software http://www.inter7.com/?page=software</p>
<blockquote><p>[root@localhost src]# cd /usr/local/src<br />
[root@localhost src]# wget http://www.inter7.com/devel/autorespond-2.0.5.tar.gz<br />
[root@localhost src]# tar xvfz autorespond-2.0.5.tar.gz<br />
[root@localhost src]# cd autorespond-2.0.5<br />
[root@localhost autorespond-2.0.5]# cat README<br />
[root@localhost autorespond-2.0.5]# make<br />
gcc -O2 -Wall -g  autorespond.c -o autorespond<br />
[root@localhost autorespond-2.0.5]# make install<br />
install -d /usr/bin /usr/share/man/man1<br />
install autorespond /usr/bin<br />
install autorespond.1 /usr/share/man/man1</p></blockquote>
<h2>7.qmailadminのセットアップ</h2>
<p><a href="http://sourceforge.net/projects/qmailadmin/files/qmailadmin-stable/1.2.13/qmailadmin-1.2.13.tar.gz" target="_blank">qmailadmin-1.2.1</a> / <a href="http://www.inter7.com/index.php?page=development" target="_blank">サイト</a> / <a href="http://sourceforge.net/projects/qmailadmin/" target="_blank">sourceforge</a> / qmailadmin  vpopmail用メールアカウント管理システム</p>
<blockquote><p>[root@localhost src]# cd /usr/local/src<br />
[root@localhost src]# wget http://sourceforge.net/projects/qmailadmin/files/qmailadmin-stable/1.2.13/qmailadmin-1.2.13.tar.gz/download</p></blockquote>
<p>qmailadminのインストール先(webからの閲覧用)フォルダを作成しておきます。<br />
下記は、/var/www/vhosts/qmailadmin.example.com/html をドキュメントルートとした http://qmailadmin.example.comからの閲覧先の例です。</p>
<blockquote><p>[root@localhost src]# mkdir qmailadmin.example.com<br />
[root@localhost src]# mkdir -p /var/www/vhosts/qmailadmin.example.com/html<br />
[root@localhost src]# tar xvfz qmailadmin-1.2.13.tar.gz<br />
[root@localhost src]# cd qmailadmin-1.2.13<br />
[root@localhost qmailadmin-1.2.13]# cat INSTALL<br />
[root@localhost qmailadmin-1.2.13]# ./configure \<br />
&#8211;enable-cgibindir=/var/www/vhosts/qmailadmin.example.com/cgi-bin \<br />
&#8211;enable-htmldir=/var/www/vhosts/qmailadmin.example.com/html \<br />
&#8211;enable-imageurl=/images \<br />
&#8211;enable-imagedir=/var/www/vhosts/qmailadmin.example.com/html/images \<br />
&#8211;enable-htmllibdir=/var/www/vhosts/qmailadmin.example.com/html \<br />
&#8211;enable-vpopmaildir=/var/qmail/vpopmail \<br />
&#8211;enable-vpopuser=vpopmail \<br />
&#8211;enable-autoresponder-bin=/usr/bin/autorespond \<br />
&#8211;disable-ezmlmdir \<br />
&#8211;disable-ezmlm-mysql \<br />
&#8211;enable-help \</p></blockquote>
<p>結果は下記の感じ</p>
<blockquote><p>qmailadmin 1.2.13<br />
Current settings<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
cgi-bin dir = /var/www/vhosts/qmailadmin.example.com/cgi-bin<br />
html dir = /var/www/vhosts/qmailadmin.example.com/html<br />
image dir = /var/www/vhosts/qmailadmin.example.com/html/images<br />
image URL = /images<br />
template dir = /var/www/vhosts/qmailadmin.example.com/html<br />
qmail dir = /var/qmail<br />
vpopmail dir = /var/qmail/vpopmail<br />
autorespond dir = /usr/bin<br />
ezmlm dir = no<br />
ezmlm idx = no<br />
mysql for ezmlm = no<br />
help = yes<br />
modify quota = no<br />
domain autofill = no<br />
catchall accounts = yes<br />
trivial passwords = yes<br />
modify spam check = no</p></blockquote>
<blockquote><p>[root@localhost qmailadmin-1.2.13]# make<br />
[root@localhost qmailadmin-1.2.13]# make install</p></blockquote>
<p>本体は、cgi-binというフォルダにインストールしないと、formタグのリンク先がおかしくなるので<br />
.htaccess で、ExecCGIとかで別けてない場合は注意が必要です。</p>
<h2>8.qmailadmin-helpのインストール</h2>
<p><a href="http://www.inter7.com/devel/qmailadmin-help-1.0.8.tar.gz">qmailadmin-help-1.0.8.tar.gz</a> / <a href="http://www.inter7.com/index.php?page=development">qmailadmin-help</a> / qmailadmin ヘルプ</p>
<blockquote><p>[root@localhost ~]# cd /usr/local/src<br />
[root@localhost src]# wget http://www.inter7.com/devel/qmailadmin-help-1.0.8.tar.gz<br />
[root@localhost src]# tar xvfz qmailadmin-help-1.0.8.tar.gz<br />
[root@localhost src]# cd qmailadmin-help-1.0.8<br />
[root@localhost qmailadmin-help-1.0.8]# cat INSTALL<br />
Quick Install:<br />
mkdir /var/www/html/images/qmailadmin/help<br />
cp -rp * /var/www/html/images/qmailadmin/help</p>
<p>note: ./configure option &#8211;enable-htmldir=/var/www/html</p>
<p>Longer Install:<br />
The files in this directory should be copied to<br />
where your qmailadmin image files live. Normally<br />
this is under &#8211;enable-htmldir /images/qmailadmin/help</p>
<p>Good Luck<br />
Ken Jones<br />
inter7.com<br />
[root@localhost qmailadmin-help-1.0.8]# mkdir /var/www/vhosts/qmailadmin.localhost.ne.jp/html/images/help<br />
[root@localhost qmailadmin-help-1.0.8]# cp -rp * /var/www/vhosts/qmailadmin.localhost.ne.jp/html/images/help</p></blockquote>
<h2>9.qmailの起動</h2>
<ul>
<li>sendmailの停止</li>
<li>/etc/init.d/qmail の作成</li>
<li>chkconfigへの登録</li>
<li>4.起動スクリプトのコピー　修正</li>
<li>起動テスト</li>
</ul>
<p>1.sendmailの停止</p>
<blockquote><p>
[root@localhost ~]# cd<br />
[root@localhost ~]# /etc/init.d/sendmail status<br />
sendmail (pid 5484 5475) を実行中&#8230;<br />
[root@localhost ~]# /etc/init.d/sendmail stop<br />
sm-client を停止中:                                        [  OK  ]<br />
sendmail を停止中:                                         [  OK  ]<br />
[root@localhost ~]# chkconfig &#8211;list | grep sendmail<br />
sendmail       	0:off	1:off	2:on	3:on	4:on	5:on	6:off<br />
[root@localhost ~]# chkconfig  sendmail off<br />
[root@localhost ~]# chkconfig &#8211;list | grep sendmail<br />
sendmail       	0:off	1:off	2:off	3:off	4:off	5:off	6:off
</p></blockquote>
<p>2./etc/init.d/qmail の作成</p>
<blockquote><p>
[root@localhost ~]#vi /etc/init.d/qmail<br />
サンプルです。<br />
&#8211;ここから<br />
#!/bin/bash<br />
#<br />
# qmail<br />
#<br />
# chkconfig: 2345 80 30<br />
# description: qmail start/stop script</p>
<p># Source function library.<br />
. /etc/rc.d/init.d/functions</p>
<p>PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin</p>
<p>[ -f /var/qmail/rc ] || exit 0</p>
<p>start() {<br />
    # Start daemons.<br />
    if [ -z $(/sbin/pidof qmail-send) ];  then<br />
        echo -n &#8220;Starting qmail&#8221;</p>
<p>        # qmail<br />
        csh -cf &#8216;/var/qmail/rc &#038;&#8217; 2>&#038;1 > /dev/null</p>
<p>        # SMTP(21)<br />
        tcpserver -qv -l0 -HR -u id -u qmaild -g id -g qmaild \<br />
        -x /var/qmail/vpopmail/etc/tcp.smtp.cdb 0 smtp \<br />
        fixcrio qmail-smtpd hostname /bin/true 2>&#038;1|\<br />
        splogger smtp &#038;</p>
<p>        # SMTP(587)<br />
        tcpserver -qv -l0 -HR -u id -u qmaild -g id -g qmaild \<br />
        -x /var/qmail/vpopmail/etc/tcp.smtp.cdb 0 587 \<br />
        fixcrio qmail-smtpd hostname /bin/true 2>&#038;1|\<br />
        splogger smtp &#038;</p>
<p>        # POP3<br />
        tcpserver -H -R -l $HOSTNAME -v 0 pop3 \<br />
        /var/qmail/bin/qmail-popup $HOSTNAME \<br />
        /var/qmail/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&#038;1 | /var/qmail/bin/splogger pop3 &#038;</p>
<p>        RETVAL=$?<br />
        echo<br />
        [ $RETVAL = 0 ] &#038;&#038; touch /var/lock/subsys/qmail<br />
        return $RETVAL<br />
    else<br />
        echo &#8220;qmail is already started&#8221;<br />
    fi<br />
}</p>
<p>stop() {<br />
    # Stop daemons.<br />
    if [ ! -z $(/sbin/pidof qmail-send) ];  then<br />
        echo -n &#8220;Shutting down qmail&#8221;<br />
        /bin/kill $(/sbin/pidof tcpserver)<br />
        /bin/kill $(/sbin/pidof qmail-send)<br />
        until [ -z $(/sbin/pidof qmail-send) ] &#038;&#038; [ -z $(/sbin/pidof tcpserver) ]; do :; done<br />
        echo<br />
        rm -f /var/lock/subsys/qmail<br />
    else<br />
        echo &#8220;qmail is not running&#8221;<br />
    fi<br />
}</p>
<p>case &#8220;$1&#8243; in<br />
  start)<br />
        start<br />
        ;;<br />
  stop)<br />
        stop<br />
        ;;<br />
  restart)<br />
        stop<br />
        start<br />
        ;;<br />
  status)<br />
        if [ ! -z $(/sbin/pidof qmail-send) ] ;  then<br />
            echo -n &#8220;qmail (pid&#8221;<br />
            echo -n &#8221; /sbin/pidof qmail-send&#8221;<br />
            echo -n &#8221; /sbin/pidof tcpserver&#8221;<br />
            echo &#8220;) is running&#8230;&#8221;<br />
        else<br />
            echo &#8220;qmail is stopped&#8221;<br />
        fi<br />
        ;;<br />
   *)<br />
        echo &#8220;Usage: qmail {start|stop|restart|status}&#8221;<br />
        exit 1<br />
esac</p>
<p>exit 0<br />
&#8211;ここまで<br />
[root@localhost init.d]# chmod 755 /etc/init.d/qmail
</p></blockquote>
<p>3.chkconfigへの登録</p>
<blockquote><p>
[root@localhost init.d]# chkconfig &#8211;add qmail<br />
[root@localhost init.d]# chkconfig &#8211;list | grep qmail<br />
qmail          	0:off	1:off	2:on	3:on	4:on	5:on	6:off
</p></blockquote>
<p>4.起動スクリプトのコピー　修正</p>
<blockquote><p>[root@localhost ~]# cp /var/qmail/boot/home /var/qmail/rc<br />
[root@localhost ~]# vi /var/qmail/rc<br />
#!/bin/sh</p>
<p># Using splogger to send the log through syslog.<br />
# Using qmail-local to deliver messages to ~/Mailbox by default.</p>
<p>exec env &#8211; PATH=&#8221;/var/qmail/bin:$PATH&#8221; \<br />
qmail-start ./Maildir splogger qmail &lt;- Mailbox を Maildir へ修正。
</p></blockquote>
<p>5.起動テスト</p>
<blockquote><p>[root@localhost ~]# /etc/init.d/qmail start<br />
Starting qmail<br />
[root@localhost ~]# /etc/init.d/qmail status<br />
qmail (pid 22413 22420 22417 22414) is running&#8230;<br />
[root@localhost ~]# ps ax | grep qmail<br />
22413 pts/2    S      0:00 qmail-send<br />
22414 pts/2    S      0:00 tcpserver -qv -l0 -HR -u 504 -g 504 -x /var/qmail/vpopmail/etc/tcp.smtp.cdb 0 smtp fixcrio qmail-smtpd www.example.com /bin/true<br />
22417 pts/2    S      0:00 tcpserver -qv -l0 -HR -u 504 -g 504 -x /var/qmail/vpopmail/etc/tcp.smtp.cdb 0 587 fixcrio qmail-smtpd www.example.com /bin/true<br />
22420 pts/2    S      0:00 tcpserver -H -R -l www.example.com -v 0 pop3 /var/qmail/bin/qmail-popup www.example.com /var/qmail/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir<br />
22421 pts/2    S      0:00 /var/qmail/bin/splogger pop3<br />
22425 pts/2    S      0:00 splogger qmail<br />
22427 pts/2    S      0:00 qmail-lspawn ./Maildir<br />
22428 pts/2    S      0:00 qmail-rspawn<br />
22429 pts/2    S      0:00 qmail-clean<br />
22438 pts/2    S+     0:00 grep qmail</p></blockquote>
<p>6.pop befor smptを利用している場合は下記cronの設置</p>
<blockquote><p>
*/15 * * * * root /var/qmail/vpopmail/bin/clearopensmtp 2>&#038;1 > /dev/null
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.pictnotes.jp/?feed=rss2&amp;p=202</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mac に GO言語(golang)をインストールしてみる。</title>
		<link>http://www.pictnotes.jp/?p=195</link>
		<comments>http://www.pictnotes.jp/?p=195#comments</comments>
		<pubDate>Wed, 11 Nov 2009 11:10:05 +0000</pubDate>
		<dc:creator>kiyo</dc:creator>
				<category><![CDATA[Mac]]></category>

		<guid isPermaLink="false">http://www.pictnotes.jp/?p=195</guid>
		<description><![CDATA[Googleが新しい言語(go言語)を開発したって事なので、せっかくなので
インストールしてみます。
http://golang.org/doc/install.html
に、インストールマニュアルがありますが、今回は
Mac OS 10.6.2 (Snow Leopard)へのインストール記録
0.下準備
今回は、一ユーザの権限でインストールします。
下準備

Xcode をインストールしている。（OSのインストールディスクからインストールできます)
macportsが入っている。
基本のディレクトリは、/Users/kiyo(おのおののユーザ名で置き換えてください)とする。

ターミナルの作業が基本です。
goのインストールフォルダは、/Users/kiyo/go とします。

1.Environment variables 環境変数を設定する。
ターミナルを立ち上げて、
KiyoMac:~ kiyo$ cd
KiyoMac:~ kiyo$ vi .bash_profile 
下記の行を追加
export GOROOT=$HOME/go
export GOOS=darwin
export GOARCH=amd64
export GOBIN=$GOROOT/bin
export PATH=$GOBIN:$PATH
※10.5.x(Leopard)の場合は、32bitかもしれないので。
export GOARCH=386
でないといけないとおもいます。(未検証)
反映
KiyoMac:~ kiyo$ source .bash_profile
確認
KiyoMac:~ kiyo$ env &#124; grep &#8216;^GO&#8217;
GOBIN=/Users/kiyo/go/bin
GOARCH=amd64
GOROOT=/Users/kiyo/go
GOOS=darwin

パスに設定されてるかも確認
KiyoMac:~ kiyo$ env &#124; grep &#8216;^PATH&#8217;
PATH=/Users/kiyo/go/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin
/Users/kiyo/go/bin があればOK
2.Ports
GO言語は、LinuxとMac OS X で、それぞれ、amd64(64bit) 386(32bit) arm に対応してるよってことなので、無視。
3.Fetch the repository　レポジトリの作成まぁ、インストールフォルダの作成。
まず、hg のコマンドがあるか確認します。
KiyoMac:~ kiyo$ which hg
/usr/local/bin/hg
で、コマンドが出てこない場合は、
KiyoMac:~ kiyo$ sudo easy_install mercurial
Password:
Searching for mercurial
Reading http://pypi.python.org/simple/mercurial/
Reading http://www.selenic.com/mercurial
Best [...]]]></description>
			<content:encoded><![CDATA[<p>Googleが新しい言語(go言語)を開発したって事なので、せっかくなので<br />
インストールしてみます。</p>
<p><a href="http://golang.org/doc/install.html" target="_blank">http://golang.org/doc/install.html</a></p>
<p>に、インストールマニュアルがありますが、今回は<br />
Mac OS 10.6.2 (Snow Leopard)へのインストール記録</p>
<p><strong>0.下準備</strong><br />
今回は、一ユーザの権限でインストールします。<br />
下準備</p>
<ul>
<li>Xcode をインストールしている。（OSのインストールディスクからインストールできます)</li>
<li><a href="http://www.google.co.jp/search?q=macports&#038;lr=lang_ja&#038;ie=utf-8&#038;oe=utf-8&#038;aq=t&#038;rls=org.mozilla:ja-JP-mac:official&#038;client=firefox-a" target="_blank">macports</a>が入っている。</li>
<li>基本のディレクトリは、/Users/kiyo(おのおののユーザ名で置き換えてください)とする。
</li>
<li>ターミナルの作業が基本です。</li>
<li>goのインストールフォルダは、/Users/kiyo/go とします。</li>
</ul>
<p><strong>1.Environment variables 環境変数を設定する。</strong><br />
ターミナルを立ち上げて、</p>
<blockquote><p>KiyoMac:~ kiyo$ cd<br />
KiyoMac:~ kiyo$ vi .bash_profile </p></blockquote>
<p>下記の行を追加</p>
<blockquote><p>export GOROOT=$HOME/go<br />
export GOOS=darwin<br />
export GOARCH=amd64<br />
export GOBIN=$GOROOT/bin<br />
export PATH=$GOBIN:$PATH</p></blockquote>
<p>※10.5.x(Leopard)の場合は、32bitかもしれないので。</p>
<blockquote><p>export GOARCH=386</p></blockquote>
<p>でないといけないとおもいます。(未検証)<br />
反映</p>
<blockquote><p>KiyoMac:~ kiyo$ source .bash_profile</p></blockquote>
<p>確認</p>
<blockquote><p>KiyoMac:~ kiyo$ env | grep &#8216;^GO&#8217;<br />
GOBIN=/Users/kiyo/go/bin<br />
GOARCH=amd64<br />
GOROOT=/Users/kiyo/go<br />
GOOS=darwin
</p></blockquote>
<p>パスに設定されてるかも確認</p>
<blockquote><p>KiyoMac:~ kiyo$ env | grep &#8216;^PATH&#8217;<br />
PATH=/Users/kiyo/go/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin</p></blockquote>
<p>/Users/kiyo/go/bin があればOK</p>
<p><strong>2.Ports</strong><br />
GO言語は、LinuxとMac OS X で、それぞれ、amd64(64bit) 386(32bit) arm に対応してるよってことなので、無視。</p>
<p><strong>3.Fetch the repository　レポジトリの作成まぁ、インストールフォルダの作成。</strong><br />
まず、hg のコマンドがあるか確認します。</p>
<blockquote><p>KiyoMac:~ kiyo$ which hg<br />
/usr/local/bin/hg</p></blockquote>
<p>で、コマンドが出てこない場合は、</p>
<blockquote><p>KiyoMac:~ kiyo$ sudo easy_install mercurial<br />
Password:<br />
Searching for mercurial<br />
Reading http://pypi.python.org/simple/mercurial/<br />
Reading http://www.selenic.com/mercurial<br />
Best match: mercurial 1.3.1<br />
Downloading http://mercurial.selenic.com/release/mercurial-1.3.1.tar.gz<br />
Processing mercurial-1.3.1.tar.gz<br />
Running mercurial-1.3.1/setup.py -q bdist_egg &#8211;dist-dir /tmp/easy_install-Ui4ZEE/mercurial-1.3.1/egg-dist-tmp-SbX7Oy<br />
zip_safe flag not set; analyzing archive contents&#8230;<br />
mercurial.extensions: module references __file__<br />
mercurial.i18n: module references __file__<br />
mercurial.lsprof: module references __file__<br />
mercurial.templater: module references __file__<br />
Adding mercurial 1.3.1 to easy-install.pth file<br />
Installing hg script to /usr/local/bin</p>
<p>Installed /Library/Python/2.6/site-packages/mercurial-1.3.1-py2.6-macosx-10.6-universal.egg<br />
Processing dependencies for mercurial<br />
Finished processing dependencies for mercurial
</p></blockquote>
<p>でいれこみます。入る物は、<br />
<a href="http://mercurial.selenic.com/wiki/Download" target="_blank">http://mercurial.selenic.com/wiki/Download</a><br />
です。<br />
フォルダがなければ</p>
<blockquote><p>KiyoMac:~ kiyo$ mkdir ./go</p></blockquote>
<p>で作成。<br />
ソース等の入れ込み</p>
<blockquote><p>KiyoMac:~ kiyo$ hg clone -r release https://go.googlecode.com/hg/ $GOROOT<br />
requesting all changes<br />
adding changesets<br />
adding manifests<br />
adding file changes<br />
added 3976 changesets with 16799 changes to 2931 files<br />
updating working directory<br />
1640 files updated, 0 files merged, 0 files removed, 0 files unresolved
</p></blockquote>
<p><strong>4.Install Go　インストール</strong><br />
じゃあインストールしてみましょう。ここでOS Xに、Xcodeが入ってないと、gccとかがないので<br />
コンパイルできずに怒られるので、先にXcodeを入れておいてください。</p>
<blockquote><p>KiyoMac:~ kiyo$ cd go/src/<br />
KiyoMac:src kiyo$ ./all.bash<br />
色々出てきて。<br />
&#8212; cd ../test<br />
0 known bugs; 0 unexpected bugs
</p></blockquote>
<p>終了</p>
<p><strong>5.Writing programs プログラムを書こう</strong><br />
じゃあ、プログラムを動かしてみましょう。<br />
Mac OS X 10.6 は、6g 6l のコマンドを利用します。OS X 10.5(32bit)なら、8g 8l みたいです。(未確定)</p>
<blockquote><p>KiyoMac:~ kiyo$ cd<br />
KiyoMac:~ kiyo$ cat hello.go<br />
package main</p>
<p>import &#8220;fmt&#8221;</p>
<p>func main() {<br />
fmt.Printf(&#8221;hello, world\n&#8221;)<br />
}<br />
KiyoMac:~ kiyo$ 6g hello.go<br />
KiyoMac:~ kiyo$ 6l hello.6<br />
KiyoMac:~ kiyo$ ./6.out<br />
hello, world
</p></blockquote>
<p>と出力されればインストール完了です。</p>
<p>さて、問題はこれでなにをするかだ・・・。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pictnotes.jp/?feed=rss2&amp;p=195</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>postgreSQLでnow()とかの時間がずれている場合</title>
		<link>http://www.pictnotes.jp/?p=192</link>
		<comments>http://www.pictnotes.jp/?p=192#comments</comments>
		<pubDate>Mon, 09 Nov 2009 02:54:40 +0000</pubDate>
		<dc:creator>kiyo</dc:creator>
				<category><![CDATA[PostgreSQL]]></category>

		<guid isPermaLink="false">http://www.pictnotes.jp/?p=192</guid>
		<description><![CDATA[amazonのEC2とかで運用すると、たぶん
#select now();
がずれると思います。チェックするところは２つ。
1.サーバの時間自体の確認(ntpdate),こちらがきちんと日本時間になっているか確認する。
2.環境変数の確認 (PGTZ の設定を確認する。)
通常、
#printenv
とかでみてみても、上記環境変数は設定されてないと思います。
.bash_profileとかに
export PGTZ=&#8217;JST-9&#8242;
を書き込んで
#source ./.bash_profile
で反映、
postmaserを再起動。
で、すると日本時間で反映されていると思います。
]]></description>
			<content:encoded><![CDATA[<p>amazonのEC2とかで運用すると、たぶん</p>
<blockquote><p>#select now();</p></blockquote>
<p>がずれると思います。チェックするところは２つ。</p>
<p>1.サーバの時間自体の確認(ntpdate),こちらがきちんと日本時間になっているか確認する。<br />
2.環境変数の確認 (PGTZ の設定を確認する。)<br />
通常、</p>
<blockquote><p>#printenv</p></blockquote>
<p>とかでみてみても、上記環境変数は設定されてないと思います。<br />
.bash_profileとかに</p>
<blockquote><p>export PGTZ=&#8217;JST-9&#8242;</p></blockquote>
<p>を書き込んで</p>
<blockquote><p>#source ./.bash_profile</p></blockquote>
<p>で反映、<br />
postmaserを再起動。<br />
で、すると日本時間で反映されていると思います。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pictnotes.jp/?feed=rss2&amp;p=192</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mod_rewrite を使った、.htaccessでの携帯サイトの振り分け方法</title>
		<link>http://www.pictnotes.jp/?p=189</link>
		<comments>http://www.pictnotes.jp/?p=189#comments</comments>
		<pubDate>Fri, 06 Nov 2009 06:33:51 +0000</pubDate>
		<dc:creator>kiyo</dc:creator>
				<category><![CDATA[未分類]]></category>

		<guid isPermaLink="false">http://www.pictnotes.jp/?p=189</guid>
		<description><![CDATA[mod_rewrite をいつも手こずるのでメモ。
携帯サイトとPCサイトの振り分けとか、
携帯サイトは、/m/ フォルダにあるとする。
TOPレベル(ドキュメントルート)の.htaccessに下記を設置
# モバイル専用ディレクトリに設置
# ディレクトリが/m以下でなくで,モバイルの場合は、/mに移動
RewriteEngine On
# ディレクトリが/m以下でない(ループを防ぐため)
RewriteCond %{REQUEST_URI} !^m/.*$
# DoCoMo
RewriteCond %{HTTP_USER_AGENT} ^DoCoMo [NC,OR]
# Softbank
RewriteCond %{HTTP_USER_AGENT} ^J-PHONE [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Vodafone [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^SoftBank [NC,OR]
# AU KDDI
RewriteCond %{HTTP_USER_AGENT} ^KDDI [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^UP.Browser
#redirect
RewriteRule ^.*$ /m/ [R]
で、USER_AGENTが、モバイル(偽装を含む)の場合のみ閲覧可。
注意点

USER_AGENTをチェックしている、最後の行には [NC,OR] を付けない、付けると全てにあてはまる。
USER_AGENTを偽装されても入れるため、より厳密にする場合はキャリアが出しているIPにそって制限をかける。
^.*$や、!^m/.*$ の表示は、^/.*$や、!^/m/.*$ 等で動く場合あり、httpd_conf の設定に依存するので、動かない場合は付けたり消したりして試す。

その他サンプル。
サイトを閉じて、それぞれのTOPを見せる場合。
ドキュメントルートの.htaccessに
#mobile用
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^DoCoMo [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^J-PHONE [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Vodafone [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^SoftBank [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^KDDI [NC,OR]
RewriteCond %{HTTP_USER_AGENT} [...]]]></description>
			<content:encoded><![CDATA[<p>mod_rewrite をいつも手こずるのでメモ。<br />
携帯サイトとPCサイトの振り分けとか、</p>
<p>携帯サイトは、/m/ フォルダにあるとする。</p>
<p>TOPレベル(ドキュメントルート)の.htaccessに下記を設置</p>
<blockquote><p># モバイル専用ディレクトリに設置<br />
# ディレクトリが/m以下でなくで,モバイルの場合は、/mに移動<br />
RewriteEngine On<br />
# ディレクトリが/m以下でない(ループを防ぐため)<br />
RewriteCond %{REQUEST_URI} !^m/.*$<br />
# DoCoMo<br />
RewriteCond %{HTTP_USER_AGENT} ^DoCoMo [NC,OR]<br />
# Softbank<br />
RewriteCond %{HTTP_USER_AGENT} ^J-PHONE [NC,OR]<br />
RewriteCond %{HTTP_USER_AGENT} ^Vodafone [NC,OR]<br />
RewriteCond %{HTTP_USER_AGENT} ^SoftBank [NC,OR]<br />
# AU KDDI<br />
RewriteCond %{HTTP_USER_AGENT} ^KDDI [NC,OR]<br />
RewriteCond %{HTTP_USER_AGENT} ^UP.Browser<br />
#redirect<br />
RewriteRule ^.*$ /m/ [R]</p></blockquote>
<p>で、USER_AGENTが、モバイル(偽装を含む)の場合のみ閲覧可。<br />
<strong>注意点</strong></p>
<ul>
<li>USER_AGENTをチェックしている、最後の行には [NC,OR] を付けない、付けると全てにあてはまる。</li>
<li>USER_AGENTを偽装されても入れるため、より厳密にする場合はキャリアが出しているIPにそって制限をかける。</li>
<li>^.*$や、!^m/.*$ の表示は、^/.*$や、!^/m/.*$ 等で動く場合あり、httpd_conf の設定に依存するので、動かない場合は付けたり消したりして試す。</li>
</ul>
<p>その他サンプル。<br />
<strong>サイトを閉じて、それぞれのTOPを見せる場合。</strong><br />
ドキュメントルートの.htaccessに</p>
<blockquote><p>#mobile用<br />
RewriteEngine On<br />
RewriteCond %{HTTP_USER_AGENT} ^DoCoMo [NC,OR]<br />
RewriteCond %{HTTP_USER_AGENT} ^J-PHONE [NC,OR]<br />
RewriteCond %{HTTP_USER_AGENT} ^Vodafone [NC,OR]<br />
RewriteCond %{HTTP_USER_AGENT} ^SoftBank [NC,OR]<br />
RewriteCond %{HTTP_USER_AGENT} ^KDDI [NC,OR]<br />
RewriteCond %{HTTP_USER_AGENT} ^UP.Browser<br />
RewriteRule ^.*$ /m/index.html [R]</p>
<p>#PC用<br />
RewriteCond %{REQUEST_URI} !^/index.html$<br />
RewriteCond %{REQUEST_URI} !^.*\.(css|js|jpg|gif)$<br />
RewriteRule ^.*$ /index.html [R]</p></blockquote>
<p>モバイルのUSER_AGENTの場合は、/m/フォルダにリダイレクト。<br />
PCの場合は、/index.htmlへリダイレクト。<br />
その時、css js jpg gif へのアクセスは許可する。(もちろん、/index.html自体にも)</p>
<p>/m/フォルダに設置 (該当外のアクセスは一旦TOPへ戻す)</p>
<blockquote><p>RewriteEngine On<br />
RewriteCond %{HTTP_USER_AGENT} !^(DoCoMo|J-PHONE|Vodafone|SoftBank|KDDI|UP.Browser)<br />
RewriteCond %{REQUEST_URI} !^/m/index\.html$ [NC,OR]<br />
RewriteCond %{REQUEST_URI} !^.*\.(css|js|jpg|gif)$<br />
RewriteRule ^.*$ /index.html [R]</p></blockquote>
<p>モバイルのUSER_AGENT以外の場合は、/index.htmlへリダイレクト。<br />
モバイルでのアクセスの場合は、css js jpg gif へのアクセスは許可する。(もちろん、/m/index.html自体にも)<br />
面倒なので、USER_AGENTの行を1行で書いてみた。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pictnotes.jp/?feed=rss2&amp;p=189</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
