きまぐれPCひろば

s25rtarpitgreylist

このプログラムは、qmailのsmtpプログラム(qmail-smtpd)を実行される直前にこのプログラムを実行して、 スパム送信元らしいホストの接続を拒否します。qmail用のホスト選択式スパム対策ソフトです。

このプログラムは拒否するホストの判定にgreylistingというメール再送を要求するアルゴリズムを使用します。(スパマーは早く大量にメールを送信したいので再送信を嫌がり、再送信しません。)

しかし、このgreylistというアルゴリズムだけでは副作用が大きすぎますので、 S25R(選択的SMTP拒否)というアルゴリズムを使用して、スパマーがよく利用する 動的IPアドレスらしいホストのみをgreylistingの対象とするようにします。

また、tarpit(SMTP接続時に意図的に応答を遅らせる)を実施することにより、 スパム送信元ホストの接続を拒否します。(スパマーは早く大量にメールを送信したいので、 応答遅延を嫌がり自ら切断します)

このプログラムはperlスクリプトで実装されています。qmailやその関連ソフトウェアにパッチを適用する方式ではありませんので簡単に導入できます。

このプログラムは佐藤 潔 様の考案された「taRgrey - S25R + tarpitting + greylisting」(Postfix用)のアルゴリズムを参考に、同じく佐藤様の「Qgrey - S25R + qgreylist パッチ」(Qmail用)を参考に、ホスト名ベースのホワイトリスト・ブラックリスト、tarpitting(応答遅延)を追加する形で作成しています。

佐藤様に感謝です。 またS25Rを考案された浅見様にも感謝です。またバグ報告、新機能の提案を提供くださいました皆様にも感謝です。

注意点
  • 説明文が英語からの直訳っぽいのは、機械翻訳を使用してできるだけ一発で英語に翻訳できるようにしたいからです。お許しください。
  • 私にはネーミングセンスがありませんので、プログラム名や変数名が異常に長いです。お許しください。

長い説明を読まずに、早くダウンロードしたい場合はこちら

  • IPアドレスベースのホワイトリスト
  • ホスト名ベースのホワイトリスト(正規表現での指定可)
  • IPアドレスベースのブラックリスト
  • ホスト名ベースのブラックリスト(正規表現での指定可)
  • HELOホスト名ベースのブラックリスト(正規表現での指定可)
  • HELOホスト名の簡易検査(FQDNチェック、接続ホスト名とのドメイン簡易チェック)
  • S25R
  • tarpit(応答遅延)
  • greylisting
  • greylistingを回避するための無効なSMTPコマンド発行および即切断対策。 (ver1.2追加)

機能ごとに、その機能を有効にするか無効にするかを切り替えるスイッチがついています。

ホワイトリスト

ここに定義したホストは無条件でqmail-smtpdに引き渡します(拒否しません)。 IPアドレスベースのものとホスト名ベースのものがあります。ホスト名ベースのものは正規表現を使用することができます。

プロバイダから割り当てられたホスト名を使用する正規のメールサーバーや   S25Rの条件に該当してしまう正規のメールサーバーをこのホワイトリストに登録することにより   greylistの罠に嵌るのを防ぎます。

ブラックリスト

ここに定義したホストは無条件で接続を切断し拒否をします。正規のメールサーバーのような振舞いをするスパム送信元ホスト等を定義します。 IPアドレスベースのものとホスト名ベースのものがあります。ホスト名ベースのものは正規表現を使用することができます。

  ブラックリストにスパム送信元ホストを登録することにより、初回接続から2分から1日の間隔(greylistのデフォルト設定)で再送信してくるホストのメール送信を除外できます。(手動登録)

tarpit(応答遅延)

SMTP接続時に意図的にSMTPグリーティングの応答を遅らせます。スパムを送信するホストはメールを大量送信するため応答の遅延を嫌がり切断します。

  • 2分から1日の間隔(qgreylistのデフォルト設定)で送信してくるスパム送信元ホストをSMTP応答遅延で除外できる可能性があります。(blacklist管理の手間が減るかもしれません)
  • 再送信できない正当なsmtpサーバーがある場合、応答遅延を待つことができればwhitelistに追加しなくても救済できる可能性があります。(whitelist管理の手間が減るかもしれません・この動作はデフォルトではありません)

