2010.02.16

Category: Command, Os, Redhat ES(CentOS) / Tags:

iptables – IPv4 のパケットフィルタと NAT を管理するツール (INPUTサンプル)

細かく設定するには、シェルとかで管理すべきみたいなのですが、基本のINPUTの部分だけをおさえておきます。
そこまで自信がないので、深くは信じないでください。(他のとみくらべてね)

# コメント行
* table名(filter nat mangle)のどれか、基本的には、filterを利用
:<チェーン名> <チェーンポリシー> [<パケットカウンタ>:<バイトカウンタ>]
COMMIT は設定反映といった感じ

オプション

-A で、追加。
-p プロトコル tcp,、udp、 icmp、 allが指定できる。
-m(–match) -pで暗黙のうちに指定されるが、-mで指定してもOK.-pとセットで使う。
–dport (-p tcp の場合のみ)送信先ポートまたはポート範囲の指定
-i インターフェイス eth0 eth1 とか
-s ipアドレス(送信元の指定)
-j [ACCEPT|DROP] 許可不許可 「-A INPUT -s -j ACCEPT 」で、そのIPアドレスから接続許可

“-m state” を指定した場合の拡張オプション
–state [NEW|"INVALID" |ESTABLISHED|RELATED] 接続状態
NEWは新規接続のパケット,”INVALID” は既存パケットと関係のないパケット,ESTABLISHEDは既存パケットと関係あるパケット,RELATEDは新規接続のパケットであるが、既存パケットに関係のあるパケットである。
これにより、いちいち応答パケットを許可する設定をしなくても済みます。

設定サンプル

#table名を記載
*filter
#とりえあず、INPUTは制限、OUTPUT FORWARDは、全てを許可
:INPUT DROP
:FORWARD ACCEPT
:OUTPUT ACCEPT
#下記は、ICMP用
#ICMPは送信したデータが届かなかったとき、また障害があったときに利用されるプロトコルです。
#0 = エコー応答Echo Reply(エコー応答)(pingなど)
#8 = エコー要求(pingなど)
-A INPUT -p icmp -m icmp –icmp-type 8 -j ACCEPT
-A INPUT -p icmp -m icmp –icmp-type 0 -j ACCEPT
# 接続済みは許可
-A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
#接続許可IP
#local
-A INPUT -s 127.0.0.1 -j ACCEPT
#メンテナンスのIPとか
-A INPUT -s xxx.xxx.xxx.xxx -j ACCEPT
#サービスベースでの接続 80番ポート
-A INPUT -p tcp -m tcp –dport 80 -j ACCEPT
# -mは指定しなくてもいける
-A INPUT -p tcp –dport 443 -j ACCEPT
# dnsはudpも指定
-A INPUT -p tcp –dport 53 -j ACCEPT
-A INPUT -p upd –dport 53 -j ACCEPT
# ntp はupdで
-A INPUT -p upd –dport 123 -j ACCEPT
#反映
COMMIT

という事で、必要部分だけ綺麗に書くと

*filter
:INPUT DROP
:FORWARD ACCEPT
:OUTPUT ACCEPT
-A INPUT -p icmp -m icmp –icmp-type 8 -j ACCEPT
-A INPUT -p icmp -m icmp –icmp-type 0 -j ACCEPT
-A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 127.0.0.1 -j ACCEPT
-A INPUT -s xxx.xxx.xxx.xxx -j ACCEPT
-A INPUT -p tcp -m tcp –dport 80 -j ACCEPT
-A INPUT -p tcp –dport 443 -j ACCEPT
-A INPUT -p tcp –dport 53 -j ACCEPT
-A INPUT -p upd –dport 53 -j ACCEPT
-A INPUT -p upd –dport 123 -j ACCEPT
COMMIT

-A INPUT -s xxx.xxx.xxx.xxx -j ACCEPT
の部分は、もう少し制御して
-A INPUT -p tcp –dport 22 -s xxx.xxx.xxx.xxx -j ACCEPT
とサービスまで絞り込んだ方がよりいいです。

2010.02.10

Category: Apache, Command, Shell / Tags:

logrotateで日付付のログをバックアップする。

過去に
「logrotate & bash で日付付のログをバックアップする。」
っていうのをメモっているけど、別ファイルのbashをつくるのもめんどうなのでより簡単メモ

/var/log/httpd/*log {
daily
rotate 10
create
compress
missingok
notifempty
sharedscripts
postrotate
/sbin/service httpd reload > /dev/null 2>/dev/null || true
EXT=date +%Y%m%d -d ‘1 days ago’
for f in $1;
do mv $f.1.gz $f.$EXT.gz;
done
endscript
}

EXT=date +%Y%m%d -d ‘1 days ago’
for f in $1;
do mv $f.1.gz $f.$EXT.gz;
done

が追加分、corn では、通常4時2分に起動するので、基本的に前日の日付をつけておく。
でもって、ローテートしたファイルをリネームしているだけ、
これだと、本来、「rotate 10」のところは、1でもいいのだけど、念のための保険で10回
にしているだけです。
こっちの方が簡単だな。

追記:2010.02.23
EXT=date +%Y%m%d -d ‘1 days ago’
の部分をそのままコピペすると、WPが変換かけてるのでうごきません。
「1 days ago」をシングルコーテーションで囲み直して、
「date +%Y%m%d -d ‘1 days ago’」全体を実行演算子で囲んでください。

でもって、バージョンの違いかわからないけど、compress が postrotate
の後に行われる場合がある。こうなると日付のファイル名にリネーム
できなくなる。(gzで圧縮した後のファイル名をリネームしようとしてるので)

という事で、さらに改訂。compressをlogrotateにまかせずに。

/var/log/httpd/*/*log {
daily
rotate 10
create
missingok
notifempty
sharedscripts
postrotate
/sbin/service httpd reload > /dev/null 2>/dev/null || true
EXT=date +%Y%m%d -d ‘1 days ago’
for f in $1;
do
if [ -e $f.1 ] ; then
gzip $f.1;
mv $f.1.gz $f.$EXT.gz;
fi
done
endscript
}

