きまぐれほげほげひろば

s25rtarpitgreylist for postfix

このプログラムはpostfix用のホスト選択式スパム対策ソフトウェアです。 postfixのアクセスポリシーサーバとしてspawnから実行し、スパム送信元らしいホストの接続を拒否(再送要求)します。

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

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

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

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

このプログラムはqmail用に作成した「s25rtarpitgreylist」をpostfixにて動作するようにpython3で実装しなおしています。
実装にあたり機能を削減しております。
勉強目的で実装していますので若干作りが甘いです。
クラウド全盛の中、またAIによるスパムメール判断が優秀になってきた中(2020年現在)、今さら感がありますが、多重対策の一つとして意味があるかもしれません。

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

  • IPアドレスベースの許可リスト(正規表現での指定可)
  • ホスト名ベースの許可リスト(正規表現での指定可)
  • 送信者メールアドレスの許可リスト
  • 受信者メールアドレスの許可リスト
  • IPアドレスベースの拒否リスト(正規表現での指定可)
  • ホスト名ベースの拒否リスト(正規表現での指定可)
  • S25R (選択的SMTP拒否)
  • tarpit(応答遅延)
  • greylisting
qmail版より以下の機能を追加実装しています。
  • greylisting機能にて、送信元IPアドレスに加えて、送信者メールアドレスおよび受信者メールアドレスも一意に判断する
qmail版で実装していました以下の機能は廃止しました。(postfix側の設定で一部実装できます)
  • HELOホスト名ベースの拒否リスト(正規表現での指定可)
  • HELOホスト名の簡易検査(FQDNチェック、接続ホスト名とのドメイン簡易チェック)
  • greylistingを回避するための無効なSMTPコマンド発行および即切断対策。 
  • DNSBLを利用した接続拒否 (ver1.5追加)
  • HELOホスト名またはMail FromメールアドレスドメインのSPFチェック 

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

許可リスト

ここに定義したホストは、このプログラムでは拒否(再送要求)しません。 IPアドレスベースのものとホスト名ベースのものがあります。対象の指定には正規表現を使用することができます。

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

許可リストのメンテナンスについてはこちらをご参照ください。
「s25rtarpitgreylist の許可リスト・拒否リストのメンテナンスについて」

拒否リスト

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

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

tarpit(応答遅延)

送信元ホストからのRCPTコマンドの応答を遅らせます。スパムを送信するホストはメールを大量送信するため応答の遅延を嫌がり切断します。 デフォルト動作では、S25Rリストにマッチした送信元ホストの初回接続時に実施します。

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

S25R(選択的SMTP拒否)

スパムを送信するホストは動的IPアドレスという前提で 動的IPアドレスらしいホスト名を持つホストと持たないホストを振り分けます。 動的IPアドレスらしいホスト名を持たないホストは、このプログラムでは拒否されません。 動的IPアドレスらしいホスト名を持つホスト(逆引きできないホストも含む)は 後の処理(ここではgreylisting・tarpit)に任されます。

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

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

greylistingによる検査対象にしたい正規表現パターンがあれば、S25Rで定義されている正規表現パターン以外でも追加することが可能です。

greylisting

greylistに登録されていない送信元ホスト名および受信者アドレスの組み合わせ(つまり初回接続時)は再送要求されます。 この時点でgreylistに接続情報(送信元IPアドレス、送信者メールアドレス、受信者メールアドレス、初回接続日時)が登録されます。 その後の再送時の再送間隔を検査します。 再送間隔が短いホストは再度再送要求します(つまり接続情報が削除されるまで永遠にメール送信できません)。 再送間隔が長いホストはこのプログラムでは拒否しません。 greylistは送信元IPアドレス、送信者メールアドレス、受信者メールアドレス、初回接続日時を管理しています。

greylistの詳細についてはこちら
このプラグラムの実装では、以下の点でオリジナルのgreylistと異なる挙動をします。

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

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

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

メインロジック