S25R(選択的SMTP拒否)

スパムを送信するホストは動的IPアドレスという前提で 動的IPアドレスらしいホスト名を持つホストと持たないホストを振り分けます。 動的IPアドレスらしいホスト名を持たないホストは接続が許可されます。 動的IPアドレスらしいホスト名を持つホスト(逆引きできないホストも含む)は 後の処理(ここではgreylist・tarpit)に任されます。

S25Rの詳細についてはこちら

副作用の大きいgreylist処理の対象を減らします。

greylisting

メール送信ホストの初回接続時にqmailの代わりにこのプログラムが応答し、そのホストに対して再送要求させます(ダミー応答)。 その後、再送してきたホストの接続を許可してqmail-smtpに連携します。 但し、すぐに再送してきたホストは拒否します。 (接続情報(IPアドレス、接続時間)をgreylistで管理します)

greylistの詳細についてはこちら

  • このプログラムでは宛先ホワイトリストを実装していません。
  • このプログラムでは、一度でも再送に失敗(すぐに再送してきた)したことがあると接続を拒否する機能を実装しています。(スパム送信ホストが短い間隔で何度も再送信を試みて、初回接続からの再送不許可時間を越えたために、再送が許可されてしまうという問題に対処するため)

スパマーは他のホストにメールを送信することを優先するので再送しないことが多いです。故にこれにてスパムを防ぐことができるかもしれません。

greylistingを回避するための無効なSMTPコマンド発行および即切断対策 (ver1.2追加)

SMTPの仕様外のコマンドを要求して様子を見るホストの接続を拒否し、greylistへの登録をキャンセルします。 そのことにより、このホストからの接続を拒否します。

また、HELOでホスト名を名乗らずにすぐにQUITを発行するホストと、HELOの直後にすぐQUITを発行するホストの接続を拒否し、greylistへの登録をキャンセルします。

HELOの簡易検査

接続ホストがHELOコマンドで名乗るホスト名を調べます。greylistingの ダミー応答中のみ実施します。(接続ホストの情報がgreylistに 登録されるときのみ実施。greylistによる接続許可が承認されたホストに 対しては、この機能は効きません。)

HELOホスト名ブラックリスト

ここに定義したHELOホスト名を名乗ったホストの接続を切断して拒否します。 さらにそのホストのgreylistの登録をキャンセル(削除)します。 ホスト名の登録に正規表現を使用することができます。
また、同時にIPアドレスを正規表現で指定することで拒否するホストを限定することもできます(ver1.1追加)。

スパム送信元ホストが特徴あるHELOホスト名を名乗る場合に有効です。

FQDNチェック

HELOコマンドで名乗るホスト名がFQDNになっているかをチェックします。(実装は上記の「HELOホスト名ブラックリスト」の条件で行ってます) FQDNでない場合、ホストの接続を切断して拒否し、さらにgreylistの登録をキャンセル(削除)します。

正しくないHELOホスト名を名乗るホストに有効です。(スパム送信ホストはFQDNでないHELOホスト名を名乗ることがあります。「localhost」やWindowsのコンピュータ名など。)

接続ホスト名とのドメイン簡易チェック

HELOコマンドで名乗るホスト名のドメインと、実際の逆引きホスト名のドメインが一致するかチェックします。 一致しない場合、ホストとの接続を切断して拒否し、greylistの登録をキャンセル(削除)します。

正しくないHELOホスト名を名乗るホストに有効です。

接続IPアドレスチェック(ver1.1追加)

HELOコマンドで名乗ったホスト名がIPアドレスだったときに、接続元IPアドレスと比較して異なれば、そのホストとの接続を切断して拒否し、greylistの登録をキャンセル(削除)します。

正しくないHELOホスト名を名乗るホストに有効です。

ごちゃごちゃ書くより処理順を示したほうがわかりやすいと思うので処理順(ロジック)を示します。

