FreeBSD 8.4 RELEASE - qmail - 初期設定

 クラウディア
 本ページの設定では、2014年9月以降の「ports」を使用した場合、「qmail」の設定ができなくなっています。  「qmail」の設定については「トップ」ページより、更新日時の新しいものを参考にしてください。
1. ports インストール
2. コントロールファイルの作成
3. alias の設定
4. Maildir の作成
5. 不正中継させないための設定
6. ブートスクリプトの編集
7. sendmail の置きかえ
8. システムブートスクリプトの修正
9. システムの再起動

1. ports インストール

 qmail および qmail 関連の ports を手に入れます。
qmail         → /usr/ports/mail/qmail/
procmail      → /usr/ports/mail/procmail/
relay-ctrl    → /usr/ports/mail/relay-ctrl/
checkpassword → /usr/ports/security/checkpassword/
tcpserver     → /usr/ports/sysutils/ucspi-tcp/
envdir        → /usr/ports/sysutils/daemontools/
 qmail のインストールでは多くのオプションが用意されています。実際の画面は以下のように出ます。
「FreeBSD 8.4 RELEASE」-「/usr/ports/mail/qmail/」「make config」

 オプションは、よくわからないものがあり、参考サイトのリンクを掲載していましたが、リンク切れになってしまいました。
 わたしは以下のオプションにチェックをいれています。

    ・QMAILQUEUE_PATCH  qmail-scanner を使用するには必須
    ・LOCALTIME_PATCH   日本時間で処理できるようにする
    ・DISCBOUNCES_PATCH ダブルバウンスメールの扱いを他の MTA と同様にする
    ・RCDLINK           起動スクリプトのシンボリックリンクを生成

 インストールが成功すれば /var/qmail/ 以下に /var/qmail/ 用のディレクトリは自動的に作られていますし、ユーザ群、グループ群も作成されます。インストール後に vipw コマンドでのぞいてみると


alias:*:81:81::0:0:User &:/var/qmail/alias:/nonexistent
qmaill:*:83:81::0:0:User &:/var/qmail:/nonexistent
qmaild:*:82:81::0:0:User &:/var/qmail:/nonexistent
qmailp:*:84:81::0:0:User &:/var/qmail:/nonexistent
qmailq:*:85:82::0:0:User &:/var/qmail:/nonexistent
qmailr:*:86:82::0:0:User &:/var/qmail:/nonexistent
qmails:*:87:82::0:0:User &:/var/qmail:/nonexistent
 という具合に出来上がっているはずです。

2. コントロールファイルの作成

 まず、自分のホスト情報その他を qmail に教えるために、いくつかのファイルを作成します。  /var/qmail/control/に、以下のファイルを作成します。既に出来ているファイルがあるかもしれませんが、それについても編集しなおします。
defaultdomain
locals
me
plusdomain
rcphosts
 defaultdomain は以下のように記述します。

hogehoge.ne.jp
 locals は以下のように記述します。

localhost.hogehoge.ne.jp
local.hogehoge.ne.jp
hogehoge.ne.jp
 me は以下のように記述します。

hogehoge.ne.jp
 plusdmain は以下のように記述します。

ne.jp
 ここの例題が、ネットワーク組織なので、ne.jp にしてますが、あなたの設定するサーバが法人組織のものであれば、co.jp になります。他のところも全部、同様なので間違いのないように御願いします。  rcphosts は以下のように記述します。

localhost.hogehoge.ne.jp
ns.local.hogehoge.ne.jp
hogehoge.ne.jp

3. alias の設定

 qmail では個々のユーザが user-foo という形式の拡張アドレスを管理できます。  user-foo 宛のメールは ~user/.qmail-foo に処理方法を書けます。  ユーザ名で始まっていないアドレスは疑似ユーザ alias により管理されます。 例えば、foo 宛のメールは /var/qmail/alias/.qmail-foo に処理方法を書きます。  sendmailでは、/etc/aliases に転送先を記述しますが、qmail では、/etc/aliases をそのままサポートする機能はありません。  通常のログインユーザ以外のユーザで、メールを受信する可能性のあるものは、/var/qmail/alias/.qmail-foo にその転送先を記述しておきましょう。  最低限、設定しておくべき alias の一覧
postmaster      メール管理者のメールアドレスです
mailer-daemon   宛先不明のメールの差出先です
                宛先不明のメールを受信することにより、
                メールアドレスをパンチミスしてしまったメールを受け取ることができます
root            FreeBSD では、daemon がこのアドレスに
                daily、weekly、monthly にログを送ってきます
 これらのファイルは、qmail をインストールした時点で作成されています。  それぞれのファイルに、受取るべきメールアドレスを記述します。もしあなたがサーバの管理人であり、これらのすべてのメールを受取るべきであるとします。あなたのメールアドレスを仮に、foo@
