FreeBSD     Initialization     bind8     bind9     qmail     Net     web     v-domain     IPF     WIZ     XOOPS     hint
文蔵のFreeBSD研究室
by Bunzo

qmailの設定

インストールはportsから行った。

portsからでなくtarボールからインストールするときは非常に面倒である。
参考までに記述しておく。
まずはインストールのための準備が必要である。スーバーユーザで
mkdir /var/qmail
pw groupadd nofiles
pw useradd alias  -g nofiles -d /var/qmail/alias -s /nonexistent
pw useradd qmaild -g nofiles -d /var/qmail -s /nonexistent
pw useradd qmaill -g nofiles -d /var/qmail -s /nonexistent
pw useradd qmailp -g nofiles -d /var/qmail -s /nonexistent
pw groupadd qmail
pw useradd qmailq -g qmail -d /var/qmail -s /nonexistent
pw useradd qmailr -g qmail -d /var/qmail -s /nonexistent
pw useradd qmails -g qmail -d /var/qmail -s /nonexistent

cd /usr/src
ftp ftp.nlc.net.au
cd /pub/unix/mail/qmail
ls
get qmail-1.03.tar.gz
get qmail-date-localtime.patch
quit

tar zxvf qmail-1.03.tar.gz
cd qmail-1.03
patch -p1 < ../qmail-date-localtime.patch
make
make man
make setup
make check
./config-fast ns.sample.com

cp /var/qmail/boot/home /var/qmail/rc
次にsendmailを停止させ、qmailで代用するようにする。
ps ax
kill [sendmailのプロセス番号] ・・・・sendmail を停止させる
cd /usr/sbin
mv sendmail sendmail.dist
chmod 0 sendmail.dist
ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
sendmailが自動的に起動しないように、/etc/rc.conf の内容を次のように変更する。
sendmail_enable="YES" → "NO" に変更する。
portsからインストールするとここまで自動でやってくれる。
portsからのインストールは次のように行った。スーパーユーザになって
cd /usr/ports/mail/qmail
make install
make disable-sendmail
make enable-qmail
cd /var/qmail/boot
cp maildir /var/qmail/rc

設定ファイルは/var/qmail/control 内のファイルであるが、bindの設定が完了しているとほとんど完了している。
/var/qmail/control/defaultdomain
sample.com

/var/qmail/control/locals
localhost
ns.sample.com
sample.com

/var/qmail/control/me
sample.com

/var/qmail/control/plusdomain
sample.com

/var/qmail/control/rcpthosts
sample.com
.sample.com
tatoe.sample.com
bbbbbb.com
.bbbbbb.com
cccc.net
.cccc.net

/var/qmail/control/virtualdomains
tatoe.sample.com:tatoe
bbbbbb.com:bbbbbb
cccc.net:cccc

root,postmaster,mailer-daemon,root宛のメールを特定のメールアドレスに転送させておくには、
cd /var/qmail/alias
touch .qmail-postmaster .qmail-mailer-daemon .qmail-root
chmod 644 .qmail*
echo [転送させたいメールアドレス] > /var/qmail/alias/.qmail-postmaster
echo [転送させたいメールアドレス] > /var/qmail/alias/.qmail-mailer-daemon
echo [転送させたいメールアドレス] > /var/qmail/alias/.qmail-root
としておく。

Maildir形式のメールボックスを使用するので、自動起動スクリプトを次のようになっているか確認する。違っていたらこの内容に変更する。
設定ファイルは、/usr/local/etc/rc.d/qmail.sh である。
#!/bin/sh

# Using splogger to send the log through syslog.
# Using qmail-local to deliver messages to Maildir format by default

case "$1" in
start)
        exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start ./Maildir/ \
splogger qmail&
        exit 0
        ;;
stop)
        exec killall qmail-send
        ;;
*)
        echo "Usage: `basename $0` {start|stop}" >&2
        exit 64
        ;;
esac

各ユーザにもメールが届くようにしておくには各ユーザそれぞれで
/var/qmail/bin/maildirmake ~/Maildir

ユーザを追加するたびに面倒でないように
# /var/qmail/bin/maildirmake /usr/share/skel/Maildir
を実行しておく。

qmailの送信テスト
qmailを起動させてから
# echo to:[ユーザアカウント又はメールアドレス] | /var/qmail/bin/qmail-inject
を実行してみる。ユーザアカウントへメールが届いていればOK。
全ての設定が終わった後も実行してみるといい。