メインロジック

機能処理内容その他
1greylistgreylistからしばらくアクセスがないホストの記録を削除
2接続ホストがリレークライアント→許可
3接続ホストがホスト名ベースホワイトリストに登録されている→許可
4接続ホストがIPアドレスベースホワイトリストに登録されている→許可
5S25R接続ホストのホスト名がS25Rの条件に該当しない→許可
6接続ホストがホスト名ベースブラックリストに登録されている→再送要求(拒否)
7接続ホストがIPアドレスベースブラックリストに登録されている→再送要求(拒否)
8greylist接続ホストがgreylistに登録されていない→8-1へ 登録されている→9へ
8-1tarpittingtarpitting(指定秒数待つ)
 (オプションで待てたら→許可 も可)
 (待てない→接続ホストが自ら切断)
8-2greylist接続ホストをgreylistに登録
8-3greylistSMTPダミー応答
8-4-1接続ホストがHELOで名のったホスト名がブラックリストに登録されている。またはHELOホスト名がFQDNでない。→qreylistから登録を削除&再送要求(拒否)
8-4-2original接続ホストがHELOで名のったホスト名がIPアドレスで、かつ実際の接続元IPアドレスと異なる。→qreylistから登録を削除&再送要求(拒否)ver1.1追加
8-4-3接続ホストがHELOで名のったホスト名のドメイン部分が逆引きホスト名のドメイン部分と異なる→qreylistから登録を削除&再送要求(拒否)
8-4-4originalSMTPコマンドの発行数が一定以下→qreylistから登録を削除&再送要求(拒否)ver1.2追加
8-4-5originalSMTPで未定義のコマンドの発行数が一定以上→qreylistから登録を削除&再送要求(拒否)ver1.2追加
8-5greylist→再送要求(拒否)
9greylist接続ホストが指定した回数以上、「初回接続から近すぎる」(手順10)になっている →再送要求(拒否)
10greylist接続ホストの接続が初回接続から近すぎる →再送要求(拒否)
11greylist接続ホストのgreylistのアクセス時間を更新
12greylist→許可

このプログラムは単一のperlスクリプトですので、簡単にインストールできます。

以下にインストール手順を示します。

  1. ここからアーカイブをダウンロード
  2. ダウンロードしたアーカイブファイルを展開
  3. # tar zxvf s25rtarpitgreylist_1.0.tar.gz
  4. 展開したディレクトリに移動
  5. # cd s25rtarpitgreylist_1.0
  6. 初めてインストールするときは5.へ。手動でインストールする場合またはアップデートする場合は6.へ
  7. セットアップスクリプトを実行。 (スクリプトファイルが/var/qmai/bin/に、各リストファイルが/var/qmai/s25rtarpitgreylist/にコピーされます)
  8. # ./setup.sh

    7.へ

  9. 手動でインストールする場合またはアップデートする場合は以下の手順を実行してください。不要な箇所は読み飛ばしてください。
  10. # cp s25rtarpitgreylist.pl /var/qmail/bin # chmod 755 /var/qmail/bin/s25rtarpitgreylist.pl # mkdir /var/qmail/s25rtarpitgreylist # mkdir /var/qmail/s25rtarpitgreylist/tmp # cp s25rlist_hostname /var/qmail/s25rtarpitgreylist # cp whitelist_hostname /var/qmail/s25rtarpitgreylist # cp blacklist_hostname /var/qmail/s25rtarpitgreylist # cp blacklist_helohost /var/qmail/s25rtarpitgreylist # cp greylist /var/qmail/s25rtarpitgreylist # touch /var/qmail/s25rtarpitgreylist/whitelist # touch /var/qmail/s25rtarpitgreylist/blacklist # touch /var/qmail/s25rtarpitgreylist/lastdeletetime # chown -R qmaild /var/qmail/s25rtarpitgreylist

    権限の設定は手抜きしてます。

    7.へ

  11. 起動スクリプト修正(qmail-smtpdの前にこのプログラムを実行するようにする+接続ホストを名前解決できるようにする)
  12. # vi /etc/init.d/qmail :(中略) # qmail smtpd start /usr/local/bin/tcpserver -vhR -u ${qmaild_uid} -g ${nofiles_gid} \ -x /home/vpopmail/etc/tcp.smtp.cdb 0 smtp \ /var/qmail/bin/s25rtarpitgreylist.pl \ /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd & :(中略)
    • 名前解決できないと全ての接続がgreylistingされてしまいます
    • s25rtarpitgreylist.plはqmail-smtpdの直前(s25rtarpitgreylist.plの引数でqmail-smtpdを起動するようにする)

