qmail サーバの運用と管理術 · 2009-03-31 ·...

26
http://www.atmarkit.co.jp/flinux/rensai/qmail01/qmail01a.html から引用(一部改変) qmail サーバの運用と管理術 sendmail から qmail へ 「進化の最終形は絶滅である」という説をご存じでしょうか。複雑になりすぎたシステムは, その複雑さゆえに自己の適応能力が環境の変化に追い付けず,絶滅の道をたどるといっ た内容だったと記憶しています。 メール配送システム(MTA:Mail Transfer Agent)の代名詞であり,インターネット発展の 礎ともなった sendmail は,誕生以来いくたびかの補修と修繕を繰り返し,いままさに進化の 最終形 にさしかかっているように感じます。そこまで大げさではないとしても,sendmail に 何らかの変革を望むサーバ管理者は多いのではないのでしょうか (その変革の 1 つに 「sendmail 9」があるのだと思います)。SPAM 対策や SMTP の不正中継に辟易し,事有るご とに sendmail に簡易性を求めることも少なくないと思います。セキュリティやバグ対策もしか りです。 「メールユーザー≒UNIX ユーザー」であったインターネット創成期,SPAM というも のも存在せず,それどころかインターネット利用者全員が 1 つの互助 会に属している良き 仲間であったころに誕生した sendmail では,セキュリティをはじめとする多くの要望を満たす ことに限界がきています。もちろん, それらをすべて解決することは不可能ではありません。 むしろ,sendmail は多くの要望に対応できる柔軟性があります。その範疇は広すぎるくらい です。 問題は,解決の手段を得るまでにどれほどの時間を費やさなくてはいけないかということ です。SPAM や不正中継,セキュリティを考慮しなくてはいけない時代にサーバ管理者とな ってしまった方が待ち望んでいたもの,それがいまから紹介する qmail です。 次世代 MTA といわれるものを挙げると,次の 4 つがあります。 qmail http://www.qmail.org/top.htmlqmail の公式ページではありません) Exim http://www.exim.org/ Postfix http://www.postfix.org/ ZMailer http://www.zmailer.org/

Upload: others

Post on 26-Jun-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: qmail サーバの運用と管理術 · 2009-03-31 · はメールサーバとして必要最少限の動作を提供するにとどめています。例えば,中継ホスト

※ http://www.atmarkit.co.jp/flinux/rensai/qmail01/qmail01a.html から引用(一部改変)

qmail サーバの運用と管理術

sendmail から qmail へ

「進化の 終形は絶滅である」という説をご存じでしょうか。複雑になりすぎたシステムは,

その複雑さゆえに自己の適応能力が環境の変化に追い付けず,絶滅の道をたどるといっ

た内容だったと記憶しています。

メール配送システム(MTA:Mail Transfer Agent)の代名詞であり,インターネット発展の

礎ともなった sendmail は,誕生以来いくたびかの補修と修繕を繰り返し,いままさに進化の

終形 にさしかかっているように感じます。そこまで大げさではないとしても,sendmail に

何らかの変革を望むサーバ管理者は多いのではないのでしょうか (その変革の 1 つに

「sendmail 9」があるのだと思います)。SPAM 対策や SMTP の不正中継に辟易し,事有るご

とに sendmail に簡易性を求めることも少なくないと思います。セキュリティやバグ対策もしか

りです。 「メールユーザー≒UNIX ユーザー」であったインターネット創成期,SPAM というも

のも存在せず,それどころかインターネット利用者全員が 1 つの互助 会に属している良き

仲間であったころに誕生したsendmailでは,セキュリティをはじめとする多くの要望を満たす

ことに限界がきています。もちろん, それらをすべて解決することは不可能ではありません。

むしろ,sendmail は多くの要望に対応できる柔軟性があります。その範疇は広すぎるくらい

です。

問題は,解決の手段を得るまでにどれほどの時間を費やさなくてはいけないかということ

です。SPAM や不正中継,セキュリティを考慮しなくてはいけない時代にサーバ管理者とな

ってしまった方が待ち望んでいたもの,それがいまから紹介する qmail です。

次世代 MTA といわれるものを挙げると,次の 4 つがあります。

• qmail http://www.qmail.org/top.html(qmail の公式ページではありません)

• Exim http://www.exim.org/

• Postfix http://www.postfix.org/

• ZMailer http://www.zmailer.org/

Page 2: qmail サーバの運用と管理術 · 2009-03-31 · はメールサーバとして必要最少限の動作を提供するにとどめています。例えば,中継ホスト

新世代 MTA として特に注目されているのが qmail と Postfix です。両者とも sendmail を

意識したうえで開発されたMTAです。qmail はsendmailとの互換性にこだわらず,信頼性と

性能を追求した成果として,Postfix はなるべく互換を保ちながら,qmail よりも後発だったの

で qmail からもいいところを吸収した成果として誕生しました。

Postfix も優れた MTA です。 sendmail との互換性を主張しつつも,qmail の特徴である

「Maildir」というメールスプール形式を採用し,活発に開発が続けられていま す。ですが,ど

うせ sendmail から乗り換えるのなら,あえて互換性にこだわらない潔さをよしとする qmail に

触れてみるのもサーバ管理者としての 幅を広げると思います。また,qmail には多くのパッ

チやツールが用意されています。その中には,いまはやりの「Web mail」や「POP before

SMTP」,バーチャルドメインメールサービスを実現するためのものもあります。

MTA 乗り換えのメリットは,管理者だけでなくサーバを使用するユーザーにももたらされる

と思います。本連載では,管理者として qmail のインストールや運用を行うにとどまらず,サ

ーバを使用する一般ユーザーも恩恵を受けられるような使用方法を紹介していきます。

■qmail の仕組み

