APOPfilter を使うと以下のことが可能です。
このプログラムは Ruby ライセンスに従います。
クライアントから接続を受け付け、USER,PASS,APOP,QUIT 命令を処理します。 APOP 命令時に APOPfilter がユーザID/パスワードの確認を行ないます (APOPfilter が認証するのではなく POP サーバに認証させることもできます)。 APOP または PASS 命令成功後に本当の POP サーバに接続し、クライアントから渡されたユーザID/パスワードで、USER/PASS 命令を発行し、それが成功した後は、クライアント−サーバ間のデータの中継だけを行ないます。
事前に、POPサーバにアクセスするための、ログインIDと平文パスワードをファイルまたは MySQL または LDAP データベース上に作成しておく必要があります。
ファイルの場合は、ログインIDと平文パスワードを「:」で区切って、1行1IDでファイルに記述し、apopfiltermap コマンドの引数にファイル名を指定して実行してください。デフォルトのファイル名は /etc/apoppw です。
例
# cat /etc/apoppw hoge:pwd-of-hoge # apopfiltermap /etc/apoppw
apopfilter と同じディレクトリに apopfilter.conf という名前のファイルがある場合はそれが読み込まれます。記述内容は apopfilter.conf.sample を参考にしてください。
設定できるパラメータは以下の通りです。
パラメータ | 意味 | デフォルト値 |
---|---|---|
$port | APOPfilter のポート番号 | 10110 |
$pop_server | POPサーバのホスト名またはIPアドレス | 127.0.0.1 |
$pop_port | POPサーバのポート番号 | 110 |
$apop_only | true の場合は USER/PASS認証を使用しない | false |
$auth_method | 認証方式の指定("file" または "mysql" または "ldap" または nil)。 nil 指定時はAPOPfilterは認証せず、認証情報を本来のPOPサーバに渡す。 | file |
$server_auth_method | POPサーバに対する認証方式("auto" または "apop" または "plain") "auto"指定時は、サーバがAPOP対応していればAPOP認証し、そうでなければ平文認証。 "apop"指定時は、サーバがAPOP対応していればAPOP認証し、そうでなければエラー。 "plain"指定時は、サーバがAPOP対応していても平文認証。 | auto |
$error_interval | POPエラー時に応答が返されるまでの秒数 | 5 |
$banner | クライアント接続時に返される文字列 | apopfilter ready |
$hostname | ホスト名 | `uname -n`.chomp |
$connection_keep_time | 最大接続維持時間(秒数)。これを超えると正常に通信できていても接続を切断します。 | 3600(1時間) |
$command_timeout | 最大コマンド待ち時間(秒数)。この時間クライアントからの入力がないと接続を切断します。 | 600(10分間) |
$syslog_facility | シスログのファシリティ | Syslog::LOG_MAIL |
$proc_plain_auth | true の場合は平文認証(USER/PASS)も apopfilter が確認する | false |
$after_auth_hook | 認証成功時に呼ばれる Proc クラスのインスタンス。引数はユーザ名とクライアントIPアドレス。 | nil |
$auth_method="file" 時に有効なパラメータ | ||
$apop_passwd_file | ログインIDと平文パスワードのファイル名 | /etc/apoppw |
$auth_method="mysql" 時に有効なパラメータ | ||
$mysql_server | MySQLサーバ名 | nil |
$mysql_user | MySQL接続ユーザ名 | nil |
$mysql_pass | MySQL接続パスワード | nil |
$mysql_db | MySQLデータベース名 | nil |
$mysql_table | MySQLテーブル名 | apop |
$mysql_userfield | ログイン名フィールド名 | user |
$mysql_pwfield | 平文パスワードフィールド名 | passwd |
$auth_method="ldap" 時に有効なパラメータ | ||
$ldap_server | LDAPサーバ名 | localhost |
$ldap_port | LDAPポート番号 | 389 |
$ldap_dn | bindするDN(nil時はbindしない) | nil |
$ldap_passwd | bind時のパスワード | nil |
$ldap_base | 検索するベースDN | nil |
$ldap_filter | 検索フィルタ。%sがユーザ名に置換される | uid=%s |
$ldap_passwd_attribute | 平文パスワード属性名 | userPassword |
0.5.1 2005-01-20 ・クライアントが何も送らずに切断した時に落ちていたバグを修正 0.5 2004-10-25 ・$auth_method nil を追加 ・$server_auth_method を追加 ・tserver の代わりに prefork を使用 ・getc を使わないようにした 0.4 2004-04-04 ・$proc_plain_auth を追加 ・$after_auth_hook を追加 0.3 2003-12-18 ・IPv6 対応 ・ECONNRESETエラー例外を捕捉 0.2 2003-12-10 ・LDAP機能追加 0.1 2003-11-02 ・公開
Last modified: Thu Jan 20 17:02:04 JST 2005