といった形で、postrotateのなかでしてしまう。先に、killプロセス送っているので
ログも新しいファイルに書き出されているので、圧縮中のログが消える心配も
ないので、こちらの方がいいかも。

2009.11.17

Category: Qmail / Tags:

CentOS5.3 にQmail vpopmail qmailadmin をインストール。

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 -> alias (エイリアス)
  • qmaild -> qmail daemon(デーモン)
  • qmaill -> qmail log (ログ関係用)
  • qmailp -> qmail ????
  • qmailq -> qmail queue (待ち行列)
  • qmailr -> qmail respawn (自動再起動)
  • qmails -> qmail send (送信)

とおもう。。

ログインさせないので、それ用のshellがあるか確認

[root@localhost src]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/tcsh
/bin/csh
/bin/ksh

とあるので、/sbin/nologin をつかいます。

#group nofiles
[root@localhost ~]# adduser -g nofiles -s /sbin/nologin -d /var/qmail/alias -M alias
[root@localhost ~]# adduser -g nofiles -s /sbin/nologin -d /var/qmail -M qmaild
[root@localhost ~]# adduser -g nofiles -s /sbin/nologin -d /var/qmail -M qmaill
[root@localhost ~]# adduser -g nofiles -s /sbin/nologin -d /var/qmail -M qmailp
#group qmail
[root@localhost ~]# adduser -g qmail -s /sbin/nologin -d /var/qmail -M qmailq
[root@localhost ~]# adduser -g qmail -s /sbin/nologin -d /var/qmail -M qmailr
[root@localhost ~]# adduser -g qmail -s /sbin/nologin -d /var/qmail -M qmails

-M オプションは、ユーザのホームディレクトリを作成しないです。つけないと、

adduser: warning: the home directory already exists.
Not copying any file from skel directory into it.

と言われます。
個人ユーザ用の設定ファイルがすでに存在しててあたらに作れなかったと言われているだけなので無視しても大丈夫ですが、.bashrcとかができるので削除しておいてください。

2.qmailインストール

※qmailや、patchの最新版のURLはそれぞれ確認すること。
とりあえず、必要な物のダウンロード先

2-1.qmailのインストール

作業ディレクトリは、 /usr/local/src

[root@localhost ~]# cd /usr/local/src/

Qmailディレクトリに移動

[root@localhost src]# tar xvfz qmail-1.03.tar.gz
qmail-1.03/

qmail-1.03/constmap.c
[root@localhost src]# cd qmail-1.03

patch類のダウンロード及び、適応。

[root@localhost qmail-1.03]# wget http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/qmail-1.03.errno.patch
[root@localhost qmail-1.03]# wget http://www.itheart.com/phpgw/qmail-date-localtime.patch
[root@localhost qmail-1.03]# wget http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/qmail-1.03.qmail_local.patch
[root@localhost qmail-1.03]# wget http://qmail.org/qmail-smtpd-relay-reject
[root@localhost qmail-1.03]# wget http://www.suspectclass.com/~sgifford/qmail/qmail-0.0.0.0.patch
[root@localhost qmail-1.03]# wget http://qmail.org/qmailqueue-patch
[root@localhost qmail-1.03]# wget http://members.elysium.pl/brush/qmail-smtpd-auth/dist/qmail-smtpd-auth-0.31.tar.gz
[root@localhost qmail-1.03]# wget http://tomclegg.net/qmail/qmail-remote-auth.patch
[root@localhost qmail-1.03]# tar xvfz qmail-smtpd-auth-0.31.tar.gz
qmail-smtpd-auth-0.31/
qmail-smtpd-auth-0.31/auth.patch
qmail-smtpd-auth-0.31/CHANGES
qmail-smtpd-auth-0.31/base64.c
qmail-smtpd-auth-0.31/base64.h
qmail-smtpd-auth-0.31/README.auth
[root@localhost qmail-1.03]# cp qmail-smtpd-auth-0.31/* ./
[root@localhost qmail-1.03]# patch < qmail-1.03.errno.patch
patching file cdb_seek.c
patching file dns.c
patching file error.3
patching file error.h
[root@localhost qmail-1.03]# patch < qmail-date-localtime.patch
patching file date822fmt.c
[root@localhost qmail-1.03]# patch < qmail-1.03.qmail_local.patch
patching file qmail-local.c
[root@localhost qmail-1.03]# patch < qmail-smtpd-relay-reject
patching file qmail-smtpd.c
[root@localhost qmail-1.03]# patch < qmail-0.0.0.0.patch
patching file ipme.c
[root@localhost qmail-1.03]# patch < qmailqueue-patch
patching file Makefile
patching file qmail.c
[root@localhost qmail-1.03]# patch < auth.patch
patching file Makefile
patching file TARGETS
patching file qmail-smtpd.8
patching file qmail-smtpd.c
Hunk #2 succeeded at 63 (offset 1 line).
Hunk #3 succeeded at 256 (offset 15 lines).
Hunk #4 succeeded at 416 (offset 2 lines).
Hunk #5 succeeded at 659 (offset 15 lines).
[root@localhost qmail-1.03]# patch < qmail-remote-auth.patch
patching file qmail-remote.c
patching file Makefile

