谁来翻译这遍文章?

由 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です。が、環境に合わせた

Published At
Categories with 服务器类
Tagged with
comments powered by Disqus