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 及びその他の必要パッケージをインストール
# apt-get update # apt-get install qmail inetutils-inetd ucspi-tcp heirloom-mailx
制御ファイル
/var/lib/qmail/control/defaultdomain ---> ep.sci.hokudai.ac.jp /var/lib/qmail/control/locals ---> localhost " ---> sango.ep.sci.hokudai.ac.jp /var/lib/qmail/control/me ---> sango.ep.sci.hokudai.ac.jp /var/lib/qmail/control/plusdomain ---> ac.jp /var/lib/qmail/control/rcpthosts ---> localhost " ---> sango.ep.sci.hokudai.ac.jp
セカンダリメールサーバとして使うために,ドメイン部が ep.sci.hokudai.ac.jp である宛先のメールを受け取るようにする(※)
# echo ep.sci.hokudai.ac.jp >> /var/lib/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/lib/qmail/control/smtproutes # chmod 644 /var/lib/qmail/control/smtproutes
更に,メール発信の際にはドメイン部のないメールアドレスに,ep.sci.hokudai.ac.jp というドメイン部を付加するために,以下を行う
# echo ep.sci.hokudai.ac.jp > /var/lib/qmail/control/defaulthost # chmod 644 /var/lib/qmail/control/defaulthost
その他に以下を設定
# echo 10000000 >> /var/lib/qmail/control/databytes # chmod 644 /var/lib/qmail/control/databytes # echo 604800 >> /var/lib/qmail/control/queuelifetime # chmod 644 /var/lib/qmail/control/queuelifetime
設定の確認
# qmail-showctl
postmaster, mailer-daemon, bin, daemon, games, ingres, nobody, system, toor, uucp, usenet, anonymous, mail あてのメールは, root に転送され, root あてのメールは epmail に転送されるように設定
# cd /var/lib/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/lib/qmail/bin " else PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/var/lib/qmail/bin" fi export PATH
恐らくパッケージからインストールした際に既にパスが通っているため, やる必要なし.
# ln -s /var/lib/qmail/bin/sendmail /usr/sbin/sendmail # ln -s /var/lib/qmail/bin/sendmail /usr/lib/sendmail~/Mailbox への配送
/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: mondo7@sango.ep.sci.hokudai.ac.jp | /var/lib/qmail/bin/qmail-inject $ lv /var/mail/mondo7 ------ From mondo7@ep.sci.hokudai.ac.jp Tue Sep 24 11:11:07 2013 Return-Path: <mondo7@ep.sci.hokudai.ac.jp> Delivered-To: mondo7@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: mondo7@ep.sci.hokudai.ac.jp to: mondo7@sango.ep.sci.hokudai.ac.jp
ローカル配送テスト 2: 存在しない宛先に送ってみる
$ echo to: nonexistent@saingo.ep.sci.hokudai.ac.jp | /var/lib/qmail/bin/qmail-inject -f kawahara@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@saingo.ep.sci.hokudai.ac.jp>: Sorry, I couldn't find any host named saingo.ep.sci.hokudai.ac.jp. (#5.1.2) --- Below this line is a copy of the message. Return-Path: <kawahara@ep.sci.hokudai.ac.jp> Received: (qmail 3299 invoked by uid 1000); 30 Sep 2014 15:48:29 -0000 Date: 30 Sep 2014 15:48:29 -0000 Message-ID: <20140930154829.3298.qmail@sango.ep.sci.hokudai.ac.jp> From: mondo7@ep.sci.hokudai.ac.jp to: nonexistent@saingo.ep.sci.hokudai.ac.jp
リモート配送テスト 1: 他のホスト上のアカウントへ送ってみる
$ echo to: kawahara@ep.sci.hokudai.ac.jp | /var/lib/qmail/bin/qmail-inject
リモート配送テスト 2: 他のホスト上の存在しない宛先に送ってみる
$ echo to: nonexistent@ep.sci.hokuai.ac.jp | /var/lib/qmail/bin/qmail-inject -f kawahara@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: <kawahara@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: mondo7@ep.sci.hokudai.ac.jp to: nonexistent@ep.sci.hokuai.ac.jp
/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/lib/qmail/bin/qmail-smtpd 2>&1 | /var/lib/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
更新日: 2014/12/05 (川原 健史) | epwww © 2014 |