Qmail-制御スクリプト

fg. > サーバー構築 > RedHat系 > Qmail > 制御スクリプト

概要

Qmailの本体、SMTP、POP3ようの制御スクリプト(qmail, qmail-smtpd, qmail-pop3d)を準備します。smtpdとpop3dはtcpserverを経由して起動します。起動スクリプトは全て/etc/rc.d/init.d/に配置します。

qmail-smtpd用の設定ファイルの準備

メールサーバが踏み台にされないように、tcpserverのsmtpd用ルールファイルを作成します。テキストファイルにルールを記述したルールをtcpserverが使用するcdb形式に変換します。ファイル名はそれぞれ、
元テキスト: /etc/service/tcp.smtp
CDBファイル: /etc/service/tcp.smtp.cdb
とします。

tcp.smtpの作成

# mkdir /etc/service
# vi /etc/service/tcp.smtp
ループバックからのみ環境変数RELAYCLIENTをセットしてallow、それ以外の場合は単にallowに設定します。
127.0.0.1:allow,RELAYCLIENT="" :allow
これでローカルからは認証無しでメールの送信可能、外部からはこのサーバへのメールは常に受付、送信は認証が必要になります。 メールサーバだけでなくローカルネットワーク全体(192.168.0.0./24とします)を認証不要にしたい場合は次のように設定します。
127.0.0.1:allow,RELAYCLIENT=""
192.168.0.:allow,RELAYCLIENT=""
:allow

tcp.smtp.cdbの作成

tcp.smtpからtcp.smtp.cdbを作成します。
# tcprules /etc/service/tcp.smtp.cdb\
> /etc/service/tcp.smtp.tmp < /etc/service/tcp.smtp
書式は次の通りです。
tcprules 生成するcdbファイル 一時ファイル < ルールファイル

qmailの作成

Qmail本体の起動スクリプト/etc/rc.d/init.d/qmailを作成します。Qmail本体のデーモンはqmail-startで起動します。書式は次の通りです。
起動書式:qmail-start デフォルト配送先 splogger log_prefix [log_facility]
デフォルト配送先はMaildirなら./Maildir/
log_prefix はログに付ける接頭辞
log_facility(省略可能)にはsyslogファシリティを数字で指定
log_facility を省略した場合のデフォルトは、「2 :mail」になる
例)qmail-start ./Maildir/ splogger qmail &
作成済みのqmailの制御スクリプト:/etc/rc.d/init.d/qmail

tcpserverの説明

前述の通りsmtpdとpop3dはtcpserver経由で起動します。tcpserverの書式は次の通りです。
tcpserver options host port program [ arg ... ]
opetions
 -v すべてのメッセージを出力
 -u uid uidのユーザで実行
 -g gid gidのグループで実行
 -P パラノイドを行わない(default)
 -H DNSを逆引きをしない
 -R identしない
 -x cdb cdbデータベースで制御する
 -c limit 最大同時接続数をlimitに設定する(default:40)
 -P 逆引き、正引きで相手の正当性を調査する
 大文字のオプションは小文字にすると逆の意味になります
host
 指定しない場合は0
port
 ポートまたはサービス名

qmail-smtpdの作成

Qmail Smtpdの起動スクリプト/etc/rc.d/init.d/qmail-smtpdを作成します。Qmail Smtpdのデーモンはqmail-smtpdで起動します。書式は次の通りです。
起動書式:qmail-smtpd サーバ名 パスワードチェックプログラム trueを返すプログラム
tcpserverを使用して起動する例:
 tcpserver -H -R -u $QMAILDUID -g $QMAILDGID \
 -x /etc/service/tcp.smtp.cdb 0 smtp \
 qmail-smtpd $MYSVNAME /bin/selectcheckpw /bin/true \
 2>&1 | /var/qmail/bin/splogger qmail-smtpd &
selectcheckpwは必要に応じて別の認証プログラムに変更出来ます。最後の行は標準出力、エラー出力をsploggerを使ってsyslogに出力しています。
作成済みのqmail-smtpdの制御スクリプト:/etc/rc.d/init.d/qmail

qmail-pop3dの作成

Qmail POP3Dの起動スクリプト/etc/rc.d/init.d/qmail-pop3dを作成します。Qmail POP3Dのデーモンは、POPユーザ名とパスワードを待つqmail-popup、実際のPOPセッションを司るqmail-pop3dから成ります。それぞれの書式は次の通りです。
起動書式:qmail-popup サーバ名 パスワードチェックプログラム
起動書式:qmail-pop3d Maildir名
 Maildir名は通常は単に "Maildir"
tcpserverを使用して起動する例:
 tcpserver -H -R -v 0 pop3 \
 qmail-popup $MYSVNAME /bin/selectcheckpw \
 qmail-pop3d Maildir \
 2>&1 | splogger qmail-pop3d &
$MYSVNAME はメールサーバ公開名です。
作成済みのqmailの制御スクリプト:/etc/rc.d/init.d/qmail-pop3d

制御スクリプトの登録

作成した、qmail, qmail-smtpd, qmail-pop3d/etc/rc.d/init.d/に配置してあるとします。アクセス権を755に設定して、サーバの起動時に自動的に起動するように設定します。
# chmod 755 qmail*
# chkconfig --add qmail
# chkconfig --add qmail-smtpd
# chkconfig --add qmail-pop3d