qmailは,D. J. Bernstein氏(http://cr.yp.to/djb.html)によって提供されています。sendmail

を反面教師としている qmail は,次の点で sendmail と大きく違います。

1. sendmail が,メッセージを単一のファイルに結合して全ユーザーが共通のディレクトリ

を使用する mbox 形式であるのに対し,qmail は各ユーザーのホームディレクトリに 1 つ

のメッセージを 1 ファイルとして保存する Maildir 形式である

2. sendmail ではメール配送にかかわる処理を 1 つのプロセスで実行しているのに対し,

qmail ではメール配送にかかわる処理を複数のプログラムに分割している

/var/spool/mail をのぞいてみると,そこには全ユーザーのメッセージがユーザー1 人に

つき 1 ファイルで保存されているのが分かります。メールのファイルを見てみると, From や

To などが表記されたヘッダ情報があり, 初のヘッダから次のヘッダの間にメッセージ本

体である body が表記されていることに気づくと思いま す。仕切りとなっているヘッダ情報が

何らかの理由で壊れると,ほかのメッセージにも影響を与えてしまうことが分かるでしょう。

メールを保存するのも読み出 すのも 1 つのファイルを対象にしているため,同時に複数の

処理が発生して,さらにファイルの排他制御が働いていなければ,ファイルを正常な形に保

つのは難 しくなります。Maildir はそれを も単純な方法で解決した結果だといえます。

配送システムに目を向けてみると, sendmail はローカル配信やリモート配信などすべて

の処理を「sendmail」という1つのプロセスで管理しています。きれいな実装ですが,それ ゆ

えに sendmail の改変には手間を要します。大きなシステムほど,複雑さも増します。それな

ら処理ごとに小さなプログラムに分けてしまった方が効率 がよくなる,というのが qmail の

Page 3: qmail サーバの運用と管理術 · 2009-03-31 · はメールサーバとして必要最少限の動作を提供するにとどめています。例えば,中継ホスト

発想です。セキュリティホールなどが発見されたとしても,小さなプログラムごとに問題を片

付けることが可能になります。また,qmail のプログラムは 3 つのグループに分かれており,

それぞれのグループは他グループの機能さえも信頼しないという前提で動作します。どこ

か 1 つのグループが仮に乗っ取られてしまったとしても,ほかの 2 つのグループは乗っ取ら

れてしまったグループからの攻撃にさえ対応できるの です。さらに,qmail-1.03 誕生以来,

qmail そのものの脆弱性は報告されていません(もちろん運用を誤ればその保証の限りで

はありません が)。

qmail の設定

■コントロールファイルの編集

qmail をインストールしたら,次に動作に必要な設定を見ていきます。/var/qmail/control

にはいくつかのファイルが作成されています。/var/qmail/control ディレクトリに移動し,

emacs などのエディタで編集を行います。それぞれのファイルに対する必要な項目は次の

ようになります。

・defaultdomain

example.jp

to ヘッダなどにドメイン名が省略された場合,補完されるドメイン名

・locals

localhost

localhost.example.jp

host.example.jp

example.jp

受信するホスト名・ドメイン名:qmail-send が利用

・rcpthosts

localhost

example.jp

.example.jp

受信するホスト名・ドメイン名:qmail-smtpd が利用

・me

host.example.jp

自サーバの FQDN

Page 4: qmail サーバの運用と管理術 · 2009-03-31 · はメールサーバとして必要最少限の動作を提供するにとどめています。例えば,中継ホスト

・plusdomain

example.jp

ドメイン部が+で終わっている場合に付加されるドメイン。「user@host+」なら

[email protected]」と置換される(qmal-inject が利用)

以上で設定はほぼ終了です。たった 5 つのファイルを編集するだけで 小限の動作が可

能で,不正中継対策も施されます。単純すぎて拍子抜けしてしまいましたか? 実際,qmail

はメールサーバとして必要 少限の動作を提供するにとどめています。例えば,中継ホスト

の設定を柔軟に行いたい場合やスプールに対して制限したい場合は,アドオンソフトを使用

することになります。

設定が整ったところで,起動の準備を行います。まず postmaster,MAILER-DAEMON,

root といった重要なアカウントに対する配信の設定です。

# cd /var/qmail/alias

# touch .qmail-postmaster .qmail-mailer-daemon .qmail-root

# chmod 644 .qmail*

これで postmaster,MAILER-DAEMON,root あてのメールは/var/qmail/alias に保存され

ます。

■sendmail の停止とラッパー

すでに sendmail が動作するようになっている場合は,sendmail の動作を止める必要があ

ります。

# /etc/rc.d/init.d/sendmail stop

また,次からサーバ起動時に sendmail が立ち上がらないように起動スクリプトを外しま

す。

# mv /etc/rc.d/rc2.d/S80sendmail /etc/rc.d/rc2.d/_S80sendmail

# mv /etc/rc.d/rc3.d/S80sendmail /etc/rc.d/rc3.d/_S80sendmail

# mv /etc/rc.d/rc5.d/S80sendmail /etc/rc.d/rc5.d/_S80sendmail

mail コマンドや CGI スクリプトなどで直接/usr/lib/sendmail を参照する場合のことを考え,

qmail の sendmail ラッパーで置き換えます。

Page 5: qmail サーバの運用と管理術 · 2009-03-31 · はメールサーバとして必要最少限の動作を提供するにとどめています。例えば,中継ホスト

# cd /usr/sbin

# mv sendmail sendmail.dist

# chmod 0 sendmail.dist

# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail

■qmail の動作確認

では,qmail サーバを起動してみましょう。ここで紹介する方法は,動作を確認するための

ものです。実際の運用では,後半で紹介する tcpserver を使った起動方法を使ってくださ

い。

起動スクリプトを用意し,実行します。/var/qmail/boot/home を/var/qmail に rc という名

前でコピーします。

# cp /var/qmail/boot/home /var/qmail/rc

# /var/qmail/rc &

次に,/etc/inetd.conf ファイルに次の行を追加して inetd デーモンを再起動します。

smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env tcp-env

/var/qmail/bin/qmail-smtpd

もしほかに「smtp」で始まる行があれば「#」を行頭に付けてコメントアウトします

# /etc/rc.d/init.d/inet restart

以上で動作確認のための準備は完了です。では,動作を確認してみましょう。ps コマンド

でプロセスが実行されているかを確認します。

# ps -aef | grep qmail

qmails 14540 13180 0 00:54 pts/4 00:00:00 qmail-send

qmaill 14541 14540 0 00:54 pts/4 00:00:00 splogger qmail

root 14542 14540 0 00:54 pts/4 00:00:00 qmail-lspawn ./Mailbox

qmailr 14543 14540 0 00:54 pts/4 00:00:00 qmail-rspawn

qmailq 14544 14540 0 00:54 pts/4 00:00:00 qmail-clean

次にメールを出してみましょう。

# echo to: [email protected] | /var/qmail/bin/qmail-inject

Page 6: qmail サーバの運用と管理術 · 2009-03-31 · はメールサーバとして必要最少限の動作を提供するにとどめています。例えば,中継ホスト

これで,空のメールが/var/qmail/alias/の Mailbox ファイルに届いているはずです。

# more /var/qmail/alias/Mailbox

で確認してみましょう。

■Maildir への移行

ここで「Maildirじゃないの?」と疑問に思った方もいると思います。動いているプロセスを見

ると,確かに「qmail-lspawn ./Mailbox」となっています。

qmail の特徴は,sendmail の mbox 形式に対していくつものメリットがある Maildir 形式だと

説明しました。しかし,Maildirを使うにはもう 少し作業が必要です。ユーザーごとにmboxか

Maildir かを選択することも可能ですが,ここでは Maildir にデフォルトで対応するようにしま

す。

先ほど用意した/var/qmail/rc ファイルの内容を下記のように編集します。

qmail-start ./Mailbox splogger qmail

qmail-start ./Maildir/ splogger qmail

mbox では各ユーザーのホームディレクトリに Mailbox ファイルが作成されますが,Maildir

ディレクトリは手動で生成する必要があります。

# /var/qmail/bin/maildirmake ~alias/Maildir

# chown -R alias /var/qmail/alias/Maildir

これで Maildir に対応しました。Postfix では,Maildir を使用するように設定すると各ユー

ザーのホームディレクトリにMaildir ディレクトリが自動生成されますが,qmailでは手動で対

応する必要があるので注意してください。各ユーザーのアカウントで,

$ /var/qmail/bin/maildirmake ~/Maildir

を実行するか,root が代わりに作成する必要があります。root 権限で実行した場合は,

chown で Maildir ディレクトリのオーナーが各ユーザーになるように変更してください。

新規のユーザーについては,/etc/skel ディレクトリに Maildir のひな型を置いておくと,

adduser コマンドなどでユーザーを作成した際に自動で Maildir ディレクトリが生成されるよう

になります。具体的には,下記のようにします。

Page 7: qmail サーバの運用と管理術 · 2009-03-31 · はメールサーバとして必要最少限の動作を提供するにとどめています。例えば,中継ホスト

# /var/qmail/bin/maildirmake /etc/skel/Maildir

では,Maildir 対応版で qmail を起動し直します。現在起動している各 qmail プロセスを kill

コマンドで終了させ,ps コマンドで qmail プロセスが残っていないことを確認してください。そ

の後もう 1 度,

# /var/qmail/rc &

を実行します。

念のために配送テストをもう 1 度行います。

# echo to: [email protected] | /var/qmail/bin/qmail-inject

今度は Mailbox ファイルではなく,Maildir/new ディレクトリにファイルが 1 つできていると思

います。そこでもう 1 度配送テストを行うと,次に届いたメールは別のファイルとして保存さ

れるはずです。

tcpserver による起動の設定

これまでに紹介していた起動方法は,qmail の動作を確認するための便宜上のものです。

実際のメールサーバ運用でinetdを使うのは,サービスに求められる堅牢さとセキュリティを

考えるとお勧めできません。TCP_Wrapper を併用したり,xinetd を使うのも 1 つの方法です

が,ここでは qmail の作者である D. J. Bernstein 氏が提供している tcpserver を使う方法を

紹介します。

■tcpserver とは

tcpserver は ucspi-tcp パッ ケージの一部として提供されているもので,qmail の特徴を紹

介する際には tcpserver が提供する機能を含めていることがほとんどです。そうした 点から

も,qmail を tcpserver と切り離して動作させることは極めてまれと考えた方がいいでしょう。

tcpserver には,inetd などの 従来のサービス起動プロセスと比べて次のようなメリットがあ

ります。

• DoS 攻撃にも対応できるように,同時接続に対する制限がかけられる

• ユーザー名・IP アドレス・ドメイン名を基に接続制限がかけられる

Page 8: qmail サーバの運用と管理術 · 2009-03-31 · はメールサーバとして必要最少限の動作を提供するにとどめています。例えば,中継ホスト

• qmail が動作しているホストに複数の IP アドレスを割り振っている場合(複数の LAN イ

ンターフェイスを持っているなど),特定の IP アドレスでのみサービスを受け付けるよう

に設定できる。「アドレス A は SMTP 用,アドレス B は POP サーバ用」などの使い分け

が可能

• 上記の要求を制御する設定ファイルはハッシュを用いた独自のデータベースファイル

(cdb)を使用しているため,設定がきめ細かくなったり,数百行に及んでも高速な処理

が可能。また設定の変更にサービスの再起動は必要ない

■tcpserver のインストールと cdb の作成

tcpserver のインストールは,qmail 同様極めて簡単です。

ftp://ftp.jp.qmail.org/qmail/ucspi-tcp-0.88.tar.gz

をダウンロードして,

# tar xvfz ../ucspi-tcp-0.88.tar.gz

# cd ucspi-tcp-0.88/

# make setup check

を実行すれば/usr/local/bin に tcpserver をはじめとする ucspi-tcp パッケージがインストー

ルされます。

次に設定ですが,まず cdb の基になるファイルを準備します。ここでは/etc ディレクトリに

tcp.smtp ファイルとして作成します。

# vi /etc/tcp.smtp

192.168.0.:allow,RELAYCLIENT=""

127.:allow,RELAYCLIENT=""

tcpserver は,動作に必要なホスト名や IP アドレスなどの情報を環境変数から取り出しま

す。例えば,1 行目の設定は「192.168.0.*からの接続は環境変数 RELAYCLIENT に設定し,

接続を許可する」となります。大きなサブネットで許可したくないという場合は,

192.168.0.0-31:allow,RELAYCLIENT=""

などのようにしてアドレスの範囲を指定します。これで 192.168.0.0 から 192.168.0.31 までが

対象になります。逆に,接続を拒否したい場合は次のようになります。

Page 9: qmail サーバの運用と管理術 · 2009-03-31 · はメールサーバとして必要最少限の動作を提供するにとどめています。例えば,中継ホスト

192.168.0.:deny

では,cdb ファイルを作成します。cdb ファイルは以下のコマンドを実行することで作成でき

ます。

# /usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

■tcpserver による qmail の起動

準備が整ったところで,tcpserver 経由で qmail を起動します。前半で記述した inetd.conf

の記述を削除するかコメントアウトし,inetd を再起動します。

次に下記のコマンドを実行します(qmaild の UID や nofiles の GID は id qmaild コマンドで

確認できます)。

# tcpserver -v -u[qmaild の UID] -g[nofiles の GID]-x /etc/tcp.smtp.cdb 0 smtp

/var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 3 &

tcpserver の代表的なオプションには次のようなものがあります。

-v すべてのメッセージを出す

-u uid ユーザーID を uid に切り替える

-g gid グループ ID を gid に切り替える

-H 逆引きをしない(リモートホスト名を調べない)

-R ident(接続したサーバのユーザー情報について,付加的な情報を返す)しな

-x /etc/tcp.cdb cdb データベース(/etc/tcp.cdb)で制御する

-c limit 大同時接続数を limit に設定する(デフォルトは 40)

-P 逆引き,正引きで相手の正当性を調査する

これで完了です。前半で行った送信テストに加えて,tcp.smtp で加えた接続が許可されて

いるクライアントからも送信のテストを行ってみましょう(メールクライアントの設定で smtp サ

ーバの項目があれば,今回インストールした qmail サーバに変更します)。

サーバ起動のたびに上記のコマンドを打ち込むのは面倒なので,起動スクリプトを用意し

ます。下記の内容で/etc/rc.d/init.d ディレクトリに「qmail」として保存します。また,ダウンロ

ード用のファイルも用意しました。

Page 10: qmail サーバの運用と管理術 · 2009-03-31 · はメールサーバとして必要最少限の動作を提供するにとどめています。例えば,中継ホスト

#!/bin/sh

#

# qmail: /var/qmail

PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin

[ -f /var/qmail/rc ] || exit 0

case "$1" in

start)