機能処理内容その他
1送信メールアドレスが送信メールアドレス許可リストに登録されている→許可
2受信メールアドレスが受信メールアドレス許可リストに登録されている→許可
3接続ホストがホスト名ベース許可リストに登録されている→許可
4接続ホストがIPアドレスベース許可リストに登録されている→許可
5接続ホストがホスト名ベース拒否リストに登録されている→再送要求(拒否)
6接続ホストがIPアドレスベース拒否リストに登録されている→再送要求(拒否)
7S25R接続ホストのホスト名がS25Rの条件に該当しない→許可
8greylistgreylistからしばらくアクセスがないホストの記録を削除
9greylist接続ホストがgreylistに登録されていない→8-1へ 登録されている→9へ
10-1tarpittingtarpitting(指定秒数待つ)
 (オプションで待てたら→許可 も可)
 (待てない→接続ホストが自ら切断)
10-2greylist接続ホストをgreylistに登録
10-3greylist→再送要求(拒否)
11greylist接続ホストが指定した回数以上、「初回接続から近すぎる」(手順11)になっている →再送要求(拒否)
12greylist接続ホストの接続が初回接続から近すぎる →再送要求(拒否)
13greylist接続ホストのgreylistのアクセス時間を更新ここまでたどり着くとお行儀の良いホスト
14greylist→許可
qmail版で実装していたHELO検査やDNSBL検査はpostfix側で出来るので、このpostfix版では実装していません。
  • postfix 2.1 以上
  • python3.4 以上
  • sqlite3
以下に示す構成で動作確認しています。
  • postfix 3.3.1
  • python 3.6.8
  • sqlite3 3.26.0

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

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

  1. このスクリプトを実行するOSユーザおよびグループを決めます。
  2. このスクリプトを実行するOSユーザおよびグループを作成します。
  3. # groupadd greylist # useradd -g greylist -d /usr/local/s25rtarpitgreylist greylist
  4. 可変データディレクトリ作成
  5. # mkdir /usr/local/s25rtarpitgreylist/var
  6. ログディレクトリ作成
  7. # mkdir /var/log/s25rtarpitgreylist # chown greylist /var/log/s25rtarpitgreylist # ln -s /var/log/s25rtarpitgreylist /usr/local/s25rtarpitgreylist/var/log
  8. データベースディレクトリ作成
  9. # mkdir /var/db/s25rtarpitgreylist # chown greylist:greylist /var/db/s25rtarpitgreylist # ln -s /var/db/s25rtarpitgreylist /usr/local/s25rtarpitgreylist/var/db
  10. ここからアーカイブをダウンロード
  11. ダウンロードしたアーカイブファイルを展開
  12. # cd /tmp # tar zxf s25rtarpitgreylist_for_postfix_1.1.0.tgz
  13. 展開したディレクトリに移動
  14. # cd s25rtarpitgreylist_for_postfix_1.1.0
  15. スクリプト配置
  16. # cp -pR bin etc /usr/local/s25rtarpitgreylist # chown -R greylist:greylist /usr/local/s25rtarpitgreylist # chmod 700 /usr/local/s25rtarpitgreylist/bin/s25rtarpitgreylist.py
  17. 設定値を変更します。(ここに記載の手順通りであれば、設定値を変更しなくても動作可能です。チューニングする場合のみ変更してください)
  18. # vi /usr/local/s25rtarpitgreylist/bin/s25rtarpitgreylist_config.py
    ポイント
    • 1.で決めたユーザ名を設定項目:Exec_Userに設定してください。デフォルト値は「greylist」です。
  19. データベース作成
  20. # su - greylist $ cd bin $ ./s25rtarpitgreylist.py createdb
  21. 設定値のチェックを行います。実行引数なしでs25rtarpitgreylist.plを実行します。出力値が全て[ OK ]であれば合格です。
  22. $ ./s25rtarpitgreylist.py checkconfig Exec_User :greylist [OK] Path_Exchange_Log:/var/log/s25rtarpitgreylist/s25rtarpitgreylist.log [OK] Path_Allowlist_Sender:/usr/local/s25rtarpitgreylist/etc/allowlist_sender [OK] Path_Allowlist_Rcpt:/usr/local/s25rtarpitgreylist/etc/allowlist_rcpt [OK] Path_Allowlist :/usr/local/s25rtarpitgreylist/etc/allowlist [OK] Path_Allowlist_Ipaddr:/usr/local/s25rtarpitgreylist/etc/allowlist_ipaddr [OK] Path_Allowlist_Hostname:/usr/local/s25rtarpitgreylist/etc/allowlist_hostname [OK] Path_Denylist :/usr/local/s25rtarpitgreylist/etc/denylist [OK] Path_Denylist_Ipaddr:/usr/local/s25rtarpitgreylist/etc/denylist_ipaddr [OK] Path_Denylist_Hostname:/usr/local/s25rtarpitgreylist/etc/denylist_hostname [OK] Path_S25rlist_Hostname:/usr/local/s25rtarpitgreylist/etc/s25rlist_hostname [OK] Path_Database :/var/db/s25rtarpitgreylist/greylist.db [OK] Check regexp list - Path_Allowlist_Ipaddr :/usr/local/s25rtarpitgreylist/etc/allowlist_ipaddr Check regexp list - Path_Allowlist_Hostname :/usr/local/s25rtarpitgreylist/etc/allowlist_hostname Check regexp list - Path_Denylist_Ipaddr :/usr/local/s25rtarpitgreylist/etc/denylist_ipaddr Check regexp list - Path_Denylist_Hostname :/usr/local/s25rtarpitgreylist/etc/denylist_hostname Check regexp list - Path_S25rlist_Hostname :/usr/local/s25rtarpitgreylist/etc/s25rlist_hostname $ exit
  23. postfix main.cf修正
  24. # vi /etc/postfix/main.cf :(中略) smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination, check_policy_service unix:private/policy :(中略)
    ポイント
    • 「reject_unauth_destination,」より後に「check_policy_service unix:private/policy」を記載してください。
  25. postfix master.cf修正
  26. # vi /etc/postfix/master.cf :(中略) policy unix - n n - 0 spawn user=greylist argv=/usr/local/s25rtarpitgreylist/bin/s25rtarpitgreylist.py
  27. postfix 再起動
  28. # systemctl restart postfix
  29. (オプション)応答ログログローテーション設定
  30. # cat << EOS > /etc/logrotate.d/s25rtarpitgreylist /var/log/s25rtarpitgreylist/s25rtarpitgreylist.log { missingok notifempty compress delaycompress daily rotate 31 create 0644 greylist greylist } EOS
  31. (オプション)レポート 送信メールアドレス設定
  32. # vi /usr/local/s25rtarpitgreylist/bin/s25rtarpitgreylist_report.sh mailto='admin@hoge.com'
  33. (オプション)レポート定期実行設定
  34. # cat << EOS > /etc/cron.d/s25rtarpitgreylist_report 1 0 * * * root /usr/local/s25rtarpitgreylist/bin/s25rtarpitgreylist_report.sh EOS

