2011年03月30日
[Linux] CentOS5でメールサーバ構築(qmail + tcpserver + libev + vpopmail + qmail-conf + daemontools)
何度かqmailでメールサーバを構築している割には手順を理解していなかったので、まとめてみました。構築手順の概要は以下です。
1.qmailのインストールと設定daemontoolsを使用しないなら4まで、更に複数ドメインで運用しないなら2まで設定します。
2.tcpserverのインストールと設定
3.libevのインストール
4.vpopmailのインストールと設定
5.qmail-confのインストール
6.daemontoolsのインストールと設定
7.daemontoolsでのqmail運用
1.qmailのインストールと設定
・qmail用ディレクトリ作成、グループ作成、ユーザ作成
# mkdir /var/qmail・qmail、パッチのダウンロード
# groupadd nofiles
# useradd -g nofiles -d /var/qmail/alias -s /bin/false alias
# useradd -g nofiles -d /var/qmail -s /bin/false qmaild
# useradd -g nofiles -d /var/qmail -s /bin/false qmaill
# useradd -g nofiles -d /var/qmail -s /bin/false qmailp
# groupadd qmail
# useradd -g qmail -d /var/qmail -s /bin/false qmailq
# useradd -g qmail -d /var/qmail -s /bin/false qmailr
# useradd -g qmail -d /var/qmail -s /bin/false qmails
# cd /usr/local/src/・qmail解凍、パッチ適用、コンパイル、インストール
# wget http://qmail.org/netqmail-1.06.tar.gz
# wget http://qmail.org/qmail-smtpd-relay-reject
# wget http://www.tymy.net/~matsu/blog/wp-content/uploads/2008/03/qmail-date-localtime.patch
# tar xvfz netqmail-1.06.tar.gz・コントロールファイルの編集、作成
# cd netqmail-1.06
# patch -p1 < ../qmail-date-localtime.patch
# patch -p1 < ../qmail-smtpd-relay-reject
# make setup
# make check
# ./config-fast example.com
# cd /var/qmail/control/
# vi locals
localhostlocalhostを追加する。
example.com
# vi rcpthosts
localhostlocalhostを追加する。
example.com
・重要エイリアスの作成と転送先の設定
# cd /var/qmail/aliaspostmasterとmailer-daemon宛のメールはrootへ転送。root宛のメールは外部メールアドレスへ転送。
# touch .qmail-postmaster .qmail-mailer-daemon .qmail-root
# chown alias:qmail .qmail-postmaster .qmail-mailer-daemon .qmail-root
# echo root > .qmail-postmaster
# echo root > .qmail-mailer-daemon
# echo foo@example.com > .qmail-root
・sendmailの停止とラッパー
# /etc/rc.d/init.d/sendmail stop他のsmtpサーバが起動しているとqmailでメールが送信できないので、sendmailが起動していたら停止させる。
# mv /etc/rc.d/rc2.d/S80sendmail /etc/rc.d/rc2.d/_S80sendmail
# mv /etc/rc.d/rc3.d/S80sendmail /etc/rc.d/rc3.d/_S80sendmail
# mv /etc/rc.d/rc5.d/S80sendmail /etc/rc.d/rc5.d/_S80sendmail
# cd /usr/sbin
# mv sendmail sendmail.dist
# chmod 0 sendmail.dist
# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
また、sendmailが起動されたら、qmailが起動するように設定する。
・dovecot(POP3サーバ等の停止)
# /etc/rc.d/init.d/dovecot stop他のpop3サーバが起動しているとqmailでメールが受信できないので、dovecotが起動していたら停止させる。
# /sbin/chkconfig --list | grep dovecot
# /sbin/chkconfig --level 2345 dovecot off
・Maildirディレクトリの作成
# /var/qmail/bin/maildirmake ~alias/Maildir・qmail起動スクリプトの作成
# chown -R alias /var/qmail/alias/Maildir
# /var/qmail/bin/maildirmake /etc/skel/Maildir
# cp /var/qmail/boot/home /var/qmail/rc
# vi /var/qmail/rc
#!/bin/sh./Mailboxを./Maildir/に変更する。
# 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
・qmailの起動と動作確認
# /var/qmail/rc &
# echo to: root@example.com | /var/qmail/bin/qmail-inject
# kill [プロセス番号]
2.tcpserverのインストールと設定
・tcpserverのダウンロード
# cd /usr/local/src/・tcpserverのインストール(netqmail-1.06のソースが必要)
# wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
# tar xvfz ucspi-tcp-0.88.tar.gz・cdbの作成
# cd ucspi-tcp-0.88
# patch -p1 < ../netqmail-1.06/other-patches/ucspi-tcp-0.88.errno.patch
# make setup check
# cd /etc・tcpserver起動スクリプトの作成
# echo '192.168.:allow,RELAYCLIENT=""' > tcp.smtp
# echo '127.:allow,RELAYCLIENT=""' >> tcp.smtp
# echo 'xxx.xxx.xxx.xxx:allow,RELAYCLIENT=""' >> tcp.smtp
# echo ':allow' >> tcp.smtp
# /usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
# id qmaild
uid=502(qmaild) gid=501(nofiles) 所属グループ=501(nofiles)uidとgidの数値を確認する。上記の例ではuidが502、gidが501。
# vi /etc/rc.d/init.d/qmail
#!/bin/sh先程確認したuidとgidの数値を設定する。
#
# qmail: /var/qmail
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 502 -g 501 -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
・tcpserverの起動と動作確認
# chmod 755 /etc/rc.d/init.d/qmail外部からroot@example.com宛にメールを送信し、受信できるか確認する。
# 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
# /etc/rc.d/init.d/qmail start
3.libevのインストール
vpopmail-5.5.0の./configureでの「WARNING:libev not found」を回避する。
・libevのダウンロード
# cd /usr/local/src/・libevをインストール
# wget http://dist.schmorp.de/libev/libev-4.04.tar.gz
# tar xvfz libev-4.04.tar.gz
# cd libev-4.04
# ./configure && make && make install
4.vpopmailのインストールと設定
・vpopmail用グループ作成、ユーザ作成
# groupadd -g 89 vchkpw・vpopmail用コントロールファイルの作成
# useradd -g vchkpw -u 89 vpopmail
# touch /var/qmail/control/virtualdomains・vpopmailのダウンロード
# cd /usr/local/src/・vpopmailの解凍
# wget http://sourceforge.net/projects/vpopmail/files/vpopmail-devel/5.5.0/vpopmail-5.5.0.tar.bz2/download
# cd /usr/local/src/・認証系モジュールのインストール
# tar xvfj vpopmail-5.5.0.tar.bz2
# cd vpopmail-5.5.0/backends/cdb./vadddomainでの「Error - no authentication module loaded.」を回避する。
# ./configure && make && make install
・vpopmailのコンパイル、インストール
# cd /usr/local/src/vpopmail-5.5.0・フォルダのアクセス権限の変更
# ./configure --prefix=/home/vpopmail --enable-roaming-users=y --enable-relay-clear-minutes=15 --disable-clear-passwd --enable-logging=y
# make
# make install-strip
# chmod 755 /home/vpopmail「warning: dropping connection, unable to read /home/vpopmail/etc/tcp.smtp.cdb: access denied」を回避する。
・バーチャルドメインの追加
# cd /home/vpopmail/bin/・vpopmail用cdbの作成
# ./vadddomain test.example.com
(パスワードを入力)
# ./vadduser info@test.example.com
(パスワードを入力)
# cd /home/vpopmail/etc・cronの設定
# echo '192.168.:allow,RELAYCLIENT=""' > tcp.smtp
# echo '127.:allow,RELAYCLIENT=""' >> tcp.smtp
# echo 'xxx.xxx.xxx.xxx:allow,RELAYCLIENT=""' >> tcp.smtp
# echo ':allow' >> tcp.smtp
# /usr/local/bin/tcprules tcp.smtp.cdb tcp.smtp.tmp < tcp.smtp
# chown -R vpopmail:vchkpw /home/vpopmail/etc
# crontab -e
*/15 * * * * /home/vpopmail/bin/clearopensmtp 2>&1 > /dev/nullrootのcronに設定。15分毎にIPアドレスを整理する。
・vpopmail対応tcpserver起動スクリプトの作成
# /etc/rc.d/init.d/qmail stop
# cp /etc/rc.d/init.d/qmail /etc/rc.d/init.d/qmail.qmail
# chmod 0 /etc/rc.d/init.d/qmail.qmail
# vi /etc/rc.d/init.d/qmail
#!/bin/sh・vpopmail対応tcpserverの起動と動作確認
#
# qmail: /var/qmail
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 &'
#Vsmtp
/usr/local/bin/tcpserver -H -R -l example.com -v -x /home/vpopmail/etc/tcp.smtp.cdb -u 502 -g 501 0 smtp /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 3 &
#Vpop
/usr/local/bin/tcpserver -H -R -l example.com -v 0 pop3 /var/qmail/bin/qmail-popup example.com /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1 | /var/qmail/bin/splogger pop3d 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
# /etc/rc.d/init.d/qmail start外部からinfo@test.example.com宛にメール送信してみる。
・メインドメインのバーチャルドメイン化
# cd /home/vpopmail/bin/・コントロールファイルの編集
# ./vadddomain example.com
(パスワードを入力)
# ./vadduser info@example.com
(パスワードを入力)
# vi /var/qmail/control/localsメインドメインが残っていたら削除し、中身をlocalhostのみに変更する。
# cp /var/qmail/alias/.qmail-* /home/vpopmail/var/vpopmail/example.com/
# chown vpopmail:vchkpw /home/vpopmail/var/vpopmail/example.com/.qmail-*
5.qmail-confのインストール
・qmail-conf、djbdnsのダウンロード
# cd /usr/local/src/・qmail-conf、djbdnsの解凍
# wget http://www.din.or.jp/~ushijima/qmail-conf/qmail-conf-0.60.tar.gz
# wget http://cr.yp.to/djbdns/djbdns-1.05.tar.gz
# tar zxvf qmail-conf-0.60.tar.gz・extern int errno; を #include
# tar zxvf djbdns-1.05.tar.gz
# cd djbdns-1.05/error.h
# vi error.h
extern int errno;・qmail-confのコンパイル、インストール
↓
#include
# cd /usr/local/src/qmail-conf-0.60daemontoolsでの起動設定を簡単にするtool。
# make -f Makefile.ini djbdns=../djbdns-1.05
# make
# make setup check
6.daemontoolsのインストールと設定
・vpopmail対応tcpserverの停止
# /etc/rc.d/init.d/qmail stop・daemontoolsのダウンロード
# mv /etc/rc.d/init.d/qmail /etc/rc.d/init.d/qmail.vpopmail
# chmod 0 /etc/rc.d/init.d/qmail.vpopmail
# cd /usr/local/src/・フォルダ作成、daemontools解凍、コンパイル、インストール(netqmail-1.06のソースが必要)
# wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
# mkdir /package・svscan起動スクリプトの作成
# chmod 1755 /package
# cd /package
# tar xpzf /usr/local/src/daemontools-0.76.tar.gz
# cd admin/daemontools-0.76
# patch -p1 < /usr/local/src/netqmail-1.06/other-patches/daemontools-0.76.errno.patch
# ./package/install
# vi /etc/rc.d/init.d/svscan
#!/bin/sh・svscanの起動
#
# svscan Start svscan.
#
# Author: TAKIZAWA Takashi
#
# chkconfig: 345 99 50
# description: svscan starts and monitors a collection of services.
# see http://cr.yp.to/daemontools.html
# processname: svscan
# service directory: /service
# Source function library.
. /etc/rc.d/init.d/functions
PATH="/usr/local/bin:$PATH"
prog=svscan
SVDIR=/service
RETVAL=0
export PATH SVDIR
start() {
echo -n $"Starting $prog: "
daemon svscan $SVDIR &
RETVAL=$?
echo_success
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/svscan
}
stop() {
echo -n $"Stopping $prog: "
killproc svscan
RETVAL=$?
(cd $SVDIR && svc -dx $SVDIR/*)
(cd $SVDIR && svc -dx $SVDIR/*/log)
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/svscan
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status svscan
RETVAL=$?
;;
restart|reload)
stop
start
;;
*)
echo $"Usage: $prog {start|stop|status|restart|reload}"
exit 1
esac
exit $RETVAL
# /etc/rc.d/init.d/svscan start・svscanの自動起動設定
# /sbin/chkconfig --add svscan・qmail起動スクリプトの変更
# /sbin/chkconfig svscan on
# vi /var/qmail/rc
#!/bin/shsploggerを使用しないように変更する。
# 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/
・daemontools用起動スクリプトの作成
# cd /var/qmail/bin・daemontools用cdbの作成(smtpd)
# ./qmail-delivery-conf qmaill /var/qmail/service/qmail
# ./qmail-smtpd-conf qmaild qmaill /var/qmail/service/smtpd
# ./qmail-pop3d-conf /home/vpopmail/bin/vchkpw qmaill /var/qmail/service/pop3d
# cd /var/qmail/service/smtpd・daemontools用cdbの作成(pop3d)
# ./add-relayclient 192.168.
# ./add-relayclient 127.
# ./add-relayclient xxx.xxx.xxx.xxx
# echo ':allow' >> tcp
# make
# cd /var/qmail/service/pop3d接続を許可するIPアドレスを追加する。
# ./add-client 192.168.
# ./add-client xxx.xxx.xxx.xxx
# make
・エイリアスの作成
# ln -s /var/qmail/service/* /service
7.daemontoolsでのqmail運用
・全サービスの起動
# svc -u /service/*・全サービスの一時停止
# svc -d /service/*・全サービスの起動状況の確認
# svstat /service/*・ログの確認
# /usr/local/bin/tai64nlocal < /service/qmail/log/main/current | more
# /usr/local/bin/tai64nlocal < /service/smtpd/log/main/current | more
# /usr/local/bin/tai64nlocal < /service/pop3d/log/main/current | more
備考.telnetでportの確認
・portが閉じている場合
# telnet example.com 110
Trying xxx.xxx.xxx.xxx...・portが開いていて、ユーザー名とパスワードも正しい場合
telnet: connect to address xxx.xxx.xxx.xxx: Connection refused
telnet: Unable to connect to remote host: Connection refused
# telnet example.com 110
Trying xxx.xxx.xxx.xxx...
Connected to example.com (xxx.xxx.xxx.xxx).
Escape character is '^]'.
+OK <12345.1234567890@example.com>
user info@example.com
+OK
pass xxxxxxxxxx
+OK
quit
+OK
Connection closed by foreign host.
参考サイト
・実用qmailサーバ運用・管理術
http://www.atmarkit.co.jp/flinux/index/indexfiles/index-linux.html#qmail
・CentOS4 に qmail + vpopmail + qmailadmin
http://d.hatena.ne.jp/cat-o-ninetail/20080229
・サーバーを構築する(qmail + vpopmail)
http://www.mgfcompany.net/ufo/com/
・qmail-1.03の導入(CentOS5) - ORANGE BOX
http://orangebox.lbn.bz/index.php?qmail-1.03%A4%CE%C6%B3%C6%FE%A1%CACentOS5%A1%CB
・qmailのインストール及びその設定(daemontoolsを用いたプロセスの監視)
http://www.mm-labo.com/computer/linux/qmail/qmail-daemontools.html
・daemontools の勧め
http://www.emaillab.org/djb/daemontools/
・qmail-conf
http://www.y-min.or.jp/~nob/qmail/qmail-conf.html
- gokue
- 03:47
- コメント (12)
- トラックバック (2)
- カテゴリー:ネット・PC・携帯
"ネット・PC・携帯"の記事
2011年02月02日
2010年12月03日
2010年03月09日
2009年10月31日
2007年11月04日
2007年10月02日
2007年09月27日
2007年09月20日
2007年06月28日
2007年06月26日
2007年05月09日
2007年03月25日
2007年02月15日
2007年01月19日
2006年12月07日
2006年11月29日
2006年11月07日
2006年11月03日
2006年10月19日
2006年10月13日
2006年08月29日
2006年08月23日
2006年07月25日
2006年06月07日
2006年06月06日
2006年05月16日
2006年05月12日
2006年05月11日
2006年05月05日
2006年05月02日
2006年04月26日
2006年04月13日
2006年04月11日
2006年04月09日
2006年03月27日
2006年03月23日
2005年12月01日
2005年10月18日
2005年10月13日
2005年08月26日
2005年07月15日
2005年06月16日
2005年04月29日
2005年04月21日
2005年04月19日
2005年04月13日
2005年04月05日
2005年03月02日
2005年02月28日
2005年02月17日
2005年01月27日
2005年01月22日
2005年01月13日
2004年12月03日
2004年12月01日
2004年11月13日
2004年11月11日
2004年10月24日
2004年10月23日
2004年10月18日
2004年09月01日
2004年08月06日
2004年07月17日
2004年07月15日
2004年07月08日
2004年07月07日
2004年07月03日
2004年06月30日