# Start daemons.

echo "Starting qmail."

csh -cf '/var/qmail/rc &'

tcpserver -v -u [qmaild の UID] -g [nofiles の GID]-x /etc/tcp.smtp.cdb \

0 smtp /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 3 &

echo

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

echo

rm -f /var/lock/qmail

;;

*)

echo "Usage: S99qmail {start|stop}"

exit 1

esac

exit 0

それぞれのランレベルで起動されるように,起動スクリプトとリンクを張ります。

# ln -s /etc/rc.d/init.d/qmail /etc/rc.d/rc2.d/S99qmail

# ln -s /etc/rc.d/init.d/qmail /etc/rc.d/rc3.d/S99qmail

Page 11: qmail サーバの運用と管理術 · 2009-03-31 · はメールサーバとして必要最少限の動作を提供するにとどめています。例えば,中継ホスト

# ln -s /etc/rc.d/init.d/qmail /etc/rc.d/rc5.d/S99qmail

以上で qmail をメールサーバとして動作させることが可能となりました。実際の運用に移

るためには,まだまだ種々の制限やユーザーが使いやすいような拡 張を施す必要があり

ます。先立っては POP の実装が 低限必要だと思います。シェルでメールの読み書きをし

ているというユーザーはいまや少なくなり, UNIX をデスクトップマシンとして使っている方で