設定項目がたくさんありますが、qmailのインストール先をデフォルトから変更していない場合は、これらの設定項目の値を初期値から変更しなくても正しく動作します。

Dir_Data

S25Rリストやホワイトリスト、ブラックリスト、greylistのファイルを格納するディレクトリのパスを指定します。qmaildユーザが読み書きできる必要があります。

Dir_Qmailcontrol

qmailのcontrol/ディレクトリのパスを指定します。

Dir_Tmp

このプログラムが一時的に使用するディレクトリのパスを指定します。qmaildユーザが読み書きできる必要があります。

Enable_Flock (Ver1.2.3追加)

flock関数を使用するかどうかを設定します。

0または1の数値を指定します。

0
flock関数を使用しない。ファイルのロックをロックファイル形式で行います。perlのバージョンが5.004以下の場合は必ずこちらを選択してください。
1
flock関数を使用する(デフォルト)。ファイルのロックをflock関数を使用して行います。こちらの方が動作の確実性が高いです。

Mode_Log_Output_Level

ログ出力のレベル(頻度)を設定します。

LOG_LV_DEBUG
デバッグログを出力します。(動作情報を出力します)
LOG_LV_INFO
情報ログを出力します。(エラーと拒否した結果のみ出力します)
Path_Whitelist

IPアドレスベースのホワイトリストファイルのパスを指定します。

ファイルの内容は、許可したいホストのIPアドレスを指定したリスト(改行区切り)です。

Path_Whitelist_Hostname

ホスト名ベースのホワイトリストファイルのパスを指定します。

ファイルの内容は許可したいホストのホスト名のリスト(改行区切り)です。ホスト名の指定にperlの正規表現が使用できます。書式は異なりますがこちらのホワイトリストもそのまま使用できます(このプログラムにて余計な情報は読み取らないようにしています)

Mode_Blacklist

ブラックリストの機能の有効/無効、および動作方法を設定します。

0から2までの数値を指定します。

0
無効
1
有効。(デフォルト)。S25Rの後にブラックリストのマッチングを行います。このモードの場合、拒否したいホスト名がS25Rリストにマッチしない場合、S25Rリストとブラックリスト両方に拒否したいホスト名を登録する必要があります。しかし、とある国別ドメインの動的IPアドレスらしいホスト全部を拒否する、ということができるので使い勝手は良いと思います。
2
有効。S25Rの前にブラックリストのマッチングを行います。

Path_Blacklist

IPアドレスベースのブラックリストファイルのパスを指定します。

ファイルの内容は、接続を拒否したいホストのIPアドレスを指定したリスト(改行区切り)です。

Path_Blacklist_Hostname

ホスト名ベースのブラックリストファイルのパスを指定します。

ファイルの内容は接続を拒否したいホストのホスト名のリスト(改行区切り)です。ホスト名の指定にperlの正規表現が使用できます。

Mode_Greylist

greylisting機能の有効/無効を設定します。

0,1の値を指定します。

0
greylistingを無効にします。
1
greylistingを有効にします。(デフォルト)

Path_Greylist

greylistファイルのパスを指定します。

ファイルの内容はgreylistでアクセス制御するホストの各種情報(改行区切り)のリストです。
レコードの書式は
「IPアドレス 登録日(初回アクセス)の日付 登録日(初回アクセス)の時刻 最終アクセスの日付 最終アクセスの時刻 初回接続に近すぎて失敗した数」
です。
このファイルは、このプログラムによって自動的に更新されます。