もしこのプログラムに更新版がリリースされた場合は、スクリプトファイルの置き換えでアップデートします。

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

  1. ここからアーカイブをダウンロード
  2. ダウンロードしたアーカイブファイルを展開
  3. # cd /tmp # tar zxf s25rtarpitgreylist_for_postfix_1.1.0.tar.gz
  4. 展開したディレクトリに移動
  5. # cd s25rtarpitgreylist_for_postfix_1.1.0
  6. スクリプト配置
  7. # cp bin/s25rtarpitgreylist.py /usr/local/s25rtarpitgreylist/bin/s25rtarpitgreylist.py
    • postfixサービスの再起動は不要です。

ファイルが多くなってきましたので、ディレクトリツリーでファイルの説明です。

# tree -lpu --charset=C /usr/local/s25rtarpitgreylist/ /usr/local/s25rtarpitgreylist/ |-- [drwxrwxr-x greylist] bin | |-- [-rwx------ greylist] s25rtarpitgreylist.py 実行スクリプト(本体) | |-- [-rw-r--r-- greylist] s25rtarpitgreylist_config.py 設定ファイル | |-- [-rwxr--r-- greylist] s25rtarpitgreylist_report.sh |-- [drwxrwxr-x greylist] etc | |-- [-rw-r--r-- greylist] denylist IPアドレスベースの拒否リスト | |-- [-rw-r--r-- greylist] denylist_hostname ホスト名ベースの拒否リスト(正規表現指定) | |-- [-rw-r--r-- greylist] denylist_ipaddr IPアドレスベースの拒否リスト(正規表現指定) | |-- [-rw-r--r-- greylist] s25rlist_hostname S25Rリスト | |-- [-rw-r--r-- greylist] allowlist IPアドレスベースの許可リスト | |-- [-rw-r--r-- greylist] allowlist_hostname ホスト名ベースの許可リスト(正規表現指定) | |-- [-rw-r--r-- greylist] allowlist_ipaddr IPアドレスベースの許可リスト(正規表現指定) | |-- [-rw-r--r-- greylist] allowlist_rcpt 受信メールアドレスベースの許可リスト | `-- [-rw-r--r-- greylist] allowlist_sender 送信メールアドレスベースの許可リスト `-- [drwxrwxr-x greylist] var |-- [lrwxrwxrwx greylist] db -> /var/db/s25rtarpitgreylist | `-- [-rw-r--r-- greylist] greylist.db greylistデータベース `-- [lrwxrwxrwx greylist] log -> /var/log/s25rtarpitgreylist `-- [-rw-rw-r-- greylist] s25rtarpitgreylist.log 応答ログ(spawnプログラムとの標準入出力のやり取り)(オプション)

