« 踏み台のバックドア? | メイン | spamassassinをインストール »

2006年05月01日

vpopmailについて諸々

POP before SMTPを利用するためにvpopmailを入れなおしたのだが
何点かはまった。

まず、tcp.smtp.cdbがpop接続があっても更新されない。
これはコンフィグする際に
--enable-tcpserver-file=/home/vpopmail/etc/tcp.smtp
オプションをつけてやることで解決した。
このオプションをつけないと、勝手に/usr/local/vpopmail/etc
内に作成してしまい、以降の更新もうまくいかなかった。
手間取った原因として、open-smtpファイルはpop接続があるごとに
同一IPアドレスからであっても更新されるのだが
tcp.smtp.cdbは同一IPアドレスの場合には更新されないために
ファイル更新時刻が異なっても正常な場合があるのだ。

つぎに、quotaのテストをしていてvdeldomainを使用せずに
ディレクトリを削除してしまった場合に
vadddomainもvdeldomainもできなくなってしまった。
その場合はmkdirでドメイン名のディレクトリを作成してから
vdeldomainとすることでデータベースからも削除された。

これは未解決だが、vpopmail-5.4.15はコンフィグエラーが出たため
他のバージョンを使うことにした。

FreeBSDでの例だが、以下の通りで正常に動作した。
----------------------------------------------------------------
# pw groupadd vchkpw -g 89
# pw useradd vpopmail -u 89 -g vchkpw -d /home/vpopmail -s /bin/bash
# ps aux | grep qmail
# kill (rootで立ち上がっているqmailのpid)

# mkdir /home/vpopmail

# tar zxvf vpopmail-5.*.*.tar.gz
# cd vpopmail-5.*.*
# ./configure \
# --enable-roaming-users=y \
# --enable-relay-clear-minutes=15 \
# --enable-domainquotas=y \
# --enable-defaultquota=104857600 \
# --enable-tcpserver-file=/home/vpopmail/etc/tcp.smtp

# make
# make install-strip
----------------------------------------------------------------
crontabに
*/15 * * * * root /home/vpopmail/bin/clearopensmtp 2>&1 > /dev/null

よく --enable-relay-clear-minutes を指定しておきながら
40 * * * * root /home/vpopmail/bin/clearopensmtp 2>&1 > /dev/null
というドキュメントのコピーそのままを掲載しているサイトを見かけるが
これは間違い。
POP before SMTPのデフォルトでは180分間となっているのでその場合には
1時間に1回で良いのだが、通常3時間も開放することは無い。

私の設定した15分の場合でも15分丁度とはならずに、POP認証後16〜29分間有効になる。
(検証済み)

例として、
--enable-relay-clear-minutes=10
40 * * * * root /home/vpopmail/bin/clearopensmtp 2>&1 > /dev/null
の場合。

毎時00/10/20/30/40/50分にclearopensmtpが動作。
open-smtpファイル内で10分を経過しているものを削除してtcp.smtp.cdbも書き換え。
要は削除されるのはこの瞬間だけなのである。

一方許可されるのはPOP認証された時点。

仮に、
--enable-relay-clear-minutes=10
*/10 * * * * root /home/vpopmail/bin/clearopensmtp 2>&1 > /dev/null
とした場合でも
毎時01/11/21/31/41/51分にPOP認証されたIPアドレスは次回のcronでは削除されずに
次回cronが動作するまでの19分間、認証されていることになる。

通常はこれで問題ないと思うが、どうしてもピッタリが良い場合には毎分cronを
動作させるしか無いだろう。(それでも最大59秒間の誤差は出るが...)

投稿者 sio : 2006年05月01日 17:41