仮名
.ne.jp であるとすれば作ったすべてのファイルに

foo@hogehoge.ne.jp
 と記述してください。それで、これらのメールアドレス宛のメールはすべて受取れるようになるはずです。  もちろん、それぞれが別管理であれば、管理人のメールアドレスを記述すればよいわけです。

4. Maildir の作成

 sendmail では、メールは、/var/spool/mail/user というディレクトリにためられますが、qmail では、~user/Maildir/ というユーザ個々のディレクトリにためられます。  ~user/Maildir を作成するには、それぞれのユーザでログインし、次のコマンドを使います。

> /var/qmail/bin/maildirmake $HOME/Maildir
 さらに、.qmail と .procmailrc というファイルを作成してデフォルトで次のように記述します。  .qmail は

| /var/qmail/bin/preline /usr/local/bin/procmail ./.procmailrc
 .procmailrc は

PATH=/usr/bin:/usr/local/bin
MAILDIR=$HOME/Maildir/
DEFAULT=$MAILDIR
 すべてのユーザに対して、これを行わなければなりません。  既に作ってしまっているユーザに対しては、これをやらなければ仕方ありませんがこれから、新しいユーザを作るたびにこれをやらなければならないとするとたまりませんね。  そこで、adduser のたびに自動的に ~user/Maildir、.qmail、.procmailrc を作成するようにしましょう。

> cd /usr/share/skel
> /var/qmail/bin/maildirmake Maildir
 とやってまず、ユーザ用の Maildir ディレクトリを作っておきます。  それから、同じ /usr/share/skel のディレクトリ内に、さきほどと同じ内容を記述した、dot.qmail、dot.procmailrc というファイルを作っておきます。  こうしておけば、~user/Maildir、.qmail、.procmailrc の雛型が作成され、その後 adduser する毎に自動的に、個々の qmail 用の設定を行ってくれます。

5. 不正中継させないための設定

 不正中継させないためには以下のような設定を行います。  不正中継されると SPAM メールの中継地点として利用され、多くの人々に迷惑をかけてしまいます。その上、MAPS RBL/ORB UK という2つの SPAM メールデータベースに登録されてしまうと、こちらから送信するメールを誰も受取ってくれなくなる恐れがあります。  tcpserver は、もうインストールしていますね。  /etc/ ディレクトリに、tcp.smtp というファイルを作って次のように編集します。あなたのグローバルネットワークアドレスを仮に xxx.yyy.zzz.0/29 とします。

127.:allow,RELAYCLIENT=""
192.168.0.:allow,RELAYCLIENT=""
xxx.yyy.zzz.0-8:allow,RELAYCLIENT=""
 1行目は、ループバックアドレスです。127.*.*.* のアドレスから、メール中継させるという意味です。  2行目は、ローカルアドレスです。192.168.0.* のアドレスから、メール中継させるという意味です。  3行目は、グローバルアドレスです。xxx.yyy.zzz.0 から xxx.yyy.zzz.8 までのアドレスからメール中継させるという意味です。  他にも、安全が確認できて、どうしても中継させたいアドレスがあれば、上記の表記方法を応用して、記述してください。  先頭行に # を使うとコメント行として使えますので、中継アドレスが多ければ、忘れないように、コメントしておきましょう。もし、中継させないようになったらすぐ消せるようなコメントを書いておきましょう。  tcp.smtp の編集が終わったら、次のコマンドでデータベースを作成します。

> tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
 /etc/tcp.smtp を編集しなおす機会があったら、毎回このコマンドを実行してください。

6. ブートスクリプトの編集

 FreeBSD 4.2-RELEASE 以降は、システムプログラムは、/etc/rc.conf のスクリプトで起動し、それ以外のアプリケーションは、/usr/local/etc/rc.d/ というディレクトリに
仮名
.sh というスクリプトファイルで起動します。  qmail の場合は、/usr/local/etc/rc.d/qmail.sh です。  /usr/local/etc/rc.d/qmail.sh は、以下のように編集します(tcpserver と checkpassword は、もうインストールしていますね?)。

#!/bin/sh

# Using splogger to send the log through syslog.
# Using qmail-local to deliver messages to ~/Mailbox by default.
#

case $1 in
start)
        echo "Start qmail ..."
        exec env - PATH="/var/qmail/bin:$PATH" \
        qmail-start ./Maildir/ splogger qmail &

        /usr/local/bin/tcpserver -v -u 82 -g 81 \
        -x /etc/tcp.smtp.cdb \
        0 smtp /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger \
        smtpd 3 &

        /usr/local/bin/envdir /usr/local/etc/relay-ctrl \
        /usr/local/bin/relay-ctrl-chdir \
        /usr/local/bin/tcpserver 0 pop3 /var/qmail/bin/qmail-popup \
        ns.hogehoge.ne.jp \
        /usr/local/bin/checkpassword \
        /usr/local/bin/relay-ctrl-allow \
        /var/qmail/bin/qmail-pop3d Maildir &
        ;;