入れ込みます。

[root@localhost qmail-1.03]# make
[root@localhost qmail-1.03]# make setup
./install
[root@localhost qmail-1.03]# make check
./instcheck

インストール状況の確認

[root@localhost qmail-1.03]# ls -al /var/qmail/
total 44
drwxr-xr-x 10 root qmail 4096 Nov 16 19:10 .
drwxr-xr-x 26 root root 4096 Nov 16 18:07 ..
drwxr-sr-x 2 alias qmail 4096 Nov 16 19:10 alias
drwxr-xr-x 2 root qmail 4096 Nov 16 19:10 bin
drwxr-xr-x 2 root qmail 4096 Nov 16 19:10 boot
drwxr-xr-x 2 root qmail 4096 Nov 16 19:15 control
drwxr-xr-x 2 root qmail 4096 Nov 16 19:10 doc
drwxr-xr-x 10 root qmail 4096 Nov 16 19:10 man
drwxr-x— 11 qmailq qmail 4096 Nov 16 19:10 queue
drwxr-xr-x 2 root qmail 4096 Nov 16 19:10 users

control以下が空っぽなのを確認

[root@localhost qmail-1.03]# ls -al /var/qmail/control/
total 28
drwxr-xr-x 2 root qmail 4096 Nov 16 19:15 .
drwxr-xr-x 10 root qmail 4096 Nov 16 19:10 ..

デフォルトのファイルをとりあえず作る。

[root@localhost qmail-1.03]# ./config-fast example.com <- 自ホストFQDN
Your fully qualified host name is localhost.ne.jp.
Putting localhost.ne.jp into control/me…
Putting ne.jp into control/defaultdomain…
Putting ne.jp into control/plusdomain…
Putting localhost.ne.jp into control/locals…
Putting localhost.ne.jp into control/rcpthosts…
Now qmail will refuse to accept SMTP messages except to localhost.ne.jp.
Make sure to change rcpthosts if you add hosts to locals or virtualdomains!

もう一度確認、ファイルができてます。

[root@localhost qmail-1.03]# ls -al /var/qmail/control/
total 28
drwxr-xr-x 2 root qmail 4096 Nov 16 19:15 .
drwxr-xr-x 10 root qmail 4096 Nov 16 19:10 ..
-rw-r–r– 1 root root 6 Nov 16 19:15 defaultdomain
-rw-r–r– 1 root root 10 Nov 16 19:15 locals
-rw-r–r– 1 root root 10 Nov 16 19:15 me
-rw-r–r– 1 root root 6 Nov 16 19:15 plusdomain
-rw-r–r– 1 root root 10 Nov 16 19:15 rcpthosts

FQDNを失敗した場合はこちらを修正すればOK
コマンドの登録

[root@localhost qmail-1.03]# cd
[root@localhost ~]# vi .bash_profile
export PATH=$PATH:/var/qmail/bin <- これをかきこみます。
[root@localhost ~]# source .bash_profile
[root@localhost ~]# which qmail-local
/var/qmail/bin/qmail-local

3.tcpserverインストール

qmailへのSMTP接続制御を行うため、tcpserverが含まれたucspi-tcpをインストールする

インストール作業

