戻る

原文:http://wiki.dovecot.org/PopBSMTPAndDovecot(17版)
翻訳:龍義(Toyota Tatsuyoshi)

Pop-before-smtp.pl

Dovecot で pop-before-smtp.pl( http://popbsmtp.sourceforge.net/にある) を使いたい場合は、 POP3 と IMAP ログインが成功したかの判断に、以下の正規表現を使うことができます。

$pat = '^(... .. ..:..:..) \S+ (?:pop3|imap)-login: Login: .+ \[(\d+\.\d+\.\d+\.\d+)\]';

これは IPv4 でしか動かないので、誰か修正してください。

Fedora で私は以下のようにして動かしています: <drak at navel.gr>  

$pat = '(?:pop3|imap)-login: (... .. ..:..:..) Info: Login: \S+ \[(\d+\.\d+\.\d+\.\d+)\]';

バージョン 1.0 Alpha 4 では、以下のようにすれば動きます:  

$pat = '^(... .. ..:..:..) \S+ (?:dovecot: )?(?:imap|pop3)-login: Login: \S+ \S+ rip=(\d+\.\d+\.\d+\.\d+)'

DRAC

DRAC( http://mail.cc.umanitoba.ca/drac/) 向けの Dovecot のプラグインが http://www.dovecot.org/patches/drac.c にあります。 Drac はデーモンとは別に動作し、 POP3 や IMAP 経由での認証が成功した IP のを BDB データベースで保持し、 30 分で有効期限が切れます。 なので、それをインストールすることは、 POP3/IMAP サーバと、 SMTP デーモン (postfix/sendmail/qmail) の両方をサポートするために準備する必要があります。 Drac は小さな C でできたプログラムで、 BDB のデータベースへのアクセスは 効率的なので、とても良く動作します。

drac.c ファイルは、先頭のコメントとして、どのようにコンパイルするのか 指示があります。 指示に従うことで、 imap や pop3 ロード可能なモジュールの dovecot のライブラリのディレクトリに drac.so ファイルをインストール できます。 dovecot で新しい drac プラグインを可能にするため、 dovecot.conf に 以下のような行を設定する必要があります。 'protocol imap' と別の下にある 'protocol imap' の別々のセクションが あります;両方とも有効にすることを確認してください。  

  # Support for dynamically loadable modules.
  mail_use_modules = yes                        # default is "no"
  mail_modules = /usr/lib/dovecot/imap          # set for your installation

パーミッションの注意: drac.so ファイルがあるディレクトリは、一般のユーザが読み込むことが できなければなりません。 dovecot のエラーログをチェックが助けになります。

SQL

有利な点:ログを読むための数メガバイトの perl のデーモンが必要ありません。

不利な点:それぞれのログインのため、このスクリプトを実行するために、 時間と領域が必要です。

1)SQL テーブルからリレーの認可がある IP を調べるように MTA に知らせます

2)定期的にテーブルから古い IP を削除してください (例えば cron job を使ったり、以下のスクリプトを編集します)

3)ログインの成功を SQL テーブルに更新するよう dovecot に 知らせます

Dovecot 1.0(と、多分 0.99 でも) では、以下のスクリプトを使って SQL テーブルの更新ができます。  

#!/bin/sh

# This script created 2005-08-21 by Lorens Kockum
# Released into the Public Domain

# Action: when called by dovecot 1.0 as described below, updates an SQL table
# with logged-in IP and current time, and then executes the relevant process.

# Output: normally nothing

# dovecot.conf should be modified with these lines (where
# /usr/lib/dovecot/popbsmtp.sh represents this script):

# protocol pop3 {
#   mail_executable = /usr/lib/dovecot/popbsmtp.sh /usr/lib/dovecot/pop3
# }
# protocol imap {
#   mail_executable = /usr/lib/dovecot/popbsmtp.sh /usr/lib/dovecot/imap
# }

# The HOME= lines are necessary to find $HOME/.my.cnf containing login info,
# because mail_executable is executed as root, but without a home directory.

# Of course this script must not be writable by anyone else than root.

(
    # drop out IPs from local networks that can relay anyway
    IP=`echo $IP | grep -v '^192\.168\.'`

    if [ -n "$IP" ]
    then
        export HOME=/root/
        echo "replace into popbsmtp VALUES('$IP',now());" | mysql mail
        export HOME=/
    fi
) >> /var/log/dovecot3 2>&1

exec $*