bin/s25rtarpitgreylist_config.pyについては以下を参照。

設定項目がたくさんありますが、上記手順のままインストールしている場合は、これらの設定項目の値を初期値から変更しなくても動作します。

設定はbin/s25rtarpitgreylist_config.pyにて行ってください。(s25rtarpitgreylist.pyにも設定可能な箇所がありますが、設定項目はs25rtarpitgreylist_config.pyの値で上書きされます)

Exec_User

このスクリプトを実行するユーザを設定します。postfix spawnの仕様により、rootユーザでは動作出来ません。rootユーザで誤ってデータベースファイルを作成することを防止するために、この設定があります。

Output_Exchange_Log

postfix spawnプログラムとの標準入出力のやり取りをログとして出力することを設定します。

False
出力しません。(デフォルト値)
True
出力します。
Path_Exchange_Log

postfix spawnプログラムとの標準入出力のやり取りを記録するログファイルのパスを設定します。

Path_Allowlist_Sender

送信メールアドレスベースの許可リストファイルのパスを指定します。

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

Path_Allowlist_Rcpt

受信メールアドレスベースの許可リストファイルのパスを指定します。

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

Path_Allowlist

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

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

Path_Allowlist_Ipaddr

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

ファイルの内容は、許可したいホストのIPアドレスを指定したリスト(改行区切り)です。IPアドレスの指定にperlの正規表現が使用できます。

Path_Allowlist_Hostname

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

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

Mode_Denylist_Priority

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

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

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

Path_Denylist

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

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

Path_Denylist_Ipaddr

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

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

Path_Denylist_Hostname

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

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

Mode_S25rlist

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

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

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

Path_S25rlist_Hostname

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

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

ヒント:正規表現で自由に定義可能ですので、最初から定義してある動的IPアドレスらしいホスト名だけでなく、クラウドやVPSらしいホスト名も追加定義することもできます。

Mode_Tarpit

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

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

0
無効
1

有効(デフォルト)。greylistに登録されていないホストに対してtarpitを実施します。

tarpitするとプロセスが増加する副作用を減らすため、デフォルト値はこちらにしています。(同一ホストは同じ挙動をする前提で、初回のみtarpit検査)

2
有効。全てのホスト(許可リスト・拒否リストにマッチしない、S25Rリストにマッチする)に対して常にtarpitを実施します。

Sec_Tarpit

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

ここで指定した秒数だけRCPTコマンド後の応答を遅らせます。デフォルトでは65秒ですが125秒ぐらいでも実用範囲だと思います(副作用には注意してください)。

Mode_Accept_Tarpitwaithost

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

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

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

Run_Tarpit_After_Second_Time

同一接続内にて、2回目以降のRCPTコマンド実行後にtarpitを実施するかを設定します。(送信元にてメール送信時に複数のメールアドレスを指定している場合、同一接続にて複数回のRCPTコマンドが実行されます)

