qmail 1.03 立ち上げ

「pop before smtp」を設定したので、この時点で「実用すくりぷとん」は使えなくなっていました。 「skypl ML」にて色々方法を教わり、なんとか「実用すくりぷとん」を使えるようになりました。



2000年9月14日に qmail をインストールしました。 qmail のセキュリティホールは、発表当時からいまだに発見されていないそうです。 sendmail に比べると qmail はインストールが非常に簡単でした。 本当にこれだけで動くの!? というくらい設定がシンプルです。 私には超難解な sendmail.cf は理解できません。

でもコントロールファイルの rcpthosts にはまってしまったので、最初はなかなか動かず悩みましたが qmailの動作 を読んだら各コントロールファイルの意味が理解でき、動かすことができました。

各自のホームディレクトリに Maildir ディレクトリがありますが、ここに受信したメールが入ります。 自分のメール管理は自分でやってくれ!という管理者ラクチンモードにしてあります。

qmailを入れたのはMLをここで立ち上げるためです。 sendmail利用のMLでは50ユーザがせいぜい(メールが遅延する。)なので、コアを qmailにしたかったのです。 qmailなら1,000ユーザくらい全然平気です。 qmailは8つのプロセスが同時に動き、標準では40メールを同時処理できます。 MLソフトにはCMLを使います。 CMLは標準では sendmail を対象にしていますが、香川大学のチームが qmail用のパッチを発表しています。

pop before smtp も組み込みました。 smtp では認証機能がないのが問題で SPAM に使われたりします。 そこで smtp にも認証機能を持たせました。 smtp5pop を組み込んだので、pop 認証をした後10分間だけメールのリレー配信ができるようになります。 ですから、メール送信する前にメール受信をしていただくとスルーでどこへでもメール配信できます。 この結果、例えばモービル運用でもメーラーの smtp サーバを書き換えることなく nice.kaze.com の smtp を利用していただけます。

