install-next


installができたら

  • /var/qmail以下にaliasなどその他のファイルがあることを確認してください
  • 練習用にtestuserアカウントを作成します
    • #adduser -s /bin/bash -d /home/testuser -c qmailtest testuser
    • #mkdir /home/testuser ; chown testuser /home/testuser

Tcpserverをinstall

#cd /usr/local/src/
#tar -xzf tar/ucspi-tcp-0.88.tar.gz
#cd ucspi-tcp-0.88
#make
#make setup check
  • 以上ですがgentooではerror.hファイルを編集しないとダメでした
    #emacs error.h
  • extern int errno;→#include<errno.h>に変更
    • これはRH9や最新のディストリによく起こる現象です
  • cdb用のファイルを作成します
# vi /etc/tcp.smtp 
192.168.0.:allow,RELAYCLIENT=""
127.:allow,RELAYCLIENT="" 
  • このままではASCIIテキストなので変換
# /usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
  • init.dを再起動
    • # tcpserver -v -u[qmaildのUID] -g[nofilesのGID]-x /etc/tcp.smtp.cdb 0 smtp /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 3 &
  • それぞれのランレベルで動作させるように
# ln -s /etc/rc.d/init.d/qmail /etc/rc.d/rc2.d/S99qmail
# ln -s /etc/rc.d/init.d/qmail /etc/rc.d/rc3.d/S99qmail
# ln -s /etc/rc.d/init.d/qmail /etc/rc.d/rc5.d/S99qmail
  • Gentoo的にはrcなんたらがないので
#ln -s /etc/init.d/qmail /etc/runlevels/default/qmail
  • と簡単すっきり

コントロールファイルの編集

  • 次に、動作に必要な設定を見ていきます

・defaultdomain

example.jp

toヘッダなどにドメイン名が省略された場合、補完されるドメイン名

・locals

localhost

localhost.example.jp

host.example.jp

example.jp

受信するホスト名・ドメイン名:qmail-sendが利用

・rcpthosts

localhost

example.jp

.example.jp

受信するホスト名・ドメイン名:qmail-smtpdが利用

・me

host.example.jp

自サーバのFQDN

・plusdomain

example.jp

ドメイン部が+で終わっている場合に付加されるドメイン。

「user@host+」なら「user@host.example.jp」と置換される(qmal-injectが利用)

 

  • 設定が整ったところで、起動の準備を行います。まずpostmaster、MAILER-DAEMON、rootといった重要なアカウントに対する配信の設定です。
# cd /var/qmail/alias
# touch .qmail-postmaster .qmail-mailer-daemon .qmail-root .qmail-testuser
# chmod 644 .qmail*  
  • これでpostmaster、MAILER-DAEMON、root、testuserあてのメールは/var/qmail/aliasに保存されます。

動作確認

  • 起動スクリプトを用意し、実行します。/var/qmail/boot/homeを/var/qmailにrcという名前でコピーします。
# cp /var/qmail/boot/home /var/qmail/rc
  • できたrcファイルを以下の用に編集
qmail-start ./Mailbox splogger qmail 
qmail-start ./Maildir/ splogger qmail 
# /var/qmail/bin/maildirmake ~alias/Maildir
# chown -R alias /var/qmail/alias/Maildir
  • もしMaildir形式でuserに作成を忘れてもmbox形式で自動的にmailが届いたら作成されます
  • 各userがMaildirを作成する必要があります
  • testuserで$ /var/qmail/bin/maildirmake ~/Maildir
  • 毎回作成したりお願いするのも効率が悪いので雛型にします
# /var/qmail/bin/maildirmake /etc/skel/Maildir
  • Maildirの下には以下のようなdirectoryが
cur/  new/  tmp/

testmailしてみる

  • 念のため
    • # tcpserver -v -u[qmaildのUID] -g[nofilesのGID]-x /etc/tcp.smtp.cdb 0 smtp /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 3 &
#/var/qmail/rc &
  • testuserにmailを出しましょう
#echo to: testuser@host.example.jp | /var/qmail/bin/qmail-inject
  • 無事Maildirの仲のnew以下にmailが届いたと思います
  • rootでtestuserのMaildirを作った人はchown -R してくいださい

POP before SMTP

$ tar xvfz .relay-ctrl-2.5.tar.gz
$ cd relay-ctrl-2.5/ 
  • インストール先を変更する場合はdefines.hを編集します。ここではデフォルトのままにし、引き続きmakeとインストールを行います。README参照
  • とほとんど@ITのままですがgentoo向きに多少改良。
$ make
# ./installer
  • 続いて設定ファイルを作成します。
