openSUSE 10.3でsmtpサーバーとpopサーバーを構築します
以下をダウンロードする。
# cd /usr/local/src <=作業ディレクトリ # wget http://www.qmail.org/netqmail-1.05.tar.gz # wget http://www.emaillab.org/djb/tools/ucspi-tcp/ucspi-tcp-0.88.tar.gz # wget http://www.itheart.com/phpgw/qmail-date-localtime.patch # wget http://www.qmail.org/qmail-smtpd-relay-reject
# cd /usr/local/src/ # tar -zxvf netqmail-1.05.tar.gz # cd netqmail-1.05 # ./collate.sh # cd netqmail-1.05
Received ヘッダのローカルタイムゾーン対応パッチを適用します。
# patch -p1 < ../../qmail-date-localtime.patch patching file date822fmt.c
一般的なspamチェック(%や!等の特殊文字を含むものをエラーにする)
# patch -p1 < ../../qmail-smtpd-relay-reject missing header for unified diff at line 3 of patch patching file qmail-smtpd.c Hunk #1 succeeded at 53 with fuzz 2.
qmail用ディレクトリの作成
# mkdir /var/qmail
qmailグループとqmailユーザ群を設定
# /usr/sbin/groupadd nofiles # /usr/sbin/useradd -M -u901 -g nofiles -s /bin/false -d /var/qmail/alias alias # /usr/sbin/useradd -M -u902 -g nofiles -s /bin/false -d /var/qmail qmaild # /usr/sbin/useradd -M -u903 -g nofiles -s /bin/false -d /var/qmail qmaill # /usr/sbin/useradd -M -u904 -g nofiles -s /bin/false -d /var/qmail qmailp # /usr/sbin/groupadd qmail # /usr/sbin/useradd -M -u908 -g qmail -s /bin/false -d /var/qmail qmailq # /usr/sbin/useradd -M -u906 -g qmail -s /bin/false -d /var/qmail qmailr # /usr/sbin/useradd -M -u907 -g qmail -s /bin/false -d /var/qmail qmails
# cd /usr/local/src/netqmail-1.05/netqmail-1.05 # make setup check
DNS が利用できない場合、./config-fast を使用します。
# ./config-fast smtp.powerdee.com Your fully qualified host name is smtp.powerdee.com. Putting smtp.powerdee.com into control/me... Putting powerdee.com into control/defaultdomain... Putting powerdee.com into control/plusdomain... Putting smtp.powerdee.com into control/locals... Putting smtp.powerdee.com into control/rcpthosts... Now qmail will refuse to accept SMTP messages except to smtp.powerdee.com. Make sure to change rcpthosts if you add hosts to locals or virtualdomains!
受信メールサイズの制限を設定します。 巨大なサイズのメール受信は、以下の設定で回避します。(無制限にする場合は「0」と記述)
# cat >/var/qmail/control/databytes <<EOD # 1000000 # EOD
HELOコマンドで応答するホスト名を設定します。
# cat >/var/qmail/control/helohost <<EOD # smtp.powerdee.com
/var/qmail/control/localsを編集します。 このファイルはqmailがメールを受け取るドメインを指定するファイルです。
localhost <--追加 smtp.powerdee.com powerdee.com <--追加
/var/qmail/control/rcpthostsを編集します。 このファイルはSMTPのRCPTを許可するドメインを指定します。
localhost <--追加します。 smtp.powerdee.com
postmaster, mailer-daemon, root で指定されたメールを受け取るように設定します。 メールを受け取るユーザはメール管理者のメールアドレスを指定しておく方が良いと思います。
cd /var/qmail/alias echo '&info@powerdee.com' > .qmail-root echo '&root' > .qmail-postmaster echo '&root' > .qmail-mailer-daemon chmod 644 .qmail*
# mv /usr/lib/sendmail /usr/lib/sendmail.bak # mv /usr/sbin/sendmail /usr/sbin/sendmail.bak # chmod 0 /usr/lib/sendmail.bak # chmod 0 /usr/sbin/sendmail.bak # ln -s /var/qmail/bin/sendmail /usr/lib/sendmail # ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
# cd /usr/local/src # tar -xvzf ucspi-tcp-0.88.tar.gz # cd ucspi-tcp-0.88 # patch -p1 < ../netqmail-1.05/other-patches/ucspi-tcp-0.88.errno.patch patching file error.h # patch -p1 < ../netqmail-1.05/other-patches/ucspi-tcp-0.88.a_record.patch patching file rblsmtpd.c # make # make setup check
vpopmail用のグループとユーザの作成
# groupadd vchkpw # useradd -g vchkpw -s /bin/false -M vpopmail # mkdir /home/vpopmail # chown vpopmail:vchkpw /home/vpopmail
/home/vpopmail/etcディレクトリの作成
# mkdir /home/vpopmail/etc # chown vpopmail:vchkpw /home/vpopmail/etc
/home/vpopmail/etc/defaultdomainにデフォルトドメインを設定します。 user@powerdee.comのようなアドレスをuserと指定するだけでドメイン名を省略しても配信可能とするドメイン名を指定します。
# cat >/home/vpopmail/etc/defaultdomain <<EOD # powerdee.com # EOD
/home/vpopmail/etc/tcp.smtpを作成します。内容は下記の通りです。
127.:allow,RELAYCLIENT="" 192.168.0.:allow,RELAYCLIENT=""
次にtcprulesを実行してtcp.smtp.cdbファイルを作成します。
# tcprules /home/vpopmail/etc/tcp.smtp.cdb \ > /home/vpopmail/etc/tcp.smtp.tmp < /home/vpopmail/etc/tcp.smtp
vpopmailをインストールします。 POP認証後の有効時間は10分と指定しています。
# cd /usr/local/src # tar xvzf vpopmail-5.4.25.tar.gz # cd vpopmail-5.4.25 # ./configure \ > --enable-roaming-users=y \ > --enable-relay-clear-minutes=10 \ > --enable-tcpserver-file=/home/vpopmail/etc/tcp.smtp # make # make install-strip
先ほど作成したファイル、/home/vpopmail/etc/tcp.smtp.cdbの指定内容では、127.x.x.xもしくは 192.168.0.xネットワークからのアクセスのみ、メール送信が可能になります。 しくみとしては、メールユーザーがPOP認証を行うとそのユーザーのIPアドレスが内部でこのファイルに保持(RELAYCLIENT=”“の部分)されて/var/qmail/control/rcpthostsの制限を受けずに、メール送信が可能になります。
そのため、POP認証が済んだクライアント情報を定期的に削除する為、以下のようにクーロンに削除スクリプトを登録します。
# crontab -e # 0,10,20,30,40,50 * * * * /home/vpopmail/bin/clearopensmtp 2>&1 > /dev/null
/var/qmail/boot/home に起動スクリプトが用意されていますので、 /var/qmail/rc というファイルにコピーして使用します。
# cp /var/qmail/boot/home /var/qmail/rc
maildir 形式のメールボックスを設定します。 # vi /var/qmail/rc
qmail-start ./Mailbox splogger qmail
この部分を以下のように変更します。
qmail-start ./Maildir/ splogger qmail
vi /etc/rc.d/init.d/qmail
#!/bin/sh
#
# chkconfig: 345 99 99
# description: qmail & vpopmail startup script
#
PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin
HOSTNAME=`hostname`
QMAILDUID=`id -u qmaild`
QMAILDGID=`id -g qmaild`
[ -f /var/qmail/rc ] || exit 0
case "$1" in
start)
echo "Starting qmail."
csh -cf '/var/qmail/rc &'
#FOR SMTP
tcpserver -H -R -l $HOSTNAME -v \
-x /home/vpopmail/etc/tcp.smtp.cdb -u $QMAILDUID -g $QMAILDGID 0 smtp \
/var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 3 &
#For POP3
#envdir /etc/relay-ctrl relay-ctrl-chdir \
tcpserver -H -R -l $HOSTNAME -v 0 pop3 \
/var/qmail/bin/qmail-popup $HOSTNAME \
/home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1 | /var/qmail/bin/splogger pop3d 3 &
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
rm -f /var/lock/qmail
;;
*)
echo "Usage: S88qmail {start|stop}"
exit 1
esac
exit 0
作成したスクリプトに実行権限を与えて、自動起動の設定を行います。
# chmod 755 /etc/rc.d/init.d/qmail # chkconfig --add qmail
vpopmailの機能で、バーチャルドメイン・バーチャルユーザーを作成して、メール受信の振り分けを行うことができます。 バーチャルドメインは、vadddomainコマンドで作成します。
# /home/vpopmail/bin/vadddomain powerdee.com
バーチャルユーザーの作成以下のように行います。
# /home/vpopmail/bin/vadduser user1@powerdee.com
削除する場合は、vdeluserコマンドです。ユーザーを削除するとMaildirも削除されるので注意しましょう。
# /home/vpopmail/bin/vdeluser user1@powerdee.com
先ほど作成したスクリプトで起動します。
# service qmail start