[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
[root@localhost src]# tar xvfz ucspi-tcp-0.88.tar.gz
ucspi-tcp-0.88

ucspi-tcp-0.88/x86cpuid.c
[root@localhost src]#cd ucspi-tcp-0.88
[root@localhost ucspi-tcp-0.88]# wget http://www.qmail.org/rpms/patches/ucspi-tcp-0.88.errno.patch
[root@localhost ucspi-tcp-0.88]# wget http://www.nrg4u.com/qmail/ucspi-tcp-ssl-20050405.patch.gz
[root@localhost ucspi-tcp-0.88]# gunzip ucspi-tcp-ssl-20050405.patch.gz
[root@localhost ucspi-tcp-0.88]# patch < ucspi-tcp-ssl-20050405.patch
patching file FILES
patching file Makefile
patching file TARGETS
patching file addcr.1
patching file argv0.1
patching file date@.1
patching file delcr.1
patching file error.h
patching file finger@.1
patching file fixcrio.1
patching file hier.c
patching file http@.1
patching file mconnect.1
patching file recordio.1
patching file tcp-environ.5
patching file tcpcat.1
patching file tcpclient.1
patching file tcprules.1
patching file tcprules.c
patching file tcprulescheck.1
patching file tcprulescheck.c
patching file tcpserver.1
patching file tcpserver.c
patching file who@.1

ucspi-tcp-ssl-20050405.patch をあてると、同時にucspi-tcp-0.88.errno.patch
の内容も修正されるので、ucspi-tcp-0.88.errno.patch はあてる必要はありません。

sslは、rpm等で、openssl-devel等が入っているか確認してから入れて下さい。(入ってない場合は入れる事)

続きの作業

[root@localhost ucspi-tcp-0.88]# make
[root@localhost ucspi-tcp-0.88]# make setup
./install
[root@localhost ucspi-tcp-0.88]# make check
./instcheck

中継許可ホストに自ホストを登録

[root@centos ~]# echo ‘127.:allow,RELAYCLIENT=”"‘ >
/etc/tcp.smtp

/etc/tcp.smtpをcdb形式に変換

[root@centos ~]# tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

4.fastforwardインストール

sendmail用システム共通メール転送設定ファイル(/etc/aliases)をqmailで利用するのに必要なfastforwardをインストールする

インストール作業

[root@localhost ~]# cd /usr/local/src
[root@localhost src]# wget http://cr.yp.to/software/fastforward-0.51.tar.gz
[root@localhost src]# tar xvfz fastforward-0.51.tar.gz
[root@localhost fastforward-0.51]# vi error.h
extern int errno;

#include ← 変更
[root@localhost fastforward-0.51]# make
[root@localhost fastforward-0.51]# make setup
./compile install.c
install.c: In function ‘main’:
install.c:103: warning: return type of ‘main’ is not ‘int’
./compile hier.c
./load install hier.o auto_qmail.o strerr.a substdio.a \
error.a open.a str.a
./install
[root@localhost fastforward-0.51]# make check
./compile instcheck.c
instcheck.c: In function ‘main’:
instcheck.c:80: warning: return type of ‘main’ is not ‘int’
./load instcheck hier.o auto_qmail.o strerr.a substdio.a \
error.a str.a
./instcheck

5.vpopmailのセットアップ

※qmailや、patchの最新版のURLはそれぞれ確認すること。
vpopmail-5.4.25 / vpopmailサイト / バーチャルドメインを実現させる。

[root@localhost src]# cd /usr/local/src
[root@localhost src]# wget http://sourceforge.net/projects/vpopmail/files/vpopmail-stable/5.4.28/vpopmail-5.4.28.tar.gz/download
[root@localhost src]# tar xvfz vpopmail-5.4.28.tar.gz
[root@localhost src]# cd vpopmail-5.4.28
[root@localhost vpopmail-5.4.28]# groupadd vchkpw

-> 89にする必要はないよ。そういう説明は多いがfreebsdの場合、89にデフォルトで予約されてるみたいだからそこからきてるみたい。

[root@localhost vpopmail-5.4.28]# useradd -g vchkpw -s /sbin/nologin -d /var/qmail/vpopmail -M vpopmail
[root@localhost vpopmail-5.4.28]# mkdir /var/qmail/vpopmail
[root@localhost vpopmail-5.4.28]# chown vpopmail:vchkpw /var/qmail/vpopmail/
[root@localhost vpopmail-5.4.28]# ls -al /var/qmail/
drwxr-xr-x 2 vpopmail vchkpw 4096 Nov 16 21:52 vpopmail
[root@localhost vpopmail-5.4.28]# ./configure –disable-clear-passwd –enable-logging=y –enable-qmail-ext –enable-roaming-users

configureがおわったら、最後に設定一覧がでてきます。

vpopmail 5.4.28
Current settings
—————————————

vpopmail directory = /var/qmail/vpopmail
domains directory = /var/qmail/vpopmail/domains
uid = 508
gid = 503
roaming users = ON –enable-roaming-users
tcpserver file = /home/vpopmail/etc/tcp.smtp
open_smtp file = /home/vpopmail/etc/open-smtp
rebuild tcpserver file = ON –enable-rebuild-tcpserver-file (default)
password learning = OFF –disable-learn-passwords (default)
md5 passwords = ON –enable-md5-passwords (default)
file locking = ON –enable-file-locking (default)
vdelivermail fsync = OFF –disable-file-sync (default)
make seekable = ON –enable-make-seekable (default)
clear passwd = OFF –disable-clear-passwd
user dir hashing = ON –enable-users-big-dir (default)
address extensions = ON –enable-qmail-ext
ip alias = OFF –disable-ip-alias-domains (default)
onchange script = OFF –disable-onchange-script (default)
domain quotas = OFF –disable-domainquotas (default)
auth module = cdb –enable-auth-module=cdb (default)
auth inc = -Icdb
auth lib =
system passwords = OFF –disable-passwd (default)
pop syslog = show successful and failed login attempts –enable-logging=y
auth logging = ON –enable-auth-logging (default)
spamassassin = OFF –disable-spamassassin (default)
maildrop = OFF –disable-maildrop (default)
****************************************************

If you plan to use the vpopmail usage daemon
run the following commands:

cd vusaged && ./configure && make

Then follow the INSTALL file to install

****************************************************

vpopmail をdaemonとして扱う場合は上記処理( cd vusaged && ./configure && make)をしましょう。

[root@localhost vpopmail-5.4.28]# make
省略
gcc -o vusagec vusagec.o client.o conf.o ippp.o libvpopmail.a -lcrypt
make[2]: Leaving directory /usr/local/src/vpopmail-5.4.30′
make[1]: Leaving directory /usr/local/src/vpopmail-5.4.30′
[root@localhost vpopmail-5.4.28]# make install
省略
make[2]: Leaving directory /usr/local/src/vpopmail-5.4.30′
make[1]: Leaving directory /usr/local/src/vpopmail-5.4.30′

****************************************************

If you plan to use the vpopmail usage daemon
run the following commands:

cd vusaged && ./configure && make

Then follow the INSTALL file to install

****************************************************

6.自動応答機能のセットアップ

autorespond-2.0.5 / サイト / 自動応答機能を実現するqmailアドオンツール
software http://www.inter7.com/?page=software

[root@localhost src]# cd /usr/local/src
[root@localhost src]# wget http://www.inter7.com/devel/autorespond-2.0.5.tar.gz
[root@localhost src]# tar xvfz autorespond-2.0.5.tar.gz
[root@localhost src]# cd autorespond-2.0.5
[root@localhost autorespond-2.0.5]# cat README
[root@localhost autorespond-2.0.5]# make
gcc -O2 -Wall -g autorespond.c -o autorespond
[root@localhost autorespond-2.0.5]# make install
install -d /usr/bin /usr/share/man/man1
install autorespond /usr/bin
install autorespond.1 /usr/share/man/man1

7.qmailadminのセットアップ

qmailadmin-1.2.1 / サイト / sourceforge / qmailadmin vpopmail用メールアカウント管理システム

[root@localhost src]# cd /usr/local/src
[root@localhost src]# wget http://sourceforge.net/projects/qmailadmin/files/qmailadmin-stable/1.2.13/qmailadmin-1.2.13.tar.gz/download

qmailadminのインストール先(webからの閲覧用)フォルダを作成しておきます。
下記は、/var/www/vhosts/qmailadmin.example.com/html をドキュメントルートとした http://qmailadmin.example.comからの閲覧先の例です。

[root@localhost src]# mkdir qmailadmin.example.com
[root@localhost src]# mkdir -p /var/www/vhosts/qmailadmin.example.com/html
[root@localhost src]# tar xvfz qmailadmin-1.2.13.tar.gz
[root@localhost src]# cd qmailadmin-1.2.13
[root@localhost qmailadmin-1.2.13]# cat INSTALL
[root@localhost qmailadmin-1.2.13]# ./configure \
–enable-cgibindir=/var/www/vhosts/qmailadmin.example.com/cgi-bin \
–enable-htmldir=/var/www/vhosts/qmailadmin.example.com/html \
–enable-imageurl=/images \
–enable-imagedir=/var/www/vhosts/qmailadmin.example.com/html/images \
–enable-htmllibdir=/var/www/vhosts/qmailadmin.example.com/html \
–enable-vpopmaildir=/var/qmail/vpopmail \
–enable-vpopuser=vpopmail \
–enable-autoresponder-bin=/usr/bin/autorespond \
–disable-ezmlmdir \
–disable-ezmlm-mysql \
–enable-help \

結果は下記の感じ

qmailadmin 1.2.13
Current settings
—————————————
cgi-bin dir = /var/www/vhosts/qmailadmin.example.com/cgi-bin
html dir = /var/www/vhosts/qmailadmin.example.com/html
image dir = /var/www/vhosts/qmailadmin.example.com/html/images
image URL = /images
template dir = /var/www/vhosts/qmailadmin.example.com/html
qmail dir = /var/qmail
vpopmail dir = /var/qmail/vpopmail
autorespond dir = /usr/bin
ezmlm dir = no
ezmlm idx = no
mysql for ezmlm = no
help = yes
modify quota = no
domain autofill = no
catchall accounts = yes
trivial passwords = yes
modify spam check = no

[root@localhost qmailadmin-1.2.13]# make
[root@localhost qmailadmin-1.2.13]# make install

本体は、cgi-binというフォルダにインストールしないと、formタグのリンク先がおかしくなるので
.htaccess で、ExecCGIとかで別けてない場合は注意が必要です。

8.qmailadmin-helpのインストール

qmailadmin-help-1.0.8.tar.gz / qmailadmin-help / qmailadmin ヘルプ

[root@localhost ~]# cd /usr/local/src
[root@localhost src]# wget http://www.inter7.com/devel/qmailadmin-help-1.0.8.tar.gz
[root@localhost src]# tar xvfz qmailadmin-help-1.0.8.tar.gz
[root@localhost src]# cd qmailadmin-help-1.0.8
[root@localhost qmailadmin-help-1.0.8]# cat INSTALL
Quick Install:
mkdir /var/www/html/images/qmailadmin/help
cp -rp * /var/www/html/images/qmailadmin/help

note: ./configure option –enable-htmldir=/var/www/html

Longer Install:
The files in this directory should be copied to
where your qmailadmin image files live. Normally
this is under –enable-htmldir /images/qmailadmin/help

Good Luck
Ken Jones
inter7.com
[root@localhost qmailadmin-help-1.0.8]# mkdir /var/www/vhosts/qmailadmin.localhost.ne.jp/html/images/help
[root@localhost qmailadmin-help-1.0.8]# cp -rp * /var/www/vhosts/qmailadmin.localhost.ne.jp/html/images/help

9.qmailの起動

  • sendmailの停止
  • /etc/init.d/qmail の作成
  • chkconfigへの登録
  • 4.起動スクリプトのコピー 修正
  • 起動テスト

1.sendmailの停止

[root@localhost ~]# cd
[root@localhost ~]# /etc/init.d/sendmail status
sendmail (pid 5484 5475) を実行中…
[root@localhost ~]# /etc/init.d/sendmail stop
sm-client を停止中: [ OK ]
sendmail を停止中: [ OK ]
[root@localhost ~]# chkconfig –list | grep sendmail
sendmail 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@localhost ~]# chkconfig sendmail off
[root@localhost ~]# chkconfig –list | grep sendmail
sendmail 0:off 1:off 2:off 3:off 4:off 5:off 6:off