Path_Lock_Greylist

greylistの編集中を示すロックファイルのパスを指定します。

このファイルを配置するディレクトリはqmaildユーザが読み書き削除できる権限を必要とします。

Path_Tmp_Greylist

greylistの自動更新中に使用する一時ファイルのパスを指定します。

このファイルを配置するディレクトリはqmaildユーザが読み書き削除できる権限を必要とします。

Path_Lastdeletetime_Greylist

greylistに登録されている期限切れしたホストの情報を削除した日時を管理するファイルのパスを指定します。

このファイルの最終編集時間で日時を管理しています。 このファイルを配置するディレクトリはqmaildユーザが読み書き削除できる権限を必要とします。

Sec_Checkinterval_Greylist

greylistに登録されている期限切れしたホストの情報を削除するための検索の間隔(秒数)を指定します。

Sec_Suppression_Connect

再送要求後の、メールの受信を許可する、初回接続からの秒数を指定します。

例えば、Sec_Suppression_Connect=120 のとき、
2008-03-20 22:00:00に初めて接続したホストを再送要求したとします。
このとき、再送にあたる2回目の接続が
2008-03-20 22:01:30であれば、初回接続より120秒経過していないので再び拒否し再送要求します。
2008-03-20 22:02:10であれば、初回接続より120秒経過しているのでそのホストの接続を許可します。

Sec_Validity_Goodhost

greylistに登録されているホストのうち、接続が許可されているホスト(初回接続日時!=アクセス日時)の情報の有効期限(秒数)を指定します。

有効期限が切れたホストの情報はgreylistから削除されます。

Sec_Validity_Nogoodhost

greylistに登録されているホストのうち、接続が許可されていないホスト(初回接続日時=アクセス日時、再送待ち状態)の情報の有効期限(秒数)を指定します。

有効期限が切れたホストの情報はgreylistから削除されます。この値をSec_Suppression_Connectより小さくしないでください。

Msg_Connection

メール送信ホストから接続された時のHELOコマンドで答えるメッセージを設定します。この値が空のままであるとqmailのcontrolディレクトリにあるsmtpgreetingまたはmeファイルの内容が設定されます。

このHELOメッセージには使用しているプログラムの名前やバージョン情報が表示されます。しかし、このプログラムの場合、このプログラムの名前を表示すると、このプログラムに対する対策を講じられる可能性があるため、これらの情報を表示しないほうがよいでしょう。

Sec_Smtptimeout

SMTP接続のタイムアウト秒数を設定します。

Sec_Smtpcmdwait

このプログラムによるSMTPダミー応答中の、SMTPの各コマンドごとの応答落ち時間(秒数)を指定します。

スパム送信ホストは遅延を嫌がるので自ら切断するかもしれません。

Threshold_Count_Comesoon

接続を拒否する初回接続に近すぎて拒否した数の閾値を指定します。

初回接続に近すぎて拒否した数がこの値を超えると、初回接続より指定の時間を経過しても接続を拒否します。短い間隔で何度も再送してきて最終的にSec_Suppression_Connectの設定秒数を超えてしまう場合に有効です。

Mode_Ipfile_Thirdoctet

接続ホストをIPアドレスの第3オクテットまで使用して登録情報とマッチングするかどうかを設定します。(第4オクテットはマッチングに使用しない)

0
IPアドレスの全てのオクテットを使用して登録情報とマッチングを行います(デフォルト)
1
IPアドレスの第3オクテットまで使用して登録情報とマッチングを行います。

greylistに登録されている情報が非常に多く動作が鈍くなっている場合に有効です。

Threshold_Count_SmtpCommand (ver1.2追加)

greylistへの登録を拒否する、接続ホストのSMTPコマンド発行数を指定します。

接続ホストが発行するSMTPコマンドがこの設定値より少ない時、接続ホストのgreylistへの登録を、このプログラムはキャンセル(削除)します。

0以上の整数を指定します。
0
この機能を無効にします。
1
QUITだけを発行してくるホストに有効な設定値です。
2
QUITだけと、HELO -> QUIT のようなSMTPコマンドの発行をしてくるホストに有効な設定値です。(デフォルト値)
3以上
お勧めしません。