False
同一接続2回目以降はtarpitを実施しません。(デフォルト)。
True
同一接続2回目以降もtarpitを実施します。

1回目のtarpitにて待つことができる接続元ホストであることが判明しているので、同一接続における2回目以降のtariptは無駄な遅延を発生させるだけで無意味かもしれない。

Mode_Greylist

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

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

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

Sec_Response_Limit_From_First_Connect

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

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

Path_Database

greylistデータベースファイルのパスを指定します。sqlite3形式のファイルで、接続元IPアドレス、送信元メールアドレス、宛先メールアドレス、初回接続タイムスタンプ、直近許容タイムスタンプ、接近試行回数を保持しています。

このデータベースファイルは、このプログラムによって自動的に更新されます。

ExpirySec_Goodhost

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

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

ExpirySec_NoGoodhost

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

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

Check_Rcpt_Greylist

この設定を有効することによって、greylistingの接続情報のマッチングに、IPアドレスに加えて、送信元メールアドレス、宛先メールアドレスを追加します。

False
マッチングする接続情報はIPアドレスのみです。
Ture
マッチングする接続情報はIPアドレス、接続元メールアドレス、宛先メールアドレス、です。(デフォルト)

Threshold_Count_Comesoon

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

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

基本的にはメンテナンス操作は不要ですが、アルゴリズム特性上、必ず誤検知は発生しますので、確認作業を行い、許可リストおよび拒否リストをメンテナンスすることを推奨します。

許可リストのメンテナンスについてはこちらをご参照ください。
「s25rtarpitgreylist の許可リスト・拒否リストのメンテナンスについて」

許可リストおよび拒否リストのメンテナンスは、テキストエディタで編集するだけです。サービスの再起動等の操作は不要です。
  • 以下のコマンドで、greylistデータベースの内容を確認できます。
  • # su - greylist $ cd bin $ ./s25rtarpitgreylist.py showgreylist IP ADDR DOMAIN SENDER RCPT CREATE TIME ACCESS TIME COUNT 173.82.173.211 Rakuten@hotgmaill.xyz xxx@chidipy.jpn.com 2020-09-23 01:07:45 2020-09-23 01:27:46 0
    • COUNT=0かつCREATE TIME=ACCESS TIMEの場合は、再送判断待ちの状態です。
    • COUNT=0かつCREATE TIME<ACCESS TIMEの場合は、一定間隔をあけて再送してきたホストであるので、許可されます。
    • COUNT>0かつCREATE TIME=ACCESS TIMEの場合は、すぐに再送してきたホストであるので、拒否(再送要求)します。(誤判断であればホワイトリストに追加してください)
  • 以下のコマンドで、greylistデータベースの内容をクリアできます。
  • # su - greylist $ cd bin $ ./s25rtarpitgreylist.py cleardb
  • 【非推奨】以下のコマンドで、greylistデータベース内のホスト情報を限定して削除できます。
  • # su - greylist $ sqlite3 /usr/local/s25rtarpitgreylist/var/db/greylist.db "DELETE FROM greylist WHERE ipaddr = '123.123.123.123'"
このプログラムを実行することにより、以下の免責事項および注意に同意したとみなします。
  • このプログラムの使用により、100%スパムを除外できることはありません。もちろん、保障はしません。
  • このプログラムの使用はアルゴリズム特性上、誤検知する可能性があります。
  • このプログラムの使用により、いかなる損害等が発生したとしても私は責任を負いません。自己責任でご使用ください。
ver1.1.0 (2020/9/29)
  • [新機能]公開バージョンリリース
  • [修正]ホワイトリスト/ブラックリストを許可リスト/拒否リストに変更
ver1.0.0 (2020/7/28)
  • [新機能]初版リリース
ver0.1.0 (2020/7/1)
  • [新機能]ベータ版リリース
おまけ
何かありましたら以下のメールアドレスまで。(自宅サーバーのため届かない可能性があります。多忙のため100%返信するとは限りません(しなくてもごちゃごちゃいわないでください)) webmaster@chidipy.jpn.com
スパムメールはspampot@chidipy.jpn.com
戻る