2./etc/init.d/qmail の作成

[root@localhost ~]#vi /etc/init.d/qmail
サンプルです。
–ここから
#!/bin/bash
#
# qmail
#
# chkconfig: 2345 80 30
# description: qmail start/stop script

# Source function library.
. /etc/rc.d/init.d/functions

PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin

[ -f /var/qmail/rc ] || exit 0

start() {
# Start daemons.
if [ -z $(/sbin/pidof qmail-send) ]; then
echo -n “Starting qmail”

# qmail
csh -cf ‘/var/qmail/rc &’ 2>&1 > /dev/null

# SMTP(21)
tcpserver -qv -l0 -HR -u id -u qmaild -g id -g qmaild \
-x /var/qmail/vpopmail/etc/tcp.smtp.cdb 0 smtp \
fixcrio qmail-smtpd hostname /bin/true 2>&1|\
splogger smtp &

# SMTP(587)
tcpserver -qv -l0 -HR -u id -u qmaild -g id -g qmaild \
-x /var/qmail/vpopmail/etc/tcp.smtp.cdb 0 587 \
fixcrio qmail-smtpd hostname /bin/true 2>&1|\
splogger smtp &

# POP3
tcpserver -H -R -l $HOSTNAME -v 0 pop3 \
/var/qmail/bin/qmail-popup $HOSTNAME \
/var/qmail/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1 | /var/qmail/bin/splogger pop3 &

RETVAL=$?
echo
[ $RETVAL = 0 ] && touch /var/lock/subsys/qmail
return $RETVAL
else
echo “qmail is already started”
fi
}

