Linuxサーバ設定備忘録
本文へジャンプ
  tcpserverによるqmailの起動

tcpserverとは

tcpserver は D.J.Bernstein 氏作のサーバ制御ツールで ucspi-tcp というパッケージに入っています。 UCSPI とは DJB 氏が提案している UNIX Client-Server Program Interface という TCP/IP のクライアント・サーバ通信ツールの インターフェースの仕様です。また、接続制御のために同氏作のデータベースファイル(cdb) を用います。 cdbを用いてユーザ名、IPアドレス、ドメイン名を元にメールの転送、受信の制御を行うことができます。通常qmailを利用する場合は、 このtcpserver経由で動作させます。


書式
 構文
 tcpserver [option] [host] [port] [program]
 オプション
 -1 受信準備が完了した後に標準出力にローカルポート番号を出力する。
 -p ホスト名を調べた後、逆引きを問い合わせ、IPアドレスが一致しない場合、$TCPREMOTEHOSTを設定しない
 -P ホスト名を調べた後、逆引きを問い合わせない
 -h 接続元のホスト名をDNSに問い合わせて、結果を $TCPREMOTEHOST に格納する
 -H 接続元のホストをDNSに問い合わせない
 -r 接続元ホストから $TCPREMOTEINFO を取得する
 -R 接続元ホストから $TCPREMOTEINFO を取得しない
 -q エラーメッセージを出力しない
 -Q エラーメッセージを出力する
 -v エラーメッセージとステータスメッセージを出力する
 -c 同時に起動できる接続数の上限を指定
 -x cdb ファイルに指定されたルールに従う
 -B 接続時にバナーを出力する
 -g ポートを受け付けるグループID
 -u ポートを受け付けるユーザID
 -b TCP SYNのバックログを許可する。SYN cookies をサポートしているシステムでは、バックログは無意味。
 -l DNSでローカルホスト名を調べない。環境変数 $TCPLOCALHOST には localname を使用
 -t 指定した秒後に、$TCPREMOTEINFO 接続を停止する(デフォルトは26秒)

インストール

tcpserverをダウンロードします(ダウンロード時バージョン0.88)


ダウンロードしたファイルを解凍します

# tar zxvf ucspi-tcp-0.88.tar.gz

解凍してできたフォルダに移動します

# cd ucspi-tcp-0.88

error.hの4行目を編集します

# vi error.h
4行目の extern int errno; →#include <errno.h>に変更

インストールします

# make setup check

接続制限をする為に使用されるcdbファイルの基になるファイルを作成します

# vi /etc/tcp.smtp
192.168.1.:allow,RELAYCLIENT=""
127.:allow,RELAYCLIENT=""

作成した/etc/tcp.smtpを基にcdbファイルを作成します

# /usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

tcpserverを利用してqmailを起動するスクリプトを作成します

# cd /etc/init.d
# touch qmail
# chmod 755 qmail
# vi qmail

作成した/etc/init.d/qmailの内容
(※-uには[qmaildのUID]、-gには[nofilesのGID]を指定します。今回はそれぞれ505、511として設定しています)

#!/bin/sh
#
# chkconfig: 345 99 01
# description: qmail is a Mail Transport Agent,which is the program
# that moves mail from one machine to another.

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

[ -f /var/qmail/rc ] || exit 0
case "$1" in
   start)
      # Start daemons.
      echo "Starting qmail."
      csh -cf '/var/qmail/rc &'
      tcpserver -v -u 505 -g 511 -x /etc/tcp.smtp.cdb \
      0 smtp /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 3 &
      echo
      touch /var/lock/qmail
      ;;
   stop)
      # Stop daemons.
      echo "Shutting down qmail."
      PID=`/bin/ps -aefw | grep qmail | awk '{print $2}'`
      if [ ! -z "$PID" ] ; then
         /bin/kill ${PID} 1> /dev/null 2>&1
      fi
      echo
      rm -f /var/lock/qmail
      ;;
   *)
      echo "Usage: S99qmail {start|stop}"
      exit 1
esac

exit 0


OS起動時に自動起動するように設定します

# chkconfig --add qmail
# chkconfig --level 345 qmail on

起動・停止方法

起動方法

# /etc/init.d/qmail start

停止方法

# /etc/init.d/qmail stop



Copyright©2006 Linuxサーバ設定備忘録 All Rights Reserved.