Threshold_Count_UnknownSmtpCmd (ver1.2追加)

greylistへの登録を拒否する、接続ホストの規格外SMTPコマンド発行数を指定します。

接続ホストが発行する規格外のSMTPコマンドがこの設定値より多い時、接続ホストのgreylistへの登録を、このプログラムはキャンセル(削除)します。

0以上の整数を指定します。
0
この機能を無効にします。(デフォルト)
1以上
デタラメなSMTPコマンドを発行してくるホストに有効な設定値です。

Mode_SmtpTimeout_Deny (ver1.2追加)

SMTP接続がタイムアウトした接続ホストのgreylistへの登録を拒否する機能の有効と無効の切り替えを指定します。

通常のgreylistのアルゴリズムを接続ホストが回避する場合があるので、接続ホストのSMTP接続がタイムアウトになった時点でgreylistへの登録を拒否します。

0,1を指定します。
0
この機能を無効にします。(デフォルト)
1
この機能を有効にします。

Mode_S25rlist

S25Rによる動的IPアドレスらしいホストの選別をする機能を有効にするか無効にするかを設定します。

0,1の値を指定します。

0
S25Rによる動的IPアドレスらしいホストの選別をする機能を無効にします
1
S25Rによる動的IPアドレスらしいホストの選別をする機能を有効にします(デフォルト)
この機能を有効にしないと、全てのホストに対してgreylistingすることになります。

Path_S25rlist_Hostname

S25Rリストのファイルのパスを指定します。

ファイルの内容は動的IPアドレスらしいホスト名のリスト(改行区切り)です。ホスト名の指定にperlの正規表現を使用することができます。 Mode_Blacklistの値を「1」(デフォルト)にしている場合は、ブラックリストの内容も追加で定義してください。 書式は異なりますがこちらの「/etc/postfix/rejectionsファイルの中身」で紹介されているリストも使用することができます。(このプログラムにて余計な部分を読みこまないようにしています)

Mode_Tarpit

tarpit(応答遅延)の機能の有効/無効、および動作方法を設定します。

0から2までの数値を指定します。

0
無効
1
有効(デフォルト)。greylistに登録されていないホストに対してtarpitを実施します。
2
有効。全てのホスト(ホワイトリスト・ブラックリストにマッチしない、S25Rリストにマッチする)に対して常にtarpitを実施します。

Sec_Tarpit

tarpit(応答遅延)する秒数を指定します。

ここで指定した秒数だけ接続直後のSMTPグリーティングの応答を遅らせます。デフォルトでは65秒ですが125秒ぐらいでも実用範囲だと思います(副作用には注意してください)。

Mode_Accept_Tarpitwaithost

tarpit(応答遅延)を待つことができたホストを許可するかどうかを設定します。

0から1までの数値を指定します。

0
許可しません(デフォルト)。後のgreylistingに許可の判断を委ねます。
1
許可します。
greylistingしたくない場合は1を設定してください。

Mode_Badhelohost

接続ホストがHELOで名乗るホスト名のブラックリストの機能の有効/無効を設定します。

0から1までの数値を指定します。

0
無効
1
有効(デフォルト)

Path_Blacklist_Helohost

HELOで名乗るホスト名ベースのブラックリストファイルのパスを指定します。

ファイルの内容は、接続を拒否したいホストの名乗るHELOホスト名を指定したリスト(改行区切り)です。ホスト名の指定にperlの正規表現を使用することができます。 FQDNチェックもこのファイル内の定義で行っています。
レコードの書式は
「拒否するHELOホスト名 [拒否する逆引きホスト名またはIPアドレス(名前解決不可時)]」
です。左から2カラム目のホスト名は省略できます。省略時は全ホスト対象です。

Mode_Compare_Hostname_Octetlevel

接続ホストがHELOで名乗るホスト名(FQDN)のドメイン部分と接続ホストの逆引きホスト名(FQDN)のドメイン部分を比較する機能の有効/無効を設定します。