同時に smtp を使う 実用すくりぷとん も動作するよう、nice.kaze.com 内部からのメール発信が可能なように設定します。
  1. qmail のインストール
    nice# /usr/ports/mail/qmail
    nice# make install
    
  2. 確認
    nice# vipw
    
    で以下のユーザが追加されていることを確認
    alias:*:81:81::0:0:User &:/var/qmail/alias:/nonexistent
    qmaill:*:83:81::0:0:User &:/var/qmail:/nonexistent
    qmaild:*:83:81::0:0:User &:/var/qmail:/nonexistent
    qmailp:*:83:81::0:0:User &:/var/qmail:/nonexistent
    qmailq:*:83:81::0:0:User &:/var/qmail:/nonexistent
    qmailr:*:83:81::0:0:User &:/var/qmail:/nonexistent
    qmails:*:83:81::0:0:User &:/var/qmail:/nonexistent
    
  3. /var/qmail/control ディレクトリのファイルに以下の記述を設定。
    nice# cat defaultdomain
    nice.kaze.com
    
    nice# cat locals
    localhost
    nice.kaze.com
    
    nice# cat me
    nice.kaze.com
    
    nice# cat plusdomain
    nice.kaze.com
    
    nice# cat rcpthosts
    localhost
    nice.kaze.com
    
  4. postmaster, mailer-daemon, root 宛メールの処理の設定
    メール管理者のメールアドレスを設定する。
    nice# cd /var/qmail/alias
    
    nice# ll
    total 3
    -rw-r--r--  1 root  qmail  21 Sep 15 04:10 .qmail-mailer-daemon
    -rw-r--r--  1 root  qmail  21 Sep 15 04:11 .qmail-postmaster
    -rw-r--r--  1 root  qmail  21 Sep 15 04:11 .qmail-root
    
    nice# cat .qmail-mailer-daemon
    [email protected]
    
    nice# cat .qmail-postmaster
    [email protected]
    
    nice# cat .qmail-root
    [email protected]
    
  5. Maildir ディレクトリの作成
    これは各ユーザモードで行う。 root で作成した時は chown コマンドで各ユーザをオーナーとします。
    $ /var/qmail/bin/maildirmake $HOME/Maildir
    $ echo ./Maildir/ > ~/.qmail
    
    以上をユーザごとに行う。

  6. ブートスクリプトのコピー
    nice# cp /var/qmail/boot/home /var/qmail/rc
    
    このファイルは後で編集することになるが、一応。

  7. 確認
    /usr/local/etc/rc.d に qmail.sh があることを確認
    nice# ll /usr/local/etc/rc.d
    lrwxr-xr-x  1 root  wheel    13 Sep 10 05:13 qmail.sh -> /var/qmail/rc
    
    結局、qmail.sh は /var/qmail/rc そのものなんだ!
    ports インストールしているので、ただ感心すればよろしい。

  8. sendmail の停止と無効化
    nice# ps -ax | grep sendmail
    nice# kill 
    
    nice# chmod 0 /usr/sbin/sendamail
    nice# mv /usr/sbin/sendmail /usr/sbin/sendmail.orig
    
  9. えせ sendmail の設定
    nice# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
    
    qmailは、えせ sendmail を持っているのだ!

  10. binmail の無効化
    nice# chmod 0 /usr/bin/mail
    
  11. おまじない
    本当にこれが必要かどうか???だけど、おまじない。 /etc/rc.conf に
    sendmail_enable="NO"
    
    を追加

  12. tcpserver のインストール
    tcpserverはinetd.confより頑丈でIPフィルタリングができます。
    nice# cd /usr/ports/sysutils/ucspi-tcp
    nice# make install
    
    /usr/local/bin/tcpserver ができるはずです。

  13. tcpserver が使う smtp 関連データベースの作成
    内部からのメール発信が常に可能なように smtp関連データベースを作成します。

    1. /etc/tcp.smtp を以下のように記述します。 「211.7.156.112」は nice.kaze.com のIPアドレスです。 tcpserver を IPパケットが通過する時、nice.kaze.com または localhost からの IPパケットなら RELAYCLIENT=ON として通過させ、それ以外の IPパケットは RELAYCLIENT=OFF として通過させる設定です。
      nice# cat /etc/tcp.smtp
      
      211.7.156.112:allow,RELAYCLIENT=""
      127.:allow,RELAYCLIENT=""
      :allow
      
    2. /etc/tcp.smtp をデータベース化します。 /etc/tcp.smtp.cdb というデータベースが出来上がります。
      nice# /usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
      
  14. checkpassword をインストール
    checkpassword はpop3 認証の時に ID とパスワードをチェックします。
    nice# cd /usr/ports/security/checkpassword
    nice# make install
    
    /usr/local/bin/checkpassword ができるはずです。

  15. pop5smtp
    pop5smtp は pop before smtp を行います。 pop認証してから10分間だけsmtpが有効になります。 pop5smtpは かみやさとし さんのホームページ から入手します。 私は /usr/ports/mail/smtp5pop ディレクトリを作成してここに解凍しました。
    nice# mkdir /usr/ports/mail/smtp5pop
    nice# cp pop5smtp.tar.gz /usr/ports/mail/smtp5pop
    nice# cd /usr/ports/mail/smtp5pop
    nice# tar -xzvf pop5smtp.tar.gz
    
    いろいろファイルができますが、Makefileの以下の記述を変更します。
    変更前:install -c -m 2711 -o qmaild -g nofiles pop5smtp /var/qmail/bin/
    変更後:install -c -m 2711 -o qmaild -g qnofiles pop5smtp /var/qmail/bin/
    
    nice# make install
    
    /var/qmail/bin/pop5smtp ができるはずです。 以下のファイルを作成・変更します。
    nice# touch /var/qmail/pop5smtp.db
    nice# chown qmaild /var/qmail/pop5smtp.db
    nice# chgrp qnofiles /var/qmail/pop5smtp.db
    nice# chmod 664 /var/qmail/pop5smtp.db
    
    nice# chgrp qnofiles /var/qmail/bin/pop5smtp
    nice# chmod 2711 /var/qmail/bin/pop5smtp
    
  16. /var/qmail/rc の変更
    以下のように /var/qmail/rc を変更します。 「-u 81 -g 81」は
    nice# id alias
    uid=81(alias) gid=81(qnofiles) groups=81(qnofiles)
    
    で調べた uid, gid です。
    nice# cat /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&
    
    # for SMTP server
    /usr/local/bin/tcpserver -R -H -l0 -u 81 -g 81 \
    -x /etc/tcp.smtp.cdb \
    0 smtp /var/qmail/bin/pop5smtp \
    /var/qmail/bin/qmail-smtpd &
    
    # for POP3 server
    /usr/local/bin/tcpserver -R -H -l0 0 pop3 \
    /var/qmail/bin/qmail-popup `/bin/hostname` \
    /usr/local/bin/checkpassword \
    /var/qmail/bin/pop5smtp \
    /var/qmail/bin/qmail-pop3d Maildir &
    
  17. adduser でユーザ追加をした時に自動的に Maildir の設定をする
    nice# /var/qmail/bin/maildirmake /usr/share/skel/Maildir
    nice# ls /usr/share/skel
    Maildir                 dot.login               dot.mail_aliases
    dot.profile             dot.shrc        dot.cshrc
    dot.login_conf          dot.mailrc              dot.rhosts
    
    このディレクトリに dot.qmailファイルを作成し、以下の記述を入れる。
    nice# cat /usr/share/skel/dot.qmail
    ./Maildir/
    
  18. メールの保存期限を30日にする
    /var/qmail/control/queuelifetime ファイルを作成し、以下の記述を入れる。 数値の単位は秒です。
    nice# cat /var/qmail/control/queuelifetime
    2592000
    
  19. リブートして確認
    mail address: [email protected]
            pop3: nice.kaze.com
            smtp: nice.kaze.com
    
    pop3認証をしないとsmtpが使えないことを確認します。 後はメールの送受信テストです。


qmailについてのアナウンスです。
  1. qmail は sendmail を持っている。
    qmail は sendmail のエミュレータを持っています。 このため、ごく普通に sndmail コマンドを呼び出すとそのままメール送受信できます。 私はこのおかげで、webform.cgi のスクリプトを書き直さなくて済みました。 webform.cgi とは私のホームページ下のメッセージを送るフォームです。

  2. dot-qmailについて
    dot-qmail とはホームディレクトリにある .qmail ファイルのことです。 このファイルで qmail のコントロールができるのですが、メールフォワードについてだけお知らせします。 もっと詳しい情報は http://www2.jp.qmail.org/q103/jman5/dot-qmail.html をご覧ください。