[インストール]
vpopmailでは、pop before smtpを利用することも可能です。
pop before smtpを使いたい場合、インストールの段階で
あらかじめ、configのオプションとしてその指定をしてやる必要があります。
vpopmailのインストールと同じ手順でuserの追加までを行いましょう。
以下に「qmailのインストール及びその設定(vpopmailのインストール)」からの
引用をそのまま示します。
http://www.inter7.com/vpopmail/download.html
より、vpopmailダウンロードし、ダウンロードしたtarballを展開します。
cd /usr/local/src
tar zxvf vpopmail-5.0.tar.gz
vpopmail-5.0に移動して、INSTALLを読みます。
cd vpopmail-5.0
less INSTALL
グループvchkpwとユーザvpopmailを追加するように書いてあるのでそのとおりにします。
groupadd -g 89 vchkpw
useradd -g vchkpw -u 89 vpopmail
インストールの前には、/home/vpopmailが作成されていることが必要なようです。
さて、configオプションに上記での設定に加え、pop before smtpが可能になるようにオプションを
追加します。
cd /usr/local/src/vpopmail-5.0
./configure --enable-default-domain=real.com
--enable-admin-email=root@real.com --enable-roaming-users=y(一行で)
make
make install-strip
すると、先ほどと同じように/home/vpopmail以下にvpopmail関連のファイル、
プログラムがコピーされます。
ユーザの追加などについては、先ほどと全く同じです。
すると、/home/vpopmail/etc以下に次のようなファイルができています。
inc_deps lib_deps open-smtp open-smtp.lock tcp.smtp
tcp.smtp.cdb
このうち、tcp.smtpに常にRELAYを許したいIPを記述しましょう。
(通常のtcpserverの記述です。)
例えば、
127.0.0.1:allow,RELAYCLIENT=""
などのように指定します。
crontab -eで以下を一時間おきに実行するようにしましょう。
40 * * * * /home/vpopmail/bin/clearopensmtp
接続が一時間なければ、そこからのsmtpのRELAYを拒絶するようにしています。
/service/smtpd/runを次のように書き換えましょう。
#!/bin/sh
exec /usr/local/bin/tcpserver -v -u 504 -g 503
\
-x /home/vpopmail/etc/tcp.smtp.cdb \
0 smtp /var/qmail/bin/qmail-smtpd 2>&1
書き換えるのは特に太字にした部分です。
以上のような設定によりvpopmailでは次のようなことが起こるそうです。
(以下はVpopmailFAQからの引用です。)
誰かがPOPINし、認証すると、以下のことが起こる。
1) vpopmailは'~vpopmail/etc/open smtp.lock'
ファイルにおいて排他ロックを求める
2) いったんロックされると、解除を待ち続ける
3) ''~vpopmail/etc/open-smtp' ファイルにPOPユーザのIPをタイムスタンプと共に記録する。もし、既に存在するなら、タイムスタンプをアップデートする。
4) /etc/tcp.smtp.cdbファイルを作り直すためにtcprulesを実行する
5) ロックは解除され、新しいIPは次のsmtpで利用可能になる
ここで、 上記のように構成されたsmtpサーバはsonoIPに1時間(デフォルト値)のリレーを許可するだろう。
clearopenstmpはロックを要求し、POP認証から1時間以上経ったようなタイムスタンプを持つローミングIPを取り除く。
vpopmailが上記の2個のファイルをくっつけて、tcprulesを実行する。
よって、時間の経ったIPはリレーを閉じられる。
vpopmailについての詳しい内容は
vpopmailFAQ
などを読まれると良いでしょう。