stop() {
# Stop daemons.
if [ ! -z $(/sbin/pidof qmail-send) ]; then
echo -n “Shutting down qmail”
/bin/kill $(/sbin/pidof tcpserver)
/bin/kill $(/sbin/pidof qmail-send)
until [ -z $(/sbin/pidof qmail-send) ] && [ -z $(/sbin/pidof tcpserver) ]; do :; done
echo
rm -f /var/lock/subsys/qmail
else
echo “qmail is not running”
fi
}

case “$1″ in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
if [ ! -z $(/sbin/pidof qmail-send) ] ; then
echo -n “qmail (pid”
echo -n ” /sbin/pidof qmail-send”
echo -n ” /sbin/pidof tcpserver”
echo “) is running…”
else
echo “qmail is stopped”
fi
;;
*)
echo “Usage: qmail {start|stop|restart|status}”
exit 1
esac

exit 0
–ここまで
[root@localhost init.d]# chmod 755 /etc/init.d/qmail

3.chkconfigへの登録

[root@localhost init.d]# chkconfig –add qmail
[root@localhost init.d]# chkconfig –list | grep qmail
qmail 0:off 1:off 2:on 3:on 4:on 5:on 6:off

4.起動スクリプトのコピー 修正

[root@localhost ~]# cp /var/qmail/boot/home /var/qmail/rc
[root@localhost ~]# vi /var/qmail/rc
#!/bin/sh

# Using splogger to send the log through syslog.
# Using qmail-local to deliver messages to ~/Mailbox by default.

exec env – PATH=”/var/qmail/bin:$PATH” \
qmail-start ./Maildir splogger qmail <- Mailbox を Maildir へ修正。

5.起動テスト

[root@localhost ~]# /etc/init.d/qmail start
Starting qmail
[root@localhost ~]# /etc/init.d/qmail status
qmail (pid 22413 22420 22417 22414) is running…
[root@localhost ~]# ps ax | grep qmail
22413 pts/2 S 0:00 qmail-send
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
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
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
22421 pts/2 S 0:00 /var/qmail/bin/splogger pop3
22425 pts/2 S 0:00 splogger qmail
22427 pts/2 S 0:00 qmail-lspawn ./Maildir
22428 pts/2 S 0:00 qmail-rspawn
22429 pts/2 S 0:00 qmail-clean
22438 pts/2 S+ 0:00 grep qmail

2009.11.11

Category: Mac / Tags:

