由 qianok 在 08-17-2002 12:54 发表:
谁来翻译这遍文章?
SMTP-AUTH してみよう
qmail & VMailMgr というマイナー?な環境を使っているのですが、SMTP-AUTH が使いたくってアレコレ試してみました。
概略
メールの不正リレー対策としては、POP before SMTP と SMTP-AUTH が代表的ですが、どちらにも一長一短がありますが、サーバ側から見た場合、POP before SMTP は比較的簡単に導入が可能ですが、SMTP-AUTH は smtp サーバ自体に手を入れないとならないために導入が難しく、なかなか普及しないようです。
しかも、ぼくが使っている環境が、qmail & VMailMgr という、マイナーな環境(でも、使いやすいですよ)のようで、検索エンジンで検索をしてみてもなかなか情報が無く、いいかげん探すのにも疲れたので、アレコレ試行して SMTP-AUTH が使えるようにしてみました。
qmail-smtpd-auth で SMTP-AUTH だけ許可するぞパッチ
qmail で SMTP-AUTH を実現するためには、qmail-smtpd-auth パッチ がありますが、そのままでは認証無しに送れてしまう(^^; ようなので、認証しなくては送れないようにしてみました。
この場合、認証無しでは動作しなくなるので、qmail-smtpd と SMTP-AUTH 専用の qmail-smtpd(qmail-smtpd-auth にリネーム)を使って、
qmail-smtpd : port 25
POP before SMTP を利用したメールサーバ
クライアントは選ばないが、送信前に受信動作が必要
qmail-smtpd-auth : port 10025
SMTP-AUTH を利用した送信専用サーバ
クライアント側の対応が必要だが、扱いは簡単
と、2つの smtp サーバを立ち上げて使っています。一つ一つのプロセスが軽量な qmail ならではですね。
qmail-smtpd-auth 用認証プログラム for vmailmgrd
qmail-smtpd-auth では、chkeckpassword 互換の認証プログラムが使えるのですが、VVMailMgr 付属の checkvpw ではうまく認証ができませんでした(おそらく、実行UIDの関係)。そこで、実行UIDに関係なく認証を行える vmailmgrd を利用した認証プログラムを作ってみました。
vmailmgrd は、unix ドメインソケットを利用した認証デーモンで、PHP からの呼び出しでも使われています。この認証デーモンは、システムアカウントのみでなく、VMailMgr で管理しているバーチャルユーザーも認証可能なので、SMTP-AUTH にはもってこいの認証デーモンなのです。
なお、この認証プログラムは、qmail-smtpd-auth で使うことのみを目的としているため、chkeckpassword との完全な互換性はありません。また、認証方法としては PLAIN でのみ利用できます。
セットアップ方法
ダウンロード
まずは、パッチとソースをダウンロードしてください。もちろん、すでにダウンロード済みの場合は、ダウンロードの必要はありません。
qmail 本体
qmail * djbdns by D. J. Bernstein よりダウンロード
qmail-smtpd-auth パッチ
qmail-smtpd-auth よりダウンロード(0.30 release 推奨)
VMailMgr 本体
VMailMgr よりダウンロード
qmail-smtpd-auth で SMTP-AUTH だけ許可するぞパッチ
qmail-smtpd-auth-0.30-iwm.patch をダウンロード
qmail-smtpd-auth 用認証プログラム for vmailmgrd
chk_vmauth.c をダウンロード
qmail-smtpd-auth の作成
まず、qmail-smtpd-auth のパッチを適用します。その後、qmail のソースディレクトリに移り、
% patch -p1 < (path/to/)qmail-smtpd-auth-0.30-iwm.patch
などとして、パッチを当てたら、普通に make して完成です。
ただし、このパッチ適用後は、認証していない場合はエラーを返すため、
1.普通に qmail をコンパイルしてできた qmail-smtpd をどこかにコピー
2.パッチを当てた qmail-smtpd を qmail-smtpd-auth にリネーム
3.コピーしておいた qmail-smtpd を戻す
4.インストール後に、qmail-smtpd-auth も qmail-smtpd と同じ場所にコピー
として、どちらともを併用する方法をお薦めします。
chk_vmauth の作成
コンパイルは、
% gcc -o chk_vmauth chk_vmauth.c
とするだけでOKです。が、環境に合わせた