逆引きできないホストにはこの機能は働きません。また、ローカルネットワークに配置された配信専用のメールサーバーはHELOで名乗るホスト名がFQDNでないことが多いので、この機能を有効にした場合、このようなホストから送信されるメールを受信できなくなるリスクがあります。

0-2の値で指定します。

0
無効(デフォルト)。ドメイン部分を比較しません。
1
有効(お勧めかも)。トップレベルドメイン(TLD)のみの一致をチェックします。
2
有効。トップレベルドメイン(TLD)とセカンドレベルドメイン(SLD)の一致をチェックします。

この機能はgTLDであるかccTLDであるかまではチェックしません。よってSLDまでしかチェックしません。

Mode_Check_RemotoIp_HeloIp

接続ホストがHELOでIPアドレスを名乗った時に、接続元のIPアドレスと比較する機能の有効/無効を設定します。

0-1の値で指定します。

0
無効。
1
有効(デフォルト)。

Mode_Escape_SmtpAuth

この機能は未完成です。設定値は必ず0にしてください。

  • このパッチの適用により、100%スパムを除外できることはありません。もちろん、保障はしません。
  • このパッチの適用により、いかなる損害等が発生したとしても私は責任を負いません。自己責任でご使用ください。
ver1.2.4 (2008/9/28)
  • バグ修正(1.2.3で発生。greylistが機能しなくなってましたので修正しました)
ver1.2.3 (2008/9/21)
  • greylistをロックする方法に、flockを使用するものを追加しました。(こちらをデフォルト動作にしています。perlのバージョンが5.004以下をご使用の方は、従来のファイルロック動作に変更してください)
  • その他、細かい修正・・・
ver1.2.2 (2008/8/29)
  • ロックファイルを残したまま異常終了したときの対応として、長時間残っているロックファイルがあれば無視して削除するように修正しました。
  • 接続高頻度状態での同時ロック取得発生時に、1つの接続以外はできるだけ待つように修正しました。
ver1.2.1 (2008/8/21)
  • greylistの有効時間切れホストの登録削除機能が正常に機能していませんでしたので修正しました。(ホストからアクセスがある度にこの機能が動作してましたので、パラメータどおりの時間をあけて動作するように修正しました。)
  • 原因不明で潰れてしまったgreylistのエントリー(行データ)を無視し、削除するように修正しました。※このバージョン以前では、プログラムが強制終了されます。

出来るだけこのバージョン以上にアップデートしてください。上記にもありますとおり、このバージョン以前では、何らかの原因でgreylistが壊れているとプログラムが強制終了されてします。即ち、greylistが壊れると、greylistの判定が必要なメールは受信できなくなる可能性があります。

ver1.2 (2008/7/1)
  • SMTPダミー応答時に、接続ホストが発行したSMTPコマンド数が指定した数より少なければ、greylistへの登録をキャンセルする機能を追加。
  • SMTPダミー応答時に、接続ホストが発行した未定義のSMTPコマンド数が指定した数より多ければ、greylistへの登録をキャンセルする機能を追加。
  • SMTPダミー応答時にタイムアウトになった接続ホストのgreylistへの登録をキャンセルする機能を追加。
  • 少々バグフィックス(深刻なものではありません)
ver1.1.1 (2008/6/13)
  • 1.1の新機能のバグフィックス(^^;。このバージョンでの新機能はありません。
ver1.1 (2008/5/21)
  • IPV6形式のアドレスに、たぶん対応しました。
  • HELOでIPアドレスを名乗った場合、ホストのIPアドレスと比較して異なれば拒否する処理を追加しました
  • HELOで名乗ったホスト名のブラックリストにて、オプションでホストのIPアドレスも比較できるようにしました。(例えば、63.123.124.*からの接続でHELOで「*.info」を名乗った場合拒否する)
何かありましたら以下のメールアドレスまで。(自宅サーバーのため届かない可能性があります。多忙のため100%返信するとは限りません(しなくてもごちゃごちゃいわないでください)) webmaster@chiji.atnifty.com
戻る