Mac に GO言語(golang)をインストールしてみる。

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 | grep ‘^GO’
GOBIN=/Users/kiyo/go/bin
GOARCH=amd64
GOROOT=/Users/kiyo/go
GOOS=darwin

パスに設定されてるかも確認

KiyoMac:~ kiyo$ env | grep ‘^PATH’
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 match: mercurial 1.3.1
Downloading http://mercurial.selenic.com/release/mercurial-1.3.1.tar.gz
Processing mercurial-1.3.1.tar.gz
Running mercurial-1.3.1/setup.py -q bdist_egg –dist-dir /tmp/easy_install-Ui4ZEE/mercurial-1.3.1/egg-dist-tmp-SbX7Oy
zip_safe flag not set; analyzing archive contents…
mercurial.extensions: module references __file__
mercurial.i18n: module references __file__
mercurial.lsprof: module references __file__
mercurial.templater: module references __file__
Adding mercurial 1.3.1 to easy-install.pth file
Installing hg script to /usr/local/bin

Installed /Library/Python/2.6/site-packages/mercurial-1.3.1-py2.6-macosx-10.6-universal.egg
Processing dependencies for mercurial
Finished processing dependencies for mercurial

でいれこみます。入る物は、
http://mercurial.selenic.com/wiki/Download
です。
フォルダがなければ

KiyoMac:~ kiyo$ mkdir ./go

で作成。
ソース等の入れ込み

KiyoMac:~ kiyo$ hg clone -r release https://go.googlecode.com/hg/ $GOROOT
requesting all changes
adding changesets
adding manifests
adding file changes
added 3976 changesets with 16799 changes to 2931 files
updating working directory
1640 files updated, 0 files merged, 0 files removed, 0 files unresolved

4.Install Go インストール
じゃあインストールしてみましょう。ここでOS Xに、Xcodeが入ってないと、gccとかがないので
コンパイルできずに怒られるので、先にXcodeを入れておいてください。

KiyoMac:~ kiyo$ cd go/src/
KiyoMac:src kiyo$ ./all.bash
色々出てきて。
— cd ../test
0 known bugs; 0 unexpected bugs

終了

5.Writing programs プログラムを書こう
じゃあ、プログラムを動かしてみましょう。
Mac OS X 10.6 は、6g 6l のコマンドを利用します。OS X 10.5(32bit)なら、8g 8l みたいです。(未確定)

KiyoMac:~ kiyo$ cd
KiyoMac:~ kiyo$ cat hello.go
package main

import “fmt”

func main() {
fmt.Printf(”hello, world\n”)
}
KiyoMac:~ kiyo$ 6g hello.go
KiyoMac:~ kiyo$ 6l hello.6
KiyoMac:~ kiyo$ ./6.out
hello, world

と出力されればインストール完了です。

さて、問題はこれでなにをするかだ・・・。

2009.11.09

Category: PostgreSQL / Tags:

postgreSQLでnow()とかの時間がずれている場合

amazonのEC2とかで運用すると、たぶん

#select now();

がずれると思います。チェックするところは2つ。

1.サーバの時間自体の確認(ntpdate),こちらがきちんと日本時間になっているか確認する。
2.環境変数の確認 (PGTZ の設定を確認する。)
通常、

#printenv

とかでみてみても、上記環境変数は設定されてないと思います。
.bash_profileとかに

export PGTZ=’JST-9′

を書き込んで

#source ./.bash_profile

で反映、
postmaserを再起動。
で、すると日本時間で反映されていると思います。

2009.11.06

Category: 未分類 / Tags:

mod_rewrite を使った、.htaccessでの携帯サイトの振り分け方法

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} ^UP.Browser
RewriteRule ^.*$ /m/index.html [R]

#PC用
RewriteCond %{REQUEST_URI} !^/index.html$
RewriteCond %{REQUEST_URI} !^.*\.(css|js|jpg|gif)$
RewriteRule ^.*$ /index.html [R]

モバイルのUSER_AGENTの場合は、/m/フォルダにリダイレクト。
PCの場合は、/index.htmlへリダイレクト。
その時、css js jpg gif へのアクセスは許可する。(もちろん、/index.html自体にも)

/m/フォルダに設置 (該当外のアクセスは一旦TOPへ戻す)

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} !^(DoCoMo|J-PHONE|Vodafone|SoftBank|KDDI|UP.Browser)
RewriteCond %{REQUEST_URI} !^/m/index\.html$ [NC,OR]
RewriteCond %{REQUEST_URI} !^.*\.(css|js|jpg|gif)$
RewriteRule ^.*$ /index.html [R]

モバイルのUSER_AGENT以外の場合は、/index.htmlへリダイレクト。
モバイルでのアクセスの場合は、css js jpg gif へのアクセスは許可する。(もちろん、/m/index.html自体にも)
面倒なので、USER_AGENTの行を1行で書いてみた。

2009.11.06

Category: Mac / Tags:

Macのterminal(ターミナル)でSSH接続が出来ない場合

mac の terminalで、

Received disconnect from 192.168.1.100: 2: Too many authentication failures for hogehoge

となって、SSHの接続が出来なくなったばあい。ssh-agentを疑ってみる。