stop)
        # stop daemons.
        echo "Stop qmail ..."
        PID=`/bin/ps -afw | grep qmail | awk '{print $1}'`
        if [ ! -z "$PID" ] ; then
            /bin/kill ${PID} 1> /dev/null 2>&1
        fi
        ;;
status)
        /bin/ps -afw | grep qmail
        ;;

*)
        echo "usage: `basename $0` {start|stop|status}" >&2
        exit 64
        ;;
esac
 最初の4行は、デフォルトでこのように記述されているはずです。3、4行目の # で始まる行は、コメント行ですが、1行目は、シェルとして、/bin/sh を使うという意味なので、絶対に変更しないでください。  /usr/local/etc/rc.d/qmail.sh は、/var/qmail/rc にシンボリックリンクをはっていますので、実態は、/var/qmail/rc です。  デフォルトでは、/var/qmail/rc は実行属性がついていませんので、/usr/local/etc/rc.d/qmail.sh を編集後、

> chmod +x /var/qmail/rc
で、実行属性をつけておきましょう。

7. sendmail の置き換え

 まず、現在実行中の sendmail があれば、これを停止させます。

> /etc/rc.d/sendmail stop
 sendmail の queue、/var/spool/mqueue に queue が残っていたら、

> /usr/sbin/sendmail -q
 で、queue を削除します。しばらく待って、queue が完全になくなるまで続けます。  たまった queue の量によっては、数日かかることもあるそうです。  sendmail のアプリケーションの属性を全部削って、rename します。

> chmod 0 /usr/libexec/sendmail/sendmail
> chmod 0 /usr/sbin/sendmail
> mv /usr/libexec/sendmail/sendmail /usr/libexec/sendmail/sendmail.bak
> mv /usr/sbin/sendmail /usr/sbin/sendmail.bak
 それから、sendmail を使用しているスクリプトなどが困らないように、qmail の sendmail wrapper を sendmail にシンボリックリンクします。

> ln -s /var/qmail/bin/sendmail /usr/libexec/sendmail/sendmail
> ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
 次に binmail を以下のようにして動かなくします。

> chmod 0 /usr/libexec/mail.local
 /etc/inetd.conf の comsat の行が有効になっていたらコメントアウトします。そして、

> kill -HUP `cat /var/run/inetd.pid`
 で再起動します。

8. システムブートスクリプトの修正

 FreeBSD 4.x-RELEASE から、デフォルトで sendmail が enable になっています。  以前のバージョンでは、/etc/rc.conf から、sendmail_enable="YES" の記述をコメントアウトするか、sendmail_enable="NO" と記述するだけで、ブート時の sendmail daemon の起動を無効化できていたのですが、FreeBSD 4.x-RELEASE 以降では、/etc/rc.conf の

sendmail_enable="YES"
の行を

sendmail_enable="NONE"
と記述しなおしてください。これでブート時の sendmail daemon の起動を無効化できます。  sendmail のテンポラリファイル等を日々整理するために daily run output に動作する処理のせいで

Removing stale entries from sendmail host status cache:
/etc/periodic/daily/150.clean-hoststat: purgestat: Permission denied

Mail in submit queue:
mailq: illegal option -- A
sendmail: usage: sendmail [ -t ] [ -fsender ] [ -Fname ] [ -bp ] [ -bs ] [ arg ... ]
 というメッセージが出力されます。  これを出力させないようにするには、/etc/defaults/periodic.conf の

daily_clean_hoststat_enable="YES"			# Purge sendmail host

daily_status_include_submit_mailq="YES"         # Also submit queue
 の2個所を探して、"YES" の記述を "NO" に書きかえます。

9. システムの再起動

 最後に

shutdown -r now
で、システムを再起動後、

ps -ax | grep qmail
 で、qmail の daemon 群が起動されていることを確認します。  おそらく

93456  p0- I      0:01.48 qmail-send
93458  p0- I      0:00.21 /var/qmail/bin/splogger smtpd 3
93459  p0- S      0:01.34 /usr/local/bin/tcpserver 0 pop3 /var/qmail/bin/qmail-p
93460  p0- I      0:00.40 splogger qmail
93461  p0- I      0:00.22 qmail-lspawn ./Maildir/
93462  p0- I      0:00.07 qmail-rspawn
93463  p0- I      0:00.13 qmail-clean
 などの「daemon」群が表示されることと思います。  ここまで、行けば、クライアント PC にメールアドレスの設定をして、メールの送受信が出来ることを確認してください。
earthcar(アースカー)
U-NEXT
Amazonギフトカード
ハイスピードプラン
それがだいじWi-Fi
薬屋の独り言