さえ,POP3 や IMAP でメールを取り込むことが多くなってきていると思います。次回は POP3

をはじめ,POP before SMTP や APOP,IMAP などのメール受信機能の実装を紹介します。

第 2 回 POP/IMAP サーバの構築と不正中継対策

SMTP サーバ機能だけではメールクライアントを使うことができない。今回はメールクライア

ントからアクセスできるようにするため,POP3,APOP,IMAP4 サーバを構築する。また,不

正中継対策として POP Before SMTP および IMAP Before SMTP 機能を組み込もう。

メール受信環境を構築するには

さて,サーバ(MTA)のメールボックスを直接読み書きしていたという時代ならいざ知らず,

いまや UNIX をデスクトップマシンとして使っている方でさえ,POP3 や IMAP4 でメールを取り

込むことが多くなってきていると思います。今回は,POP3 や IMAP4 でクライアントにメール

を取り込めるようにしましょう。

■メール受信を実現するプロトコル

SMTP はメール送信プロトコルの実質的な標準であるのに対し,メールボックスからメール

を取り出す仕組みは,MTA(サーバ)とMUA(各端末)のローカルな取り決めで済むため,用

途に応じて複数の手段が用意されています。

• POP3(Post Office Protocol version 3) バージョン 3 が付いていることからも分かるとおり歴史もあり,それ故に も多くのメ

ールクライアントに実装されています。認証時に平文でパスワードを流すため,パケット

盗聴による盗み見が危惧されています。多くのプロバイダで採用されているプロトコルで

す。

• APOP(Authenticated POP) POP のパケット盗聴による盗み見が危険視されたため,POP version 3 から APOP コ

Page 12: qmail サーバの運用と管理術 · 2009-03-31 · はメールサーバとして必要最少限の動作を提供するにとどめています。例えば,中継ホスト

マンドによる認証が RFC 1734 に規定されるようになりました。プロバイダ側のユーザー

管理が煩雑になるためか,採用されるケースは多くありませんが,セキュリティを高めな

がら汎用性を失わない手段としては も効果的です。

• IMAP4(Internet Mail Access Protocol version 4) POP がクライアント側に完全にメッセージをダウンロードし,クライアントでメッセ

ージの管理を行うのに対し,IMAP はサーバ側でメッセージの管理を 行い,クライアン

ト側はその操作を行います。ストレージ容量が限られているモバイル端末や複数人で PCを共有する環境などでは有効ですが,サーバ側の負担 が増えるためプロバイダなどで採

用されることはほとんどありません。

サーバに受信機能を組み込む際には,クライアントの対応が問題になります。どんなメー

ルソフトがどのプロトコルに対応しているか,確認してからサーバを構築しましょう(注)。

注:メールソフトの対応状況はこちらを参考にしてください。 滝澤 隆史著「MUAs for Windows - Windows のメイラーの評価 -」

http://www.emaillab.org/win-mailer/table-otherspec.html

■SPAM 対策は必須

近では,SPAM の 温床にされないように,送信時にもユーザー確認などの防御策を講

じる必要が出てきました。しかしながら,すべてのメールクライアントで「送信時の認証」が

実装されているわけではないため,この方法はクライアントソフトを限定できる場合に限ら

れます。そこで,多く用いられる手段としてPOP Before SMTPがあります。送信の前にPOP

で認証を行い,それから SMTP リレーを許可するというものです。今回は受信サーバの構

築とともにこちらの組み込み方法も紹介します(同様に IMAP Before SMTP についても取り

上げます)。