KiyoMac:macro kiyo$ ps ax | grep ssh
764 ?? S 0:01.32 /usr/bin/ssh-agent -l
38327 ?? Z 0:00.00 (ssh)
40953 ?? T 0:01.05 /usr/bin/ssh admin@192.168.2.100
48427 s000 R+ 0:00.00 grep ssh

の様に、ssh-agent が起動している場合、こいつをkillしてしまいます。

KiyoMac:macro kiyo$ kill -9 764

で、OK.
どうやら、keychainと連携して、ssh-agentが立ち上がるのですが、そちらとバッティングしているご様子です。

2009.10.27

Category: 未分類 / Tags:

wordpressで、PostgreSQLを使う方法

一応、PostgreSQLも使えるみたいなので

http://www.macminiosx.com/2009/07/wordpress_282postgresqlpg4wp.html
が参考になりますが、一点。PostgreSQLをパスワード無しのユーザでアクセスする場合。

http://wordpress.org/extend/plugins/postgresql-for-wordpress/
から、PG4WPの最新版をダウンロード

解凍後、wordpressのフォルダの中のwp-content
にアップロード(もしくはそこで解凍)

pw4wpフォルダの中の、driver_pgsql.phpを編集
92行目あたりの

$conn = pg_connect(”host=$pg_server user=$pg_user password=$pg_password dbname=$dbname”);

$conn = pg_connect(”host=$pg_server user=$pg_user dbname=$dbname”);

とすれば、OK
もしくは、

if($pg_password){
$conn = pg_connect(”host=$pg_server user=$pg_user password=$pg_password dbname=$dbname”);
}else{
$conn = pg_connect(”host=$pg_server user=$pg_user dbname=$dbname”);
}

とすれば両方対応できます。

あとは、通常通りやっいればPostgreSQLが使えます。

2009.10.23

Category: 未分類 / Tags:

pgfoundryについて

http://pgfoundry.org/

PostgreSQLの周辺ツールが色々あります。

一個ずつのせていけたらいいなぁ。。

というか、12月のセミナーの題材にしようか思案中。。

2009.10.19

Category: PostgreSQL / Tags:

PostgreSQL Conference 2009 Japanのお知らせ

PostgreSQL Conference 2009 Japan – JPUG 10th Anniversary Conference -
PostgreSQL の全世界の開発者と日本のユーザの交流を目指して

2009 年 11 月 20 日(金)~ 21 日(土)にAP浜松町でPostgreSQLカンファレンス
が行われます。

詳細は以下の通り。

日本PostgreSQLユーザ会設立10周年記念カンファレンス
「PostgreSQL Conference 2009 Japan」が
本日より(10月15日)よりチケット販売を開始致しました!

このカンファレンスは、例年開催している「PostgreSQL Conference」を初の国
際カンファレンスとして実施するもので、開発者と日本のユーザ様のコミュニ
ケーションの場として考えております。講演も2日間に渡り、今までで最大の応
募の中から選ばれた選りすぐりのセッションばかりです。

皆様のご来場を心よりお待ちしております。

なお、チケットは定員に達し次第締切となります。
お早目のご購入をお勧め致します。

※このメールについて
 このご案内は、自由に転送いただけます。是非ご利用ください。
————————————————————————-
PostgreSQL Conference 2009 Japan
– JPUG 10th Anniversary Conference -

日時: 2009年11月20(金),21(土) 10:00〜17:00
場所: AP浜松町(東京都港区)
主催:  日本PostgreSQLユーザ会
運営:  PostgreSQL Conference 2009 Japan 実行委員会
協賛企業:【プラチナス】SRA OSS, Inc. 日本支社
     【ゴールド】サイオステクノロジー株式会社
     【ゴールド】フォルシア株式会社
     【シルバー】Morph Labs
協力団体:オープンソースビジネス推進協議会
     日本PHPユーザ会
     新潟オープンソース協会
     日本Androidの会
日本セキュアOSユーザ会
定員:  各日240名(2日間計480名)
参加費用:Business Day(11/20) 6,500円(カンファレンス、レセプション参加)
  Community Day(11/21) 3,500円(カンファレンス、ランチつき)
申込方法:10月15日〜11月15日の間に全国のローソンにあるLoppi端末にて購入
     (ローチケ.com から予約も可能)
     購入の際には、以下のイベント名、Lコードをご利用ください。
イベント名:PostgreSQL Conference 2009
Lコード:31552
※定員になり次第締め切りますのでお早めの購入をお勧めします
参加特典:カンファレンススライド冊子(各日配布)
     協賛企業各種ノベルティ
     PostgreSQL Conference 2009 Japan オリジナルノベルティ
     レセプションによる開発者との意見交換(11/20参加者のみ)
ランチつき(11/21参加者のみ)

※ 詳細情報は、下記URLで随時更新しております。
http://www.postgresql.jp/events/pgcon09j/j/pgcon2009j/

【プログラム:Business Day(11/20)】

プログラム詳細⇒
http://www.postgresql.jp/events/pgcon09j/j/program_1

【プログラム:Community Day(11/21)】

プログラム詳細⇒
http://www.postgresql.jp/events/pgcon09j/j/program_2

お問合せ
 PostgreSQL Conference 2009 Japan 実行委員会
 E-mail: pgcon09j at ml.postgresql.jp

« Older Entries