opensmtpdの単純なグレーリスト

この記事は、「 rsmtdアンチスパムメールとopensmtpdの統合 」という記事の論理的な続きです。これは、opensmtpd + rspamdバンドルにグレーリストを実装するのが難しいと言われたためです。


opensmtpdでの成功のグレイリスト統合履歴は見ませんでした(存在する場合は、コメントに記入してください)。


私の場合、グレーリストを実装することは困難です。opensmtpdにフィルターを実装する前に、この機能を否定せず、実行するつもりもありませんでしたが、グレーリストはスパムと戦う良い方法の1つであることに気付きました。 しかし、挑戦とスパムの量を少し減らして平和に眠りたいという願望-彼らは私を平和に眠らせず、それを強制しました。


単純なグレーリスト方法を実装することができました。



いくつかの説明:


  1. この方法は、opensmtpd + rspamdバンドルの実装がmdaスクリプトレイヤーを介して行われる場合にのみ簡単です。


  2. opensmtpdのグレーリスト実装は、 フィルターを介して存在します 。 しかし、ご存じのように、opensmtpdに興味がある人には、opensmtpdに安定したフィルターの実装がありません。 さらに、rspamdの組み込みのグレーリングを使用して別のデーモンを追加したくありませんでした。


  3. opensbspdのグレイリスト実装は、freebsdおよびspamdに存在します。 実装の詳細には興味がありませんでした。 Linuxにはspamdデーモンはありません。


  4. 実装は松葉杖であり、文書化されていない機能を使用しますが、ITなしではどこにいるのでしょうか?

理論


グレイリストは、スパムプログラムがこことこの時点でできるだけ多くのスパムを送信したいという事実に基づいたスパム拒否技術です。


グレーリストの単純化されたロジック:手紙が届いた場合、一時的なエラーで送信者に応答し、しばらくして(たとえば、5分後に)彼からの手紙を受け取るために自分自身を(たとえば、1日の間)記憶します。


「標準」に準拠した「正しい」送信者は、しばらくしてからもう一度メールを送信してください。 「間違った」送信者はそうしないか、またはしますが、過去に送信者はさまざまな外部スパムリストにアクセスし、これらのスパムリストに基づいて既にフィルタリングしています。


送信者を覚えた後、(例として)日中、グレーリストのチェックは再び行われません。 これにより、(正しい送信者である場合)繰り返されるレターの配信時間を短縮できます。


postfix + amavis + spamasassinで、私が間違っていなければ、ドメイン名でグレーリストを作成しました。 rspamdでは、グレーリストのキーは、マスク付きの送信者のIPアドレス/ 19(構成可能)です。 一般的なクラスタリングおよび地理的分散サービスの側面からは、これはより適切なソリューションのように見えますが、一方で議論されています。


残念ながら、上記のすべては理論上は良いように見えますが、実際には、通常のOutlookを介してスパムを送信するティーポット、電子レンジ、および通常のユーザーのコンピューターに多くのボットネットがある場合(どのように、まだWindowsに存在しますか)-すべてではありませんとても素晴らしい。 しかし、どういうわけかこのテクニックは機能するので、拒否するべきではありません。


練習する


rpsamdでのredis


rpsamdで大根のサポートを有効にします。 グレーリストモジュールは、そのデータを大根に保存します。


# /etc/rspamd/local.d/redis.conf servers = "redis.example.com"; password = "example_password"; 

大根を開始します(たとえば、dockerで、これは1つのコマンドで実行されます)。


rspamdのグレーリスト


グレー化モジュールをオンにします(デフォルトではオフになっています)。 expire-チェックに合格した後に送信者が信頼されるようになる時間。 具体的にもっとひねりました。 デフォルトは86400秒です。


 # /etc/rspamd/modules.d/greylist.conf greylist { expire = 864000; .include(try=true,priority=5) "${DBDIR}/dynamic/greylist.conf" .include(try=true,priority=1,duplicate=merge) "$LOCAL_CONFDIR/local.d/greylist.conf" .include(try=true,priority=10) "$LOCAL_CONFDIR/override.d/greylist.conf" } 

rspamdを使用したサンプルコンテナー


opensmtpdのグレーリスト


ソリューションの最も物議を醸す部分。


rspamcクライアントを介してrspamdデーモンにレターを送信した後(前の記事を参照)、デーモンはSTDOUTにヘッダーを追加したメッセージのテキストで応答します。


グレーリストが必要な場合は、ヘッダーに「X-Spam-Action:soft reject」が表示されます。 Good、mta、またはfilterはこのヘッダーを認識し、一時的なエラーで送信者に応答します。


ただし、mtaのサポートやフィルターはありません。 したがって、exit 1を行うだけです!


 # .     greylisted=$( cat $mail_file | fgrep 'X-Spam-Action: soft reject' ) if [ -n "$greylisted" ]; then exit 1 fi 

戻りコード1を受け取ったopensmtpdは、何か問題が発生したことを理解し、送信者に一時的なエラーを返します。


opensmtpdを使用してdockerコンテナーを起動する機能:デーモンが送信者の正しいIPアドレスを確認できるように、ホストモードで起動する必要があります。


opensmtpdを使用したコンテナの例


合計


さらに少ないスパム。



Source: https://habr.com/ru/post/J320934/


All Articles