■POP3/IMAP4 導入の前に

これから構築作業に入るわけですが,以後の作業は Maildir 形式で qmail が起動されてい

ることを前提にしています。コマンドプロンプトの「#」は root,「$」は一般ユーザーでの作業

であることを示しています(「su -」は省略しています)。

また, 近の Linux ディストリビューションは標準で POP3 や IMAP4 が組み込まれている

ため,競合を起こさないようにサービスを停止しておく必要があります。/etc/inetd.conf ファ

イルを編集し,下記のように POP3,IMAP4 に関する行の先頭に「#」を付けてコメントアウト

します(xinetd を使用している環境では/etc/xinetd.d にある各サービスを定義しているファ

イル,または/etc/xinetd.conf の該当セクションの中で disable = yes とします)。

Page 13: qmail サーバの運用と管理術 · 2009-03-31 · はメールサーバとして必要最少限の動作を提供するにとどめています。例えば,中継ホスト

#pop3 stream tcp nowait root /usr/sbin/ipop3d ipop3d

#imap4 stream tcp nowait root /usr/sbin/imapd imapd

次に,inetd デーモンプロセスに HUP 信号を送って再起動します(xinetd の場合は xinetd

に置き換えてください)。

# ps -aef | grep inetd

root プロセス番号 1 0 09:41 ? 00:00:00 inetd -wW

# kill -HUP プロセス番号

また,下記のように telnet で,

# telnet localhost 110

Trying 127.0.0.1...

telnet: Unable to connect to remote host: Connection refused

となることを確認し,POP3 が使用するサービスポート 110 番がフリーになっていることを確

認します。同様に IMAP4 が使用する 143 番もフリーになっていることを確認しておきます。

# telnet localhost 143

Trying 127.0.0.1...

telnet: Unable to connect to remote host: Connection refused

以降の作業では,たびたび qmail 起動スクリプト(前回紹介した/etc/rc.d/init.d/qmail スク

リプト)の修正を行います。修正を有効にするには,下記のようにサービスの再起動が必要

になります。

# /etc/rc.d/init.d/qmail stop

# /etc/rc.d/init.d/qmail start

注:/etc/rc.d/init.d がない場合は/etc/init.d に置き換えてください

第 2 回 POP/IMAP サーバの構築と不正中継対策

POP の導入と POP Before SMTP による不正中継対策

■POP3 の導入

まず,POP3 を導入してみましょう。

Page 14: qmail サーバの運用と管理術 · 2009-03-31 · はメールサーバとして必要最少限の動作を提供するにとどめています。例えば,中継ホスト

POP3 デーモン自体はすでに前回の qmail のインストールと同時にインストールされていま

す。/var/qmail/bin/qmail-pop3d がそれに当たります。しかし,このデーモン自体には認証

を行う機能がないため,認証機能を補う必要があります。平文パスワードによる も簡単な

認証確認の手段としては,D. J. Bernstein 氏が qmail とともに提供している checkpassword

があります。

http://cr.yp.to/checkpwd/checkpassword-0.90.tar.gz

をダウンロードし,ソースを展開します。

$ tar xvfz checkpassword-0.90.tar.gz

$ cd checkpassword-0.90

デフォルトのインストール先は,/bin になります。インストール先を/usr/local/bin などに変

更する場合は,conf-home ファイルに

/usr/local

と書き込んでおきます(注)。

注:conf-home ファイルに記述されたディレクトリ+/bin がインストール先になりま

す。

続いてコンパイルとインストールを行います。

$ make

# make setup check

これで/bin/checkpassword がインストールされました。前回の qmail のインストール同様,

起動は tcpserver を使用します。qmail スクリプトの start ブロックに以下の行を追加します。

start)

~省略~

tcpserver -v 0 pop3 /var/qmail/bin/qmail-popup [ サ ー バ の

FQDN] /bin/checkpassword \

/var/qmail/bin/qmail-pop3d Maildir 2>&1 \

| /var/qmail/bin/splogger pop3d 3 &

echo

touch /var/lock/qmail

Page 15: qmail サーバの運用と管理術 · 2009-03-31 · はメールサーバとして必要最少限の動作を提供するにとどめています。例えば,中継ホスト

;;

stop)

~省略~

注:[サーバの FQDN]:サーバ名をドメイン名部分の省略をせずに記述したもの。例:mail.example.jp

/etc/services に pop3 の記述がない場合は,

tcpserver -v 0 110 /var/qmail............

のように直接使用するリスニングポート 110 番を tcpserver の引数に指定してください。110

番以外を使用したい場合も同様に指定します。続いて後半のパイプ処理(|

/var/qmail/bin/splogger pop3d 3)で/var/log/messages にログを出力できるため,今後の

サーバ運用で活用できます。

では POP3/IMAP4 導入の前にで紹介した手順に従って qmail を再起動し,POP3 の動作

確認を行ってください。

■APOP の導入

続いて,APOP を導入してみましょう。APOP 自体は POP3 のログイン認証を行うコマンド

にすぎません。ここでも POP3 同様 qmail-pop3d を使用しますが,認証機能を付加するに

は APOP に対応しているものを選択する必要があります。ここでは,OHIRA, Shinya 氏が提

供している checkpw を使用します。

先ほどの checkpassword では/etc/shadow に登録されているパスワードを基に認証

(PAM)を行いましたが,checkpw ではパスワードを管理するために外部ファイルを用いて

いるのがポイントです。こうすることで,仮に POP パスワードが漏れてしまってもシステムの

パスワードまで盗まれるのを防げるため,ほかのサービスへの被害を 小限に抑えられま

す。

また,checkpw の場合,ユーザーの POP パスワードはユーザーが各自で管理できるよう

に,ユーザーの Maildir/下にファイルを保存します。パ スワード変更のたびにスーパーユ

ーザーの手を煩わせる必要がなくなります。その代わり,telnet でサーバにログインするな

ど,ユーザーに要求するスキ ルも上がるため,現実的には Web サービスと CGI を使ってパ

スワードの変更を行えるようにするといった手段が必要となる場合もあります。

では作業にかかりましょう。

http://www.geocities.co.jp/SiliconValley/4777/qmail/checkpw/

Page 16: qmail サーバの運用と管理術 · 2009-03-31 · はメールサーバとして必要最少限の動作を提供するにとどめています。例えば,中継ホスト

