qmail との衝突を避けるため, debian に標準でインストールされている exim4 をアンインストールする
$ dpkg -l | grep exim ii exim4 4.72-6+squeeze2 metapackage to ease Exim MTA (v4) installation ii exim4-base 4.72-6+squeeze2 support files for all Exim MTA (v4) packages ii exim4-config 4.72-6+squeeze2 configuration for the Exim MTA (v4) ii exim4-daemon-light 4.72-6+squeeze2 lightweight Exim MTA (v4) daemon
これらをすべてアンインストール
# aptitude remove exim4 exim4-base exim4-config exim4-deamon-light
qmail-src をダウンロード
# wget http://ftp.jp.debian.org/debianpool/non-free/q/qmail/qmail-src_1.03-49.2_all.deb # aptitude update # aptitude install po-debconf (qmail ビルド時に必要となる) # aptitude install ucspi-tcp (後で必要になるのでここでインストールしておく)
# mv qmail-src_1.03-49.2_all.deb /usr/local/src/ # cd /usr/local/src/
# dpkg -i --force-depends qmail-src_1.03-49.2_all.deb
# cd /usr/src/qmail-src/
qmail のビルドとインストール
# build-qmail
制御ファイル
/var/qmail/control/defaultdomain ---> ep.sci.hokudai.ac.jp /var/qmail/control/locals ---> localhost " ---> sango.ep.sci.hokudai.ac.jp /var/qmail/control/me ---> sango.ep.sci.hokudai.ac.jp /var/qmail/control/plusdomain ---> ac.jp /var/qmail/control/rcpthosts ---> localhost " ---> sango.ep.sci.hokudai.ac.jp
セカンダリメールサーバとして使うために,ドメイン部が ep.sci.hokudai.ac.jp である宛先のメールを受け取るようにする(※)
# echo ep.sci.hokudai.ac.jp >> /var/qmail/control/rcpthosts
ep.sci.hokudai.ac.jp あてのメールをMX レコードを DNS 検索することなしに,mail.ep.sci.hokudai.ac.jp に送るために,以下を行う.これは, http://man.qmail.jp/faq/faq2.html, http://www.jp.qmail.org/q103/jman8/qmail-remote.html#smtproutes を参考にしたものである
# echo ep.sci.hokudai.ac.jp:mail.ep.sci.hokudai.ac.jp > /var/qmail/control/smtproutes # chmod 644 /var/qmail/control/smtproutes
更に,メール発信の際にはドメイン部のないメールアドレスに,ep.sci.hokudai.ac.jp というドメイン部を付加するために,以下を行う
# echo ep.sci.hokudai.ac.jp > /var/qmail/control/defaulthost # chmod 644 /var/qmail/control/defaulthost
その他に以下を設定
# echo 10000000 >> /var/qmail/control/databytes # chmod 644 /var/qmail/control/databytes # echo 604800 >> /var/qmail/control/queuelifetime # chmod 644 /var/qmail/control/queuelifetime
設定の確認
# qmail-showctl
postmaster, mailer-daemon, bin, daemon, games, ingres, nobody, system, toor, uucp, usenet, anonymous, mail あてのメールは, root に転送され, root あてのメールは epmail に転送されるように設定
# cd /var/qmail/alias # echo '&epmail' > .qmail-root # echo '&root' > .qmail-postmaster # echo '&root' > .qmail-mailer-daemon # echo '&root' > .qmail-bin # echo '&root' > .qmail-daemon # echo '&root' > .qmail-games # echo '&root' > .qmail-ingres # echo '&root' > .qmail-nobody # echo '&root' > .qmail-system # echo '&root' > .qmail-toor # echo '&root' > .qmail-uucp # echo '&root' > .qmail-usenet # echo '&root' > .qmail-anonymous # echo '&root' > .qmail-mail # echo '&epwww' > .qmail-www # echo '&epdns' > .qmail-dns # echo '&epnews' > .qmail-news # chmod 644 .qmail-*
# emacs /etc/profile
PATH= の行を以下のように追記(赤色のところ)
if [ "`id -u`" -eq 0 ]; then PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/var/qmail/bin " else PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/var/qmail/bin" fi export PATH
/etc/manpath.config を編集(以下のものを追記)
# emacs /etc/manpath.config ------ MANDATORY_MANPATH /usr/local/man MANDATORY_MANPATH /var/qmail/man # *PATH* -> *MANPATH* MANPATH_MAP /var/qmail/bin /var/qmail/man # *MANPATH* -> *CATPATH* MANDB_MAP /var/qmail/man /var/qmail/man
/etc/profile に以下を追記
# emacs /etc/profile ------- MAIL="$HOME/Mailbox" MAILDROP="$HOME/Mailbox" export MAIL MAILDROP
パッケージをインストールした時点で起動スクリプト /etc/init.d/qmail もインストールされ, qmail も起動される. 以下のデーモンが起動しているかどうかを確認する
$ ps aux | grep qmail
起動していなかったので起動
# /etc/init.d/qmail start # ps aux |grep qmail ------- qmails 2378 0.0 0.0 4128 496 ? S 19:59 0:00 qmail-send qmaill 2465 0.0 0.0 4084 564 ? S 19:59 0:00 splogger qmail 2 root 2466 0.0 0.0 4088 312 ? S 19:59 0:00 qmail-lspawn |/usr/sbin/qmail-procmail qmailr 2467 0.0 0.0 4088 316 ? S 19:59 0:00 qmail-rspawn qmailq 2468 0.0 0.0 4076 456 ? S 19:59 0:00 qmail-clean qmaild 2473 0.0 0.0 6204 664 ? S 19:59 0:00 /usr/bin/tcpserver -R -H -u 64011 -g 65534 -x /etc/tcp.smtp.cdb 0 smtp /usr/sbin/qmail-smtpd root 2474 0.0 0.0 3952 316 ? S 19:59 0:00 splogger qmail 2 root 2475 0.0 0.0 4096 612 ? Ss 19:59 0:00 startpar -f -- qmail root 2748 0.0 0.0 7400 876 pts/0 S+ 20:10 0:00 grep qmail
ローカル配送テスト 1: 自分に送ってみる
$ echo to: mondo2@sango.ep.sci.hokudai.ac.jp | /var/qmail/bin/qmail-inject $ lv /var/mail/mondo2 ------ From mondo2@ep.sci.hokudai.ac.jp Tue Sep 24 11:11:07 2013 Return-Path: <mondo2@ep.sci.hokudai.ac.jp> Delivered-To: mondo2@sango.ep.sci.hokudai.ac.jp Received: (qmail 2751 invoked by uid 1000); 24 Sep 2013 20:11:07 +0900 Date: 24 Sep 2013 20:11:07 +0900 Message-ID: <20130924111107.2750.qmail@sango.ep.sci.hokudai.ac.jp> From: mondo2@ep.sci.hokudai.ac.jp to: mondo2@sango.ep.sci.hokudai.ac.jp
ローカル配送テスト 2: 存在しない宛先に送ってみる
$ echo to: nonexistent@saingo.ep.sci.hokudai.ac.jp | /var/qmail/bin/qmail-inject -f wataken@ep.sci.hokudai.ac.jp ------ 自分のメーラを確認すると....??? ------ Hi. This is the qmail-send program at sango.ep.sci.hokudai.ac.jp. I'm afraid I wasn't able to deliver your message to the following addresses. This is a permanent error; I've given up. Sorry it didn't work out. <nonexistent@sango.ep.sci.hokudai.ac.jp>: Sorry, no mailbox here by that name. (#5.1.1) --- Below this line is a copy of the message. Return-Path: <wataken@ep.sci.hokudai.ac.jp> Received: (qmail 2767 invoked by uid 1000); 24 Sep 2013 20:11:46 +0900 Date: 24 Sep 2013 20:11:46 +0900 Message-ID: <20130924111146.2766.qmail@sango.ep.sci.hokudai.ac.jp> From: mondo2@ep.sci.hokudai.ac.jp to: nonexistent@sango.ep.sci.hokudai.ac.jp
リモート配送テスト 1: 他のホスト上のアカウントへ送ってみる
$ echo to: wataken@ep.sci.hokudai.ac.jp | /var/qmail/bin/qmail-inject
リモート配送テスト 2: 他のホスト上の存在しない宛先に送ってみる
$ echo to: nonexistent@ep.sci.hokuai.ac.jp | /var/qmail/bin/qmail-inject -f takuya@ep.sci.hokudai.ac.jp ------ 自分のメーラをかくにんすると...? ------ Hi. This is the qmail-send program at sango.ep.sci.hokudai.ac.jp. I'm afraid I wasn't able to deliver your message to the following addresses. This is a permanent error; I've given up. Sorry it didn't work out. <nonexistent@ep.sci.hokuai.ac.jp>: Sorry, I couldn't find any host named ep.sci.hokuai.ac.jp. (#5.1.2) --- Below this line is a copy of the message. Return-Path: <wataken@ep.sci.hokudai.ac.jp> Received: (qmail 2778 invoked by uid 1000); 24 Sep 2013 20:12:33 +0900 Date: 24 Sep 2013 20:12:33 +0900 Message-ID: <20130924111233.2777.qmail@sango.ep.sci.hokudai.ac.jp> From: mondo2@ep.sci.hokudai.ac.jp to: nonexistent@ep.sci.hokuai.ac.jp
# chmod 000 /usr/lib/sendmail # chmod 000 /usr/sbin/sendmail # mv /usr/lib/sendmail /usr/lib/sendmail.bk # mv /usr/sbin/sendmail /usr/sbin/sendmail.bk
/etc/crontab 内の先頭の方に次のように MAILTO を加える
# This file also has a username field, that none of the other crontabs do. SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin MAILTO=epwww@ep.sci.hokudai.ac.jp ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ # m h dom mon dow user command
cron を再起動
# /etc/init.d/cron restart
ps aux | grep qmail をみると, すでに動作している模様
# ps aux |grep qmail ------- qmails 2378 0.0 0.0 4128 496 ? S 19:59 0:00 qmail-send qmaill 2465 0.0 0.0 4084 564 ? S 19:59 0:00 splogger qmail 2 root 2466 0.0 0.0 4088 312 ? S 19:59 0:00 qmail-lspawn |/usr/sbin/qmail-procmail qmailr 2467 0.0 0.0 4088 316 ? S 19:59 0:00 qmail-rspawn qmailq 2468 0.0 0.0 4076 456 ? S 19:59 0:00 qmail-clean qmaild 2473 0.0 0.0 6204 664 ? S 19:59 0:00 /usr/bin/tcpserver -R -H -u 64011 -g 65534 -x /etc/tcp.smtp.cdb 0 smtp /usr/sbin/qmail-smtpd root 2474 0.0 0.0 3952 316 ? S 19:59 0:00 splogger qmail 2 root 2475 0.0 0.0 4096 612 ? Ss 19:59 0:00 startpar -f -- qmail root 2748 0.0 0.0 7400 876 pts/0 S+ 20:10 0:00 grep qmail
smtp 中継を許可するホストを指定
# vi /etc/tcp.smtp 192.168.16.203:allow,RELAYCLIENT="" 127.:allow,RELAYCLIENT=""
tcp.smtp を元に /etc/tcp.smtp.cdb ができる
# tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
qmail の uid と gid を調べる
# id qmaild uid=64011(qmaild) gid=65534(nogroup) 所属グループ=65534(nogroup)
tcpserver 起動スクリプト /etc/init.d/tcpserver を作成
# vi #!/bin/sh # smtp /usr/local/bin/tcpserver -v -x /etc/tcp.smtp.cdb -u 64011 -g 65534 0 smtp /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 3 &
作成後, root に実行許可を出す
# chmod 755 /etc/init.d/tcpserver
sango を reboot
# reboot
reboot 後, tcpserver が動いているかを確認
# ps aux | grep tcpserver qmaild 2465 0.0 0.0 6204 668 ? S 22:18 0:00 /usr/bin/tcpserver -R -H -u 64011 -g 65534 -x /etc/tcp.smtp.cdb 0 smtp /usr/sbin/qmail-smtpd root 2757 0.0 0.0 7404 880 pts/0 S+ 22:21 0:00 grep tcpserver
gate-system から登録 IP アドレス一覧を受け渡してもらい, /etc/tcp.smtp.cdb を自動生成する. そのために, 標準入力から IP アドレス リストを読み込み, /etc/tcp.smtp を書くスクリプトを用いる. /usr/local/sbin/list-2-tcp とする
# emacs /usr/local/sbin/list-2-tcp #!/usr/bin/perl #Kyoma TAKAHASHI 1999.08.11 # 1999.09.09 # 1999.11.09 # list-2-tcp file $add = ':allow,RELAYCLIENT=""'; $bottom = '127.'; $rulefile = shift; open(RULEFILE,"> $rulefile"); while(<>) { chop($ip = $_); if($ip ne '') { if(/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/) { ($_) = /([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/; s/^0+//; s/\.0+/\./g; s/^\./0\./; s/\.$/\.0/; s/\.\./\.0\./g; s/\.\./\.0\./g; print RULEFILE $_,$add,"\n"; }} } print RULEFILE $bottom,$add; close(RULEFILE);
実行権限を与える
# chmod 755 /usr/local/sbin/list-2-tcp
/usr/local/sbin/tcp_smtp_cdb を以下のように書く
# emacs /usr/local/sbin/tcp_smtp_cdb #!/bin/sh # Kyoma TAKAHASHI 1999.9.9 # 10.16 /usr/local/bin/gate-ip-show -f ip `/usr/local/bin/gate-ip-list stable` | /usr/local/sbin/list-2-tcp /etc/tcp.smtp && /usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
実行権限を与える
# chmod 755 /usr/local/sbin/tcp_smtp_cdb
作成日: 2013/09/24 (渡辺 健介) | epwww © 2013 |