メインページ | 最近の更新 | ページを編集 | 履歴 |

印刷用の表示

54.224.164.166 (Talk)
ログイン | ヘルプ

Qmailの乗せ方

Oh!Ah!Now! Wombat - 自由なバザール

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が使える。 書いてあるライブラリも載っている。

このやり方は、redhat 9 には適用できない模様。ソースか、ソースのRPMにパッチを当てながら乗せる必要がある。

特に説明がなかったら作業は root でやっている。

sudo su -
で、root になれる。

前準備

NISのファイルを消すとのことだけど、中身は空だった。
rm -f /var/yp/binding/*
sendmail を、取り除く。 取り除くのは、結構あとでも良いのかも知れない。 RPMがsendmailのファイルを上書きすることはないと思うが、確認はしていない。今回は、まだ、サーバが実用で動いていないので、そそくさと消してからインストールという手順にする。

sendmail で、運用していたサーバを qmail へ動的に門だいなく移行することも出来るようすで、解説がある。その場合は

/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 を持って来る。
wget http://qmail.org/rpms/var-qmail/qmail-1.03-109memphis.src.rpm

それから、インストール。

これは、ソース形式のRPMなので、一部ビルドする。
rpm --rebuild qmail-1.03-109memphis.src.rpm
このとき、/etc/passwd と、/etc/groups などが書き込まれて、Qmailが使うユーザが作られる。ためしにユーザIDのコントロールをしようと、いろいろと試したけど、無理みたい。ユーザを作ってそのUIDとGIDが、インストールする実行ファイルに書き込まれる。

実際のインストールは、このコマンド:

    [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は サーバとしては動かない。

実行用の設定

解説:(単にインストールするためには、これを読む必要はないです)。 実行用のパッケージをいれる方法が二つある。
  1. 上のサイトにあるRPMを使ったやり方
    • RPMをただ乗せて行ったらいいみたいだけど、「アルファ」だって書いてあるのと、GVNのやり方とはちょっと違う。
    • DNSサーバをbind から置き換えるやり方が基本になっている。これは、見ながら除外しても良いかも知れない。
  2. Life With Qmail というサイトのやり方。
    • かなり、手でファイルを作ったり編集したりする必要がある。
    • でも、一度やってしまったら、ファイルをサーバ間でコピーしたり、自動的にするスクリプトを作るのは簡単だと思う。
やり方は、上のサイトにある dt-run は使わない。"Life with Qmail" というサイトに書いてあるやり方に従う。これが、GVNのインストールにとても近い。 http://qmail.org/rpms/qmail-run/ に、ファイルが揃ってる。 基本の説明は http://qmail.org/rpms/qmail-run/INSTRUCTIONS においてある。 これが言うのは、三つのパッケージのインストール:
  1. daemontools-0.76-2memphis.i386.rpm
    1. これは、inetd のようにデーモンを走らせる。inetd, xinetd と共存する。
  2. ucspi-tcp-0.88-003memphis.i386.rpm
    1. これは、TCPラッパー。GVNではこれを使って qmailのサーバ(デーモン)各種を動かしていた。(これはプロセス:デーモンの監視用やログの関係かも)
sjbdnsは、必要ない。これは、全くのDNSサーバなので、bindを置き換える。僕等はとりあえず、bindをDNSサーバとして使う。 GVNのやり方: GVNの立ち上がりは、scscan を使ってる。/etc/inittab の最後に
SV:123456:respawn:/command/svscanboot
があって、これから全部が始まる。 (これは、Life with Qmail <http://web.infoave.net/~dsill/lwq.html>; に書いているやり方と同じ。この文書を参考にしていれているかも知れない。 sjbdns を使ってる気配はないし、第一、bind が走っている。 sjbdns なしでしたら良いのでは? ちょっと、RPMじゃない、立ち上がりの仕方を調べてみる。

実行管理用の追加ソフトのインストール

http://qmail.org/rpms/qmail-run/ から、daemontool と、ucspi-tcp を、乗せる。

            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%]
                +  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 方式をディフォルトにする。

ログディレクトリー作成:

コントロールスクリプト

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 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/

その他

このあと、Webmin を乗せたら、Webmin から qmail の設定が確認できる。 ローカルのテストマシンでうまく行くことを確認。 (webmin の qmail のパネルから、qmail の 停止/開始がちゃんとうまく行くのを確認。GVNの設定ではうまく行かなかったの。

[メインページ]
メインページ
最近の更新
おまかせ表示
最近の出来事
ページを編集
記事の会話
履歴
リンク元
リンク元の更新
特別ページ
バグの報告