smtpを利用するためにtcpserverを使用する。例によってportsからインストールした。
インストールしたのは、ucspi-tcp-0.88 である。
また、バーチャルドメインを使うので、ついでにvmailmgrもインストールしておく。
cd /usr/ports
portinstall sysutils/ucspi-tcp
portinstall mail/vmailmgr
/etc/tcp.smtp を次のような内容で作成し、/etc/tcp.smtp.cdb に反映させておく。
127.:allow,RELAYCLIENT=""
113.224.335.447:allow,RELAYCLIENT=""
# /usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
このSMTP鯖を外部から使用するためには、この /etc/tcp.smtp に記述しなければならない。
例えば自宅内のLANからメールを送信したいときは
127.:allow,RELAYCLIENT=""
113.224.335.447:allow,RELAYCLIENT=""
192.168.1.:allow,RELAYCLIENT=""
などとLANのローカルIPを記述しておく。/etc/tcp.smtp.cdb に反映させることを忘れずに!!!
次に起動するために
# id -u qmaild
82
# id -g qmaild
81
と qmaild のユーザIDとグループIDを調べておき、/usr/local/etc/rc.d/tcpserver.sh を次の内容で作成する。このコマンドを1行で入力することで起動する。(コマンド入力の時は"\"は不要。また、1行で記述するときも不要。)
#!/bin/sh
nohup /usr/local/bin/tcpserver -vHR -x /etc/tcp.smtp.cdb -u 82 -g 81 0 smtp \
 /var/qmail/bin/qmail-smtpd 2>&1 /var/qmail/bin/splogger smtpd &

バーチャルドメインで使うので、その設定を行う。qmailをインストールし完了した後でユーザを登録するならよいがqmailをインストールする前にユーザ登録してあったときは、次のような作業が必要になる。
例えば、ユーザ名が"bbbbbb"の場合、SSHでログインして、
$ cd
$ pwd
 /home/bbbbbb
$ /var/qmail/bin/maildirmake Maildir
$ /usr/local/bin/vsetup
$ /usr/local/bin/vadduser tatoe
  [パスワードを2回入力する]
$
これで tatoe@bbbbbb.com というメールアドレスが作成された。
メーラでアクセスするときの注意点は、ユーザIDがメールアドレスになる点である。
ユーザIDにメールアドレスを入れず、例えば"bbbbbb"として、アクセスすると、bbbbbb@sample.com のメールチェックを行うことになる。

POPbeforeSMTPの設定
まずは、daemontoolsをインストールする。portsからインストールである。
cd /usr/ports
portinstall sysutils/daemontools
mkdir /var/service
マシン再起動時に自動的に起動するように「/etc/rc.conf」に次の内容を追記する。
svscan_enable="YES"

relay-ctrlもportsからインストールする。
cd /usr/ports
portinstall mail/relay-ctrl
デフォルトでは900秒保持するようになっている。
「/etc/crontab」に次の内容を追記しておく。
* * * * * root /usr/local/bin/envdir /usr/local/etc/relay-ctrl \
/usr/local/bin/relay-ctrl-age

最後にqmailの起動ファイル「/var/qmail/rc」の編集し、マシンを再起動させる。
・・・・・・
splogger qmail&

###SMTP
/usr/local/bin/envdir /usr/local/etc/relay-ctrl \
/usr/local/bin/relay-ctrl-chdir \
/usr/local/bin/tcpserver -vHR -u 82 -g 81 -x /etc/tcp.smtp.cdb 0 smtp \
/usr/local/bin/relay-ctrl-check \
/usr/local/bin/fixcrio \
/var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 3 &

###POP3
/usr/local/bin/envdir /usr/local/etc/relay-ctrl \
/usr/local/bin/relay-ctrl-chdir \
/usr/local/bin/tcpserver -HR 0 pop3 \
/var/qmail/bin/qmail-popup example.com \
/usr/local/bin/checkvpw \
/usr/local/bin/relay-ctrl-allow \
/var/qmail/bin/qmail-pop3d Maildir 2>&1 | /var/qmail/bin/splogger pop3d 3 &

これでOKなり。/etc/tcp.smtp を編集し、今まで無理に解放していたIPを削除し、LAN内部からのみに解放し、外部からは全て POPbeforeSMTP にした。


□ qmailのqueue管理 について (queue-admin)
・・・・・CMF参照というかそのままです。 「番外編 qmailのqueue管理」です 感謝です ・・・・・・・
■queue-adminの入手
wget http://cmf.ohtanz.com/download/queue-admin.txt
mv queue-admin.txt /var/qmail/bin/queue-admin
chmod 755 /var/qmail/bin/queue-admin
詳細は”/var/qmail/bin/queue-admin”を実行するとヘルプが表示されますのでご覧下さい。

■使用例
1.queueに溜まっているメールのリストを表示
> /var/qmail/bin/queue-admin --ls

2.キュー番号「1111111」「2222222」のメールを表示
> /var/qmail/bin/queue-admin --cn 1111111 2222222

3.Toヘッダーに「aaa@ohtanz.com」「bbb@ohtanz.com」が含まれるメールを削除。
> /etc/rc.d/init.d/qmail stop
> /var/qmail/bin/queue-admin --dt aaa@ohtanz.com bbb@ohtanz.com
> /etc/rc.d/init.d/qmail start

4.Subjectヘッダーに「test1」「test2」が含まれるメールを表示
> /var/qmail/bin/queue-admin --ss test1 test2

5.メール本文に「test1」「test2」が含まれるメールを表示
> /var/qmail/bin/queue-admin --sb test1 test2
mulder@zenzai.to
FreeBSD     Initialization     bind8     bind9     qmail     Net     web     v-domain     IPF     WIZ     XOOPS     hint