Qmailの乗せ方
Qmailのインストール
Red Hat 7.3 上へのQmailのインストールの記録
幸いなことに、RPMが最近作られた様子。 1年半前にはなかった。当時のQmailの方針としては Binary の配付は認めていなかったのを、方針を変更した様子。http://qmail.org/rpms/var-qmail/README.var-qmail に、英文の説明がある。
glibc-2.3.1以降は、Binary を使えないとの事。 RH7.3は glibc-2.2.5 なので、問題なし。RPMが使える。 書いてあるライブラリも載っている。
- ld-linux.so.2 libc.so.6(GLIBC_2.2) libresolv.so.2(GLIBC_2.2)
このやり方は、redhat 9 には適用できない模様。ソースか、ソースのRPMにパッチを当てながら乗せる必要がある。
特に説明がなかったら作業は root でやっている。
- sudo su -
前準備
NISのファイルを消すとのことだけど、中身は空だった。- rm -f /var/yp/binding/*
sendmail で、運用していたサーバを qmail へ動的に門だいなく移行することも出来るようすで、解説がある。その場合は
- sendmail をまず止める。それから、アンインストール。
- /etc/init.d/sendmail stop
- rpm -e --nodeps sendmail
Qmailが作るユーザIDの調節はできない
ユーザIDは、どうも GVNの osho.ohah.net と違ってしまう。 これは仕方がないとあきらめる。インストール時に、必要なqmail*ユーザを作るので、 もし、500番台からなるように、ohah.net サーバに合わせたかったら、 500以降のユーザの番号を変更するのが良いでしょう。 setux を、400で作って、500以降はなしにします。
ダウンロード
http://qmail.org/rpms/var-qmail/ の qmail-1.03-109memphis.src.rpm を持って来る。
それから、インストール。
これは、ソース形式のRPMなので、一部ビルドする。- rpm --rebuild qmail-1.03-109memphis.src.rpm
実際のインストールは、このコマンド:
- rpm -Uvh /usr/src/redhat/RPMS/i386/qmail-1.03-109memphis.i386.rpm
[admin@osho2 qmail]$ sudo rpm -Uvh /usr/src/redhat/RPMS/i386/qmail-1.03-109memphis.i386.rpm
Preparing... ########################################### [100%]
1:qmail ########################################### [100%]
Your fully qualified host name is osho2.ohah.net.
Putting osho2.ohah.net into control/me...
Putting ohah.net into control/defaultdomain...
Putting ohah.net into control/plusdomain...
Putting osho2.ohah.net into control/locals...
Putting osho2.ohah.net into control/rcpthosts...
Now qmail will refuse to accept SMTP messages except to osho2.ohah.net.
Make sure to change rcpthosts if you add hosts to locals or virtualdomains!
これでは、まだ、QMAILは サーバとしては動かない。
実行用の設定
解説:(単にインストールするためには、これを読む必要はないです)。
実行用のパッケージをいれる方法が二つある。
|
実行管理用の追加ソフトのインストール
http://qmail.org/rpms/qmail-run/ から、daemontool と、ucspi-tcp を、乗せる。
- wget http://qmail.org/rpms/qmail-run/daemontools-0.76-2memphis.i386.rpm
- wget http://qmail.org/rpms/qmail-run/ucspi-tcp-0.88-003memphis.i386.rpm
- rpm -Uvh daemontools-0.76-2memphis.i386.rpm ucspi-tcp-0.88-003memphis.i386.rpm
- [admin@osho2 qmail]$ sudo rpm -Uvh daemontools-0.76-2memphis.i386.rpm ucspi-tcp-0.88-003memphis.i386.rpm
Preparing... ########################################### [100%]
1:daemontools ########################################### [ 50%]
/service exists. I assume that svscan is already running.
You may want to add /command to PATH.
2:ucspi-tcp ########################################### [100%]
- inittab の、最後に一行追加して scscan が走るようにする。
- SV:123456:respawn:/command/svscanboot
- inittab の再読み込み、
- kill -HUP 1
- 確認:
- ps ax|less
+ 2666 ? S 0:00 /bin/sh /command/svscanboot
2668 ? S 0:00 svscan /service
2669 ? S 0:00 readproctitle service errors: .......................
/var/qmail/rc を、作り直す。
- cd /var/qmail
- mv rc rc.original
- cat >rc
- #!/bin/sh
- </nowiki>#</nowiki> Using stdout for logging
- </nowiki>#</nowiki> Using control/defaultdelivery from qmail-local to deliver messages by default
- exec env - PATH="/var/qmail/bin:$PATH" \
- qmail-start "`cat /var/qmail/control/defaultdelivery`"
- chmod 755 rc
MailDir 方式をディフォルトにする。
- echo ./Maildir/ >/var/qmail/control/defaultdelivery
ログディレクトリー作成:
- mkdir /var/log/qmail
コントロールスクリプト
- cd /var/qmail/bin
- wget http://www.lifewithqmail.org/qmailctl-script-dt70
- mv qmailctl-script-dt70 qmailctl
- chmod 755 /var/qmail/bin/qmailctl
- ln -s /var/qmail/bin/qmailctl /usr/bin
supervise フォルダー
- mkdir -p /var/qmail/supervise/qmail-send/log
- mkdir -p /var/qmail/supervise/qmail-smtpd/log
- cat > /var/qmail/supervise/qmail-send/run
- #!/bin/sh
- exec /var/qmail/rc
cat > /var/qmail/supervise/qmail-send/log/run
#!/bin/sh exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail
Create the /var/qmail/supervise/qmail-smtpd/run file:
- cat >/var/qmail/supervise/qmail-smtpd/run
#!/bin/sh
QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
MAXSMTPD=`cat /var/qmail/control/concurrencyincoming`
LOCAL=`head -1 /var/qmail/control/me`
if [ -z "$QMAILDUID" -o -z "$NOFILESGID" -o -z "$MAXSMTPD" -o -z "$LOCAL" ]; then
echo QMAILDUID, NOFILESGID, MAXSMTPD, or LOCAL is unset in
echo /var/qmail/supervise/qmail-smtpd/run
exit 1
fi
if [ ! -f /var/qmail/control/rcpthosts ]; then
echo "No /var/qmail/control/rcpthosts!"
echo "Refusing to start SMTP listener because it'll create an open relay"
exit 1
fi
exec /usr/local/bin/softlimit -m 2000000 \
/usr/local/bin/tcpserver -v -R -l "$LOCAL" -x /etc/tcp.smtp.cdb -c "$MAXSMTPD" \
-u "$QMAILDUID" -g "$NOFILESGID" 0 smtp /var/qmail/bin/qmail-smtpd 2>&1
Create the concurrencyincoming control file:
- echo 20 > /var/qmail/control/concurrencyincoming
- chmod 644 /var/qmail/control/concurrencyincoming
Create the /var/qmail/supervise/qmail-smtpd/log/run file:
- cat >/var/qmail/supervise/qmail-smtpd/log/run
#!/bin/sh exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/smtpd
Make the run files executable:
- chmod 755 /var/qmail/supervise/qmail-send/run
- chmod 755 /var/qmail/supervise/qmail-send/log/run
- chmod 755 /var/qmail/supervise/qmail-smtpd/run
- chmod 755 /var/qmail/supervise/qmail-smtpd/log/run
Then set up the log directories:
- mkdir -p /var/log/qmail/smtpd
- chown qmaill /var/log/qmail /var/log/qmail/smtpd
Finally, link the supervise directories into /service:
- ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /service
sendmail の、代替コマンドをsymlink する。
- mv /usr/lib/sendmail /usr/lib/sendmail.old # ignore errors
- mv /usr/sbin/sendmail /usr/sbin/sendmail.old # ignore errors
- chmod 0 /usr/lib/sendmail.old /usr/sbin/sendmail.old # ignore errors
- ln -s /var/qmail/bin/sendmail /usr/lib
- ln -s /var/qmail/bin/sendmail /usr/sbin
smtp は、localhost のみ受け付ける。inject。
- echo '127.:allow,RELAYCLIENT=""' >>/etc/tcp.smtp
- qmailctl cdb
- (GVN番では、二行目に ":allow"があった。)
コントロール
- qmailctl stop
- qmailctl start
- qmailctl restart
- qmailctl reload
状態を見る
- qmailctl stat
- ps -efl | grep "service errors" | grep -v grep
- ps -efl | less #これで、見れるqmail関連のプロセスはこれ。
100 S root 904 1 0 69 0 - 540 wait4 19:05 ? 00:00:00 /bin/sh /command/svscanboot
000 S root 906 904 0 69 0 - 355 nanosl 19:05 ? 00:00:00 svscan /service
000 S root 907 904 0 69 0 - 343 pipe_w 19:05 ? 00:00:00 readproctitle service errors: ..................................................
000 S root 908 906 0 69 0 - 345 do_pol 19:05 ? 00:00:00 supervise qmail-send
000 S root 909 906 0 69 0 - 345 do_pol 19:05 ? 00:00:00 supervise log
000 S root 910 906 0 69 0 - 345 do_pol 19:05 ? 00:00:00 supervise qmail-smtpd
000 S root 911 906 0 69 0 - 345 do_pol 19:05 ? 00:00:00 supervise log
100 S qmails 912 908 0 69 0 - 358 do_sel 19:05 ? 00:00:00 qmail-send
100 S qmaill 913 909 0 69 0 - 348 pipe_w 19:05 ? 00:00:00 /usr/local/bin/multilog t /var/log/qmail
100 S qmaild 914 910 0 69 0 - 363 wait_f 19:05 ? 00:00:00 /usr/local/bin/tcpserver -v -R -l osho.maha.net -x /etc/tcp.smtp.cdb -c 20 -u 10
100 S qmaill 916 911 0 69 0 - 348 pipe_w 19:05 ? 00:00:00 /usr/local/bin/multilog t /var/log/qmail/smtpd
000 S root 921 912 0 69 0 - 348 do_sel 19:05 ? 00:00:00 qmail-lspawn ./Maildir
100 S qmailr 922 912 0 69 0 - 347 do_sel 19:05 ? 00:00:00 qmail-rspawn
100 S qmailq 923 912 0 69 0 - 346 pipe_w 19:05 ? 00:00:00 qmail-clean
Maildir
とりあえず、古いサーバの /etc/skel/Maildir の tar.gz を作って、それを展開した。ここに置いときます。 /root/ と、 /home/admin/ にも、主導で展開する必要ある?(確か、Maildirを作るコマンドがあったような)
- cd /etc/skel/
- zcat /home/admin/download/qmail/Maildir.tar.gz |tar x
メール送信テスト
mailto setux で、ローカルの送信を確認。 /var/log/qmail/current を見ると何をしてるか分かる。
# less /var/log/qmail/current
@400000003f3d871b3992e634 status: local 0/10 remote 0/20
@400000003f3d894e009383ac new msg 3948627
@400000003f3d894e00939734 info msg 3948627: bytes 313 from <root@osho2.ohah.net> qp 3187 uid 0@400000003f3d894e00e316c4 starting delivery 1: msg 3948627 to local admin@osho2.ohah.net
@400000003f3d894e00e32a4c status: local 1/10 remote 0/20
@400000003f3d894e01669ea4 delivery 1: success: did_1+0+0/
mailto setu@ohah.net で、リモートの送信を確認。
/var/log/qmail/current を見ると何をしてるか分かる。
@400000003f3d8c6a34bc57e4 new msg 3948627
@400000003f3d8c6a34bc6b6c info msg 3948627: bytes 456 from <root@osho2.ohah.net> qp 3318 uid 0@400000003f3d8c6a3502463c starting delivery 1: msg 3948627 to remote firak@ohah.net
@400000003f3d8c6a350255dc status: local 0/10 remote 1/20
@400000003f3d8c6a35026194 starting delivery 2: msg 3948627 to remote amano@ohah.net
@400000003f3d8c6a35026964 status: local 0/10 remote 2/20
@400000003f3d8c6a3506360c starting delivery 3: msg 3948627 to remote maha@ohah.net
@400000003f3d8c6a35064994 status: local 0/10 remote 3/20
@400000003f3d8c6a350c48bc starting delivery 4: msg 3948627 to remote setu@ohah.net
@400000003f3d8c6a350c5c44 status: local 0/10 remote 4/20
@400000003f3d8c6c2063f43c delivery 1: success: 202.220.156.65_accepted_message./Remote_host_said:_250_ok_1060950156_qp_14999/
@400000003f3d8c6c20640bac status: local 0/10 remote 3/20
@400000003f3d8c6c27c78e3c delivery 4: success: 202.220.156.65_accepted_message./Remote_host_said:_250_ok_1060950156_qp_15000/
@400000003f3d8c6c27c7ad7c status: local 0/10 remote 2/20
@400000003f3d8c6c2ad93724 delivery 3: success: 202.220.156.65_accepted_message./Remote_host_said:_250_ok_1060950156_qp_15001/
@400000003f3d8c6c2ad94e94 status: local 0/10 remote 1/20
@400000003f3d8c6c397d23e4 delivery 2: success: 202.220.156.65_accepted_message./Remote_host_said:_250_ok_1060950156_qp_15002/
@400000003f3d8c6c397d3f3c status: local 0/10 remote 0/20
@400000003f3d8c6c397d470c end msg 3948627
POP3 の設定
qmail-pop3d / qmail-popup を使う。qmailのRPMのインストール時に /var/qmail/bin/ に入っている。/bin/checkpassword を、使うことになっているが、乗っていないので、別にインストールする必要がある。
checkpassword を乗せる。
http://cr.yp.to/checkpwd.html http://cr.yp.to/checkpwd/install.html に、ファイルの在処、インストール方法がある。 したのコマンドを実行したら、インストールされる。root だけが実行出来るようにインストールされる。
- wget http://cr.yp.to/checkpwd/checkpassword-0.90.tar.gz
- zcat checkpassword-0.90.tar.gz|tar x
- cd checkpassword-0.90
- make
- sudo make setup check
/service/qmail-popup
/var/qmail/supervise/qmail-pop3d/run スクリプトを作る。
- mkdir -p /var/qmail/supervise/qmail-pop3d
- cat >/var/qmail/supervise/qmail-pop3d/run
#!/bin/sh
exec /usr/local/bin/softlimit -m 2000000 \
/usr/local/bin/tcpserver -v -R -H -l 0 0 110 /var/qmail/bin/qmail-popup \
FQDN /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir 2>&1
/var/qmail/supervise/qmail-pop3d/log/runスクリプトを作る。
- mkdir -p /var/qmail/supervise/qmail-pop3d/log
- cat >/var/qmail/supervise/qmail-pop3d/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t \
/var/log/qmail/pop3d
Set up the log directory and permissions on the run scripts, and link the service into /service:
- # chmod +t /var/qmail/supervise/qmail-pop3d # if daemontools < 0.75
- mkdir /var/log/qmail/pop3d
- chown qmaill /var/log/qmail/pop3d
- chmod 755 /var/qmail/supervise/qmail-pop3d/run
- chmod 755 /var/qmail/supervise/qmail-pop3d/log/run
- ln -s /var/qmail/supervise/qmail-pop3d /service
/var/qmail/bin/qmailctrl に、POP3D関係のスクリプトを追加する。 追加済のスクリプトを、ダウンロード可能なようにする予定。
内部でもメールを送ってみて、それをPOPしてみてテスト。 普通のメールソフトでPOPしたら良いです。
サーバの設定の移行
まず、ユーザを移行してから、設定を移行する。さもないと、設定の行き先がなくなるので、まず、ユーザの移行、ホームの移行をする。/var/qmail/ 以下の設定ファイルを現用のサーバからコピーすることで、 移行がより簡単になると思う。/var/qmail/control/に、設定ファイルが集まっている。 そのほか、ドメインの設定や、エリアスや、仮想ドメインの設定など。
まず、古いサーバから持って来るべきファイルを選ぶ。 /var/qmail/
- ファイルの展開
- cd ~admin/work
- mkdir qmail ; cd qmail
- mkdir osho zen
- cd osho
- zcat ~admin/ohah.net/osho/qmail.tar.gz |tar x -p --same-owner
- cd ../zen
- zcat ~admin/ohah.net/zen/qmail.tar.gz |tar x -p --same-owner
- 必要なフォルダー/ファイル:
- alias/*
- controls/
- なし。locals - マージ(自分の名前)
- rcpthosts - マージ(自分の名前)
- virtualdomains
![[メインページ]](http://now.ohah.net/upload/wiki.png)