から checkpw-0.80.tar.gz をダウンロードして展開します。

$ tar xvfz checkpw-0.80.tar.gz

$ cd checkpw-0.80/

checkpassword 同様に,インストール先を変更するには conf-home を編集します。デフォ

ルトでは/bin がインストール先になります。ここではそのまま使用します。ほかにもさまざま

な conf-*ファイルが用意されています。

• conf-home インストール先。実際には bin を付加したものになります。/usr/local を指定した場合

は/usr/local/bin にインストールされます。デフォルトは「/」。

• conf-qmail qmail がインストールされているディレクトリ。デフォルトは「/var/qmail」。

• conf-maildir Maildir ディレクトリ名。デフォルトは「Maildir」。

• conf-password 平文パスワードを収めたファイル名。デフォルトはユーザーごとの

「~/Maildir/.password」。

続いて checkpw のコンパイルとインストールを行います。

$ make

# make setup check

これで/bin/checkapoppw,/bin/checkpw,/bin/selectcheckpw がインストールされました。

先ほどの POP 導入時に変更した qmail スクリプト中の/bin/checkpassword を

/bin/checkapoppw に置き換えます。

start)

~省略~

tcpserver -v 0 pop3 /var/qmail/bin/qmail-popup [ サ ー バ の

FQDN] /bin/checkapoppw \

/var/qmail/bin/qmail-pop3d Maildir 2>&1 \

| /var/qmail/bin/splogger pop3d 3 &

echo

touch /var/lock/qmail

Page 17: qmail サーバの運用と管理術 · 2009-03-31 · はメールサーバとして必要最少限の動作を提供するにとどめています。例えば,中継ホスト

;;

stop)

~省略~

次に各ユーザーにパスワードファイルを用意します。

$ echo 'パスワード' > ~/Maildir/.password

$ chmod 600 ~/Maildir/.password

必ずファイルパーミッションを変更しておいてください。これが正しく設定されていないと,

パスワードが合っていても APOP 認証に失敗します。

先ほどのインストールで,一般的な POP3 を行う/bin/checkpw もインストールされました。

checkpassword と大きく違うのは,/etc/shadow を使わずに外部ファイルによるパスワード

管理が行えるという点です。

qmail 起動スクリプトを修正します。

start)

~省略~

tcpserver -v 0 pop3 /var/qmail/bin/qmail-popup [ サ ー バ の

FQDN] /bin/checkpw \

/var/qmail/bin/qmail-pop3d Maildir 2>&1 \

| /var/qmail/bin/splogger pop3d 3 &

echo

touch /var/lock/qmail

;;

stop)

~省略~

ところで,APOP と POP3 を同時に使うことはできないのでしょうか? クライアント全員に

APOP を強制できる環境であれば APOP のみでサーバを構築することも可能ですが,それ

でもユーザー全員が APOP に対応したメール ソフト(MUA)を使用しているとは限りません。

やはり POP3 と APOP 両方のサービスを用意する必要があります。POP3 と APOP をそれ

ぞれ違う サービスポートで立ち上げれば,簡単にそれを実現できます。

start)

~省略~

tcpserver -v 0 110 /var/qmail/bin/qmail-popup [ サ ー バ の

Page 18: qmail サーバの運用と管理術 · 2009-03-31 · はメールサーバとして必要最少限の動作を提供するにとどめています。例えば,中継ホスト

FQDN] /bin/checkpw \

/var/qmail/bin/qmail-pop3d Maildir 2>&1 \

| /var/qmail/bin/splogger pop3d 3 &

tcpserver -v 0 1100 /var/qmail/bin/qmail-popup [ サ ー バ の

FQDN] /bin/checkapoppw \

/var/qmail/bin/qmail-pop3d Maildir 2>&1 \

| /var/qmail/bin/splogger pop3d 3 &

echo

touch /var/lock/qmail

;;

stop)

~省略~

qmail スクリプトを上記のようにすることで,APOP を使用するユーザーには 1100 番,

POP3 を使用する場合には従来どおり 110 番でメールの受信を行うよ うにできます。ただし,

ユーザー全員に周知させる必要があり,あまり優れた設計とはいえません。そこで qmail に

パッチを当て,同じポートで両方のサー ビスを提供できるようにします。前回の qmail のイ

ンストールに戻り,qmail-date-localtime.patch を当てたように, checkpw に含まれる

qmail-popup-auth.patch を当てます。

qmail-1.03 のソースを展開したディレクトリでもう一度コンパイル・インストールを行いま

す。

$ patch -p1 < checkpw-0.80 を展開したディレクトリ/qmail-popup-auth.patch

$ make

# make setup check

次に,qmail スクリプト中で checkpw や checkapoppwd を記述していた個所を

selectcheckpw に変更します。selectcheckpwスクリプトを使えば,クライアントの要求に応じ

て checkpw と checkapoppw を切り替えて起動できます。

start)

~省略~

tcpserver -v 0 pop3 /var/qmail/bin/qmail-popup [ サ ー バ の

FQDN] /bin/selectcheckpw \

/var/qmail/bin/qmail-pop3d Maildir 2>&1 \

| /var/qmail/bin/splogger pop3d 3 &

echo

touch /var/lock/qmail

Page 19: qmail サーバの運用と管理術 · 2009-03-31 · はメールサーバとして必要最少限の動作を提供するにとどめています。例えば,中継ホスト

;;

stop)

~省略~

APOP 認証に対応しているメールソフトを使用し,両方の認証に対応していることを確認し

てみましょう。

■POP Before SMTP の導入

前回,tcpserver は動作に必要なホスト名や IP アドレスなどの情報を環境変数から取り出

し,接続の許可を行うと説明しました。SMTP 接続許可は,使用する IP ブロックまたはドメイ

ンを環境変数 RELAYCLIENT に登録することで行います。

では,出張など出先でメールを送信したい場合はどうすればいいのでしょうか。あらかじめ

使用する IP が分かっていれば登録しておくこともできますが,プロバイダから与えられる IP

アドレスは接続ごとに変わります。かといって,Open Relay にしておけば SPAM メールの踏

み台に利用されてしまいます。

送信の前に何らかの手段を使ってクライアントの IP アドレスをサーバに通知すれば,局

所的な Relay の許可を行って送信を可能にできるはずです。都合の いいことに,メールの

受信にはユーザーの認証が行われ,適切なユーザーかどうかを判断できます。同時にクラ