# mkdir /etc/relay-ctrl
# mkdir /var/qmail/relay-ctrl
# mkdir /var/qmail/relay-ctrl/spool
# cd /etc/relay-ctrl/
# echo '900' > expiry
# echo ":allow,RELAYCLIENT=''" > rule (*)
# echo '/etc' > rulesdir
# echo 'tcp.smtp.cdb' > smtpcdb
# echo 'tcp.smtp' > smtprules
# echo '/var/qmail/relay-ctrl/spool' > spooldir
# echo '/usr/local/bin/tcprules' > tcprules 
* ダブルクオートを使用している点に注意 
  • /etc/relay-ctrl下に生成されたファイルには、次のような意味があります。
expiry
RealyをオープンにしたIPアドレスを記録したファイルの寿命。デフォルトは900秒。
rule
POPで接続してきたIPアドレスに付加するルール。
当然Relayを許可しなくてはいけないので「:allow,RELAYCLIENT=''」となります。
rulesdir
cdbファイルとその基になるテキストファイルが収められているディレクトリ。
デフォルトは「/etc/tcpcontrol」。
smtpcdb
更新するcdbファイル名。デフォルトは「smtp.cdb」。
smtprules
cdbの基になるテキストファイル。前回tcpserverのインストール時に使用したtcp.smtp 
に当たります。デフォルトは「smtp.rules」。
spooldir
Relayを許可したIPアドレスを記録しておくスプール。デフォルトは「/var/spool/relay-ctrl」。
tcprules
tcprulesコマンドのパス。デフォルトは「/usr/bin/tcprules」。 
次に、spoolにたまったIPアドレスの記録を定期的に削除する
指示をcrontabに追加します。
# crontab -e 
  • として、下記の行を追加します。
* * * * * /usr/sbin/relay-ctrl-age 
  • これで、記録を整理するプログラムを毎分起動するようになります。このプログラムにより、expiryで指定された保存期間を過ぎた記録を消去できます。
  • 次にqmailスクリプトを変更します。
 start) 
   〜省略〜 
tcpserver -v 0 pop3 /var/qmail/bin/qmail-popup  [サーバのFQDN] [認証ログラム] 
/usr/sbin/relay-ctrl-allow /var/qmail/bin/qmail-pop3d Maildir 2>&1  
| /var/qmail/bin/splogger pop3d 3 & 
       echo 
       touch /var/lock/qmail 
       ;; 
 stop) 
   〜省略〜
  • 注:[認証プログラム]には、ここで紹介した
/bin/checkpassword
/bin/checkpw
/bin/checkapoppw
/bin/selectcheckpw
  • を用途によって指定します。
  • また、ここでは/usr/sbin/relay-ctrl-allowがroot権限で起動されていますが、さらにセキュリティを高めるため、専用のユーザーを使用することをお勧めします。その場合は下記の作業を行います。
  • /var/qmail/relay-ctrlをホームディレクトリに持つユーザーrelay-ctrlを作成し、ホームディレクトリのオーナーを変更します。
# adduser -d /var/qmail/relay-ctrl -s /bin/false relay-ctrl
# chown -R relay-ctrl /var/qmail/relay-ctrl
  • relay-ctrl-allowコマンドの所有者を変更し、もう一度setuidします。
# chown relay-ctrl /usr/sbin/relay-ctrl-allow
# chmod u+s /usr/sbin/relay-ctrl-allow 
  • cdbファイルもユーザーrelay-ctrlによって上書きできる必要があるため、/etc/tcp.cdbから書き込み可能な/var/qmail/relay-ctrl/tcp.smtp.cdbに変更します。
# cp /etc/tcp.smtp /var/qmail/relay-ctrl/.
# echo '/var/qmail/relay-ctrl' > /etc/relay-ctrl/rulesdir 
  • cdbファイルのパスが変更になるため、qmail-smtpを起動するtcpserverの起動方法も変更する必要があります。
 start) 
   〜省略〜 
    tcpserver -v -u[qmaildのUID] -g[nofilesのGID] -x /var/qmail/relay- 
ctrl/tcp.smtp.cdb 0 smtp \ 
       /var/qmail/bin/qmail-smtpd 2>&1  | /var/qmail/bin/splogger smtpd 3 & 
       tcpserver -v 0 pop3 /var/qmail/bin/qmail-popup [サーバのFQDN] [認証プロ 
グラム] \ 
          /usr/sbin/relay-ctrl-allow /var/qmail/bin/qmail-pop3d Maildir 2>&1  
| /var/qmail/bin/splogger pop3d 3 & 
       echo 
       touch /var/lock/qmail 
       ;; 
 stop) 
   〜省略〜 
  • qmailを再起動し動作の確認を行いましょう。受信を行う前に送信を行ってみたり、受信・送信を順番に行うなど、POP Before SMTPの挙動を確認してみましょう。