Postfixメールサーバーでグレイリストサービスを設定する方法

スパムは、何年も前にメールサーバーにとって目立った扱いになりました。 今日のサーバーは、スパムに対して強化されなければ実行できません。一部のレポートによると、すべての電子メールトラフィックの最大75%がスパムです。 小規模な会社のメールシステムを実行している場合でも、ネットワーク容量、ハードウェア、および電力消費量から目立ちます。 スパム対策ソリューションを分析する商用コンテンツは重くて高価であり、オープンソースのものは重くて複雑かもしれませんが、リソースの観点から、スパムトラフィックの約80%をほぼ無料で排除するいくつかの手法があります。 グレイリストは、これらの手法の1つです。

グレイリストソリューションの背後にある考え方は非常にシンプルでありながらエレガントです。スパムメッセージを送信しているホストは実際のメールサーバーではなく、実際のシステム管理者によって制御されていません。ランダムなホストで実行されているボットです。 ボットネットの所有者でさえ彼らの生活は予測できないので、彼らは通常のメールサーバーがする規則に従わない。 そして、そのようなホストにメッセージを5分間延期するように丁寧に依頼しようとすると、メッセージは永久に消えるか、すぐにもう一度試行されます。 これがグレーリストの全体的な考え方です。3〜5分後にもう一度試して、送信者の動作を分析するように依頼してください。 正しく従う場合は、正当なメールエージェントである可能性が高く、そうでない場合は、間違いなくスパムボットです。 送信者が特定のホスト(つまりトリプレット)からこの受信者メッセージを送信しているのをすでに確認している場合は、チェックを気にせず、メッセージを遅らせることもありません。

この記事では、Postfixメールサーバーのグレーリストサービスを設定する方法を紹介します。 CentOS 7.4を使用しますが、他のバージョンのLinuxでも手順はほぼ同じです。 Postfixを使用してCentosにこのテクニックを実装する最も便利な方法は、 ポストグレー

postgreyがメインリポジトリに追加されるので、実行するだけでインストールできます

    # yum install postgrey

次に、デーモンを実行し、起動時に有効にします。

    #systemctl start postgrey
    #systemctl enable postgrey

標準のsmtpd_recipient_restrictionメカニズムを使用して、UNIXソケットを介してpostgreyを処理します。 そこでcheck_policy_serviceにソケットパスを追加するだけです。

  smtpd_recipient_restrictions =
   permit_mynetworks,
   check_policy_service unix:postgrey/socket,
   permit

これにより、smtpdプロセスは、他のすべてのチェック(フィルタリングされた電子メールを簡単にチェックアウトしたくない)の後にメッセージをpostgreyのソケットに送信し、postgreyがそれを受け入れた後にのみそれを受け入れるように指示します。

Postgrey自体には実際の構成ファイルがなく、実際に必要な唯一のオプションは、メッセージを遅延させる時間です。 したがって、/ etc / sysconfig / postgreyで、デーモンの起動オプションを定義できます。 デフォルトでは、遅延は300秒ですが、ほとんどのボットでは60秒でも十分な場合があります。

    OPTIONS="--unix=/var/spool/postfix/postgrey/socket --delay=60"

「アクセスが拒否されました」と表示された場合は、audit2allowで修正できるSELinuxの問題であり、postgreyデーモンがUNIXソケットに書き込むのは問題ないことをSELinuxに通知します。

    # grep smtpd_t /var/log/audit/audit.log | audit2allow -m postgreylocal > postgreylocal.te
    # cat postgreylocal.te
    module postgreylocal 1.0;
    require {
            type postfix_smtpd_t;
            type postfix_spool_t;
            type initrc_t;
            class sock_file write;
            class unix_stream_socket connectto;
    }
    #============= postfix_smtpd_t ==============
    allow postfix_smtpd_t initrc_t:unix_stream_socket connectto;
    allow postfix_smtpd_t postfix_spool_t:sock_file write; 

ここで見ることができます example 送信者、受信者、および送信者のホストがすでに存在するメッセージの

Sep 21 14:38:04 andreybondarenko postgrey[518]: action=pass, reason=triplet found, client_name=mail2.static.mg.example.com, client_address=192.127.58.166, sender=bounce+d58b.00a37-me=andrey[email protected], [email protected]

これが example 遅延メッセージの:

Sep 22 11:20:31 andreybondarenko postgrey[518]: action=greylist, reason=new, client_name=ppp91-122-100-196.pppoe.avonddsl.com, client_address=91.12.10.196, [email protected], [email protected]

PTRからわかるように、これはxDSLプールであるため、間違いなくボットです。

postgreyの欠点は、新しいサーバーから配信される最初のメールが数分間遅れることです。 複数のMX’exを実行している場合、送信メールサーバーが次のMXに移動し、そこでグレーリストが有効になっていると、このホストでも個別に遅延するため、この問題はさらに悪化する可能性があります。そのため、遅延が増加します。 。

結論として、グレーリストは、アイデアとその背後にあるソフトウェアが無料であり、ベイズフィルターのように誤検知を追加しないため、ほとんどのスパムを無料でバウンスします。