イアントに割り当てられている IP アドレスを サーバに通知することも可能です。さらに都合

がいいことに,環境変数を収める cdb データベースの更新に tcpserver の再起動は必要あ

りません。これで,既存のサービスに大きな変更を施すことなく POP Before SMTP が導入

できます。

さまざまな Relay コントローラがありますが,ここでは導入が比較的簡単な relay-ctrl を使

用します。http://untroubled.org/relay-ctrl/から relay-ctrl-2.5.tar.gz をダウンロードして展

開します。

$ tar xvfz .relay-ctrl-2.5.tar.gz

$ cd relay-ctrl-2.5/

インストール先を変更する場合は defines.h を編集します。ここではデフォルトのままにし,

引き続き make とインストールを行います。

$ make

# make root-install

続いて設定ファイルを作成します。

Page 20: qmail サーバの運用と管理術 · 2009-03-31 · はメールサーバとして必要最少限の動作を提供するにとどめています。例えば,中継ホスト

# mkdir /etc/relay-ctrl

# mkdir /var/qmail/relay-ctrl

# mkdir /var/qmail/relay-ctrl/spool

# cd /etc/relay-ctrl/

# echo '900' > expiry

# echo ":allow,RELAYCLIENT=''" > rule (*)

# echo '/etc' > rulesdir

# echo 'tcp.smtp.cdb' > smtpcdb

# echo 'tcp.smtp' > smtprules

# echo '/var/qmail/relay-ctrl/spool' > spooldir

# echo '/usr/local/bin/tcprules' > tcprules

* ダブルクオートを使用している点に注意

/etc/relay-ctrl 下に生成されたファイルには,次のような意味があります。

• expiry Realyをオープンにした IPアドレスを記録したファイルの寿命。デフォルトは 900秒。

• rule POP で接続してきた IP アドレスに付加するルール。当然 Relay を許可しなくてはいけ

ないので「:allow,RELAYCLIENT=''」となります。

• rulesdir cdb ファイルとその基になるテキストファイルが収められているディレクトリ。デフォ

ルトは「/etc/tcpcontrol」。

• smtpcdb 更新する cdb ファイル名。デフォルトは「smtp.cdb」。

• smtprules cdb の基になるテキストファイル。前回 tcpserver のインストール時に使用した

tcp.smtp に当たります。デフォルトは「smtp.rules」。

• spooldir Relay を許可した IP アドレスを記録しておくスプール。デフォルトは

「/var/spool/relay-ctrl」。

• tcprules tcprules コマンドのパス。デフォルトは「/usr/bin/tcprules」。

Page 21: qmail サーバの運用と管理術 · 2009-03-31 · はメールサーバとして必要最少限の動作を提供するにとどめています。例えば,中継ホスト

次に,spool にたまった IP アドレスの記録を定期的に削除する指示を crontab に追加しま

す。

# crontab -e

として,下記の行を追加します。

* * * * * /usr/sbin/relay-ctrl-age

これで,記録を整理するプログラムを毎分起動するようになります。このプログラムにより,

expiry で指定された保存期間を過ぎた記録を消去できます。

次に qmail スクリプトを変更します。

start)

~省略~

tcpserver -v 0 pop3 /var/qmail/bin/qmail-popup [サーバの FQDN] [認証プログラム]

/usr/sbin/relay-ctrl-allow /var/qmail/bin/qmail-pop3d Maildir 2>&1 | /var/qma

echo

touch /var/lock/qmail

;;

stop)

~省略~

注:[認証プログラム]には,ここで紹介した

/bin/checkpassword /bin/checkpw /bin/checkapoppw /bin/selectcheckpw を用途によって指定します。

また,ここでは/usr/sbin/relay-ctrl-allow が root 権限で起動されていますが,さらにセキ

ュリティを高めるため,専用のユーザーを使用することをお勧めします。その場合は下記の

作業を行います。

/var/qmail/relay-ctrl をホームディレクトリに持つユーザーrelay-ctrl を作成し,ホームディ

レクトリのオーナーを変更します。

# adduser -d /var/qmail/relay-ctrl -s /bin/false relay-ctrl

# chown -R relay-ctrl /var/qmail/relay-ctrl

Page 22: qmail サーバの運用と管理術 · 2009-03-31 · はメールサーバとして必要最少限の動作を提供するにとどめています。例えば,中継ホスト

relay-ctrl-allow コマンドの所有者を変更し,もう一度 setuid します。

# chown relay-ctrl /usr/sbin/relay-ctrl-allow

# chmod u+s /usr/sbin/relay-ctrl-allow

cdb ファイルもユーザーrelay-ctrl によって上書きできる必要があるため,/etc/tcp.cdb か

ら書き込み可能な/var/qmail/relay-ctrl/tcp.smtp.cdb に変更します。

# cp /etc/tcp.smtp /var/qmail/relay-ctrl/.

# echo '/var/qmail/relay-ctrl' > /etc/relay-ctrl/rulesdir

cdb ファイルのパスが変更になるため,qmail-smtp を起動する tcpserver の起動方法も変

更する必要があります。

start)

~省略~

tcpserver -v -u[qmaild の UID] -g[nofiles の GID] -x /var/qmail/relay-ctrl/tcp.smt

/var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 3 &

tcpserver -v 0 pop3 /var/qmail/bin/qmail-popup [サーバの FQDN] [認証プログラム]

/usr/sbin/relay-ctrl-allow /var/qmail/bin/qmail-pop3d Maildir 2>&1 | /var/qma

echo

touch /var/lock/qmail

;;

stop)

~省略~

qmail を再起動し動作の確認を行いましょう。受信を行う前に送信を行ってみたり,受信・

送信を順番に行うなど,POP Before SMTP の挙動を確認してみましょう。

第 2 回 POP/IMAP サーバの構築と不正中継対策

鶴長 鎮一

2001/10/5

IMAP4 と IMAP Before SMTP の導入

■IMAP4 の導入

Page 23: qmail サーバの運用と管理術 · 2009-03-31 · はメールサーバとして必要最少限の動作を提供するにとどめています。例えば,中継ホスト

次に,Maildir に対応している courier-imap を使って,IMAP4 サーバを構築してみましょう。

courier-imap は IMAP4 だけでなく POP3 も兼ね備え,SSL が 実装されているため,より

安全にサービスを提供できます(クライアントも SSL に対応させる必要がありますが)。Web

メールを構築する場合も, IMAP4 サーバを利用すればプログラム側の負担を減らせます。

また,Maildir の quota など魅力的な機能を備えているので,興味がある方は Courier Mail

Server のホームページ(http://www.courier-mta.org/)を参照してください。

POP3 は qmail パッケージに含まれる qmail-pop3d を使用したため,スムーズに既存の

qmail サービスに組み込むことができました。しかし, IMAP4 はまったくゼロの状態から構

築することになります。また,courier-imap はコンフィグの過程ですでに組み込まれている

OpenSSL,OpenLDAP,MySQL を自動で検出して認証モジュールに組み込むため,意図せ

ず古いバージョンが混在していた場合,インストール に失敗することがあります。特に,

OpenSSL は 0.9.5a 以上が前提になります。OpenSSL を 新版にするには,下記の手順あ

るいは各ディスト リビュータが配布しているアップデートファイルを使ってインストールしまし

ょう。

$ tar xvfz openssl-0.9.6.tar.gz

$ cd openssl-0.9.6

$ ./config

$ make

$ make test

# make install

では,courier-imap をインストールしてみましょう。

http://www.courier-mta.org/download.php から courier-imap-1.3.11.tar.gz をダウンロード

して,下記の手順を実行します。root で実行すると make check 時に警告が出力されて続行

できないため,一般ユーザーで作業します。

$ tar xvfz courier-imap-1.3.11.tar.gz

$ cd courier-imap-1.3.11

$ ./configure --prefix=/usr/local

ここでは/usr/local 下にインストールするようにします。また,MySQL や LDAP を自動検出

しないようにするには次のようにします。

$ ./configure --without-authmysql --without-authldap

--prefix=/usr/local

Page 24: qmail サーバの運用と管理術 · 2009-03-31 · はメールサーバとして必要最少限の動作を提供するにとどめています。例えば,中継ホスト

$ make

$ make check

次に,courier-imap のインストールで上書きされてしまう/etc/pam.d/imap,

/etc/pam.d/pop3 のバックアップを取っておきます(ない場合もあります)。courier-imap の

POP3 機能を使用する場合は上書きされても構いませんが,checkpassword を使う場合は

バックアップから戻す必要があります。

# cd /etc/pam.d/

# cp imap imap.org

# cp pop3 pop3.org

# make install

# make install-configure

これまでの操作で下記のようにインストールされるはずです。

/usr/local/etc/ 設定ファイル

/usr/local/libexec/ 実行ファイル

/usr/local/libexec/authlib/ 認証のための拡張モジュール

それでは IMAP4 を起動してみましょう。起動には/usr/local/libexec/imapd.rc スクリプトフ

ァイルを使用します。

# /usr/local/libexec/imapd.rc start

サーバの起動とともに courier-imap も起動するようにするには,下記のようにします。

# cp /usr/local/libexec/imapd.rc /etc/rc.d/init.d/imapd

# ln -s /etc/rc.d/init.d/imapd /etc/rc.d/rc2.d/S99imapd

# ln -s /etc/rc.d/init.d/imapd /etc/rc.d/rc3.d/S99imapd

# ln -s /etc/rc.d/init.d/imapd /etc/rc.d/rc5.d/S99imapd

注:/etc/rc.d が存在しない場合はそれぞれ/etc/init.d,/etc/rc2.d に置き換えてください

うまく動作しない場合は,/var/log/maillog を手掛かりにしてください。認証に拡張モジュー

ルが組み込まれてしまって思うように動作しない場合は,下記の要領で拡張モジュールを

外します。

# cd /usr/local/libexec/authlib/

Page 25: qmail サーバの運用と管理術 · 2009-03-31 · はメールサーバとして必要最少限の動作を提供するにとどめています。例えば,中継ホスト

# mkdir old

# mv authdaemond.ldap old/

# mv authdaemond.mysql old/

その後,courier-imap を立ち上げ直します。

# /usr/local/libexec/imapd.rc stop

# /usr/local/libexec/imapd.rc start

IMAP4 と POP3 は併用可能ですが,POP3 でメッセージをクライアントに取り込んでしまう

と IMAP4 でサーバに接続した際にメッセージが読めなくなるので注 意が必要です。また,

courier-imap のインストール後にほかの POP3 が機能しなくなった場合は先ほどバックアッ

プを取った/etc/pam.d/pop3 を復元します。

■IMAP Before SMTP の導入

IMAP Before SMTP の導入は,POP Before SMTP の場合とほとんど同様です。

具体的には,courier-imap の起動スクリプト(/usr/local/libexec/imapd.rc)に下記のように

1 行追加するだけです。

~省略~

/usr/local/libexec/couriertcpd -address=$ADDRESS \

-stderrlogger=/usr/local/libexec/logger \

-stderrloggername=imapd \

-maxprocs=$MAXDAEMONS -maxperip=$MAXPERIP \

-pid=$PIDFILE $TCPDOPTS \

$PORT ${exec_prefix}/sbin/imaplogin $LIBAUTHMODULES \

/usr/sbin/relay-ctrl-allow \ (*)

${exec_prefix}/bin/imapd Maildir"

~省略~

* この行を追加

そのほかの POP/IMAP 系ソフトウェア

今回は機能ごとに代表的なソフトを紹介しましたが,courier-imap のように IMAP4 と POP3

を兼ね備えたものもあります。さらに,POP Before SMTP 機能を 初から実装しているもの

Page 26: qmail サーバの運用と管理術 · 2009-03-31 · はメールサーバとして必要最少限の動作を提供するにとどめています。例えば,中継ホスト

やシステムの PAM で認証を行える(/etc/shadow によるパスワード管理ができる)APOP な

どもあります。

• imapd extensions IMAP4 の定番である WU-IMAPD に,Maildir を扱うためのパッチを当てたもの。

Maildir 対応以外にも,popper としての機能をほぼ網羅しています。 http://www.gentei.org/~yuuji/software/imapext/

• qmapop POP before SMTP を実装した APOP 認証パッケージです。 http://www.emaillab.org/djb/qmapop/

次回は不正中継・SPAM 対策を取り上げます。今回,POP Before SMTP や IMAP Before

SMTP で不正中継を防ぎながらユーザビリティを損なわない方法を紹介しましたが,次回は

さらに掘り下げてSPAMの踏み台やSPAMの対象にされてし まった場合についても触れて

いきます。