
メールを送信する際に最も重要なことは何でしょうか?送信者と受信者ですが、それ以外には?
それ以上に、最も重要な要素は間違いなくスパムフィルタリングです。すべてのメールクライアントにはこの機能が統合されており、その判断がメールの運命を左右します。つまり、あなたがそれを見るかどうかです。
この記事では、スパムフィルタリングの仕組みの原則を説明し、スパムを検出するための小さなツールを構築する方法をガイドします。
あるいは、このツールを使用して、自分のメールがスパムとしてフラグ付けされないように、事前にチェックおよび修正することもできます ;-)。
スパムフィルタリングの仕組み
スパムフィルタリングは、しばしばApache SpamAssassinと呼ばれるプログラムに依存します。
Apache SpamAssassinはApache Software Foundationによって維持されているオープンソースのスパム検出プラットフォームであり、多くのメールクライアントやメールフィルタリングツールがメッセージをスパムとして分類するために使用する広く普及したツールです。
数多くのルール、ベイジアンフィルタリング、ネットワークテストを使用して、指定されたメールにスパム「スコア」を割り当てます。一般的に、スコアが5以上のメールはスパムとしてフラグ付けされるリスクが高いです。
スパム検出のためにSpamAssassinをローカルにインストールする
SpamAssassinはLinuxでのみ実行できることに注意してください。LinuxオペレーティングシステムまたはDockerコンテナが必要です。
Debian/Ubuntuシステムでは、SpamAssassinをインストールするために次のコマンドを使用します。
sa-update
コマンドは、SpamAssassinの検出ルールを最新バージョンに更新するために使用されます。
インストールしたら、それを使用してスパムを検出できます。使い方は次のとおりです。
このコマンドはinput_email.txt
をSpamAssassinに渡し、検出結果をresults.txt
に書き込みます。
results.txt
の内容は、SpamAssassinのスコアと理由が末尾にリストされている、次のようなものになります。
SpamAssassinをAPIでラップする
Linux以外のデバイスがSpamAssassinを使用できるようにしたり、他のワークフローに統合したりするために、APIでラップできます。
たとえば、このAPIの典型的なユースケースは次のようになります。メールの「送信」ボタンをクリックする前に、コンテンツが最初にSpamAssassin APIに送信されます。メールは、スパムではない基準を満たしている場合にのみ送信が許可されます。
次に、Pythonを使用して、subject
、html_body
、text_body
という以下のメールフィールドを受け入れる簡単なAPIを作成します。これらのフィールドをSpamAssassinに渡し、検証結果を返します。
上記のコードでは、完全な出力からスコアの理由を抽出するためのヘルパー関数extract_analysis_details
を定義しています。たとえば、結果から特定のルールをフィルタリングするなど、この関数をさらに変更できます。
このAPIをテストしてみましょう。次のパラメータを渡します。
subject
html_body
text_body
返される結果は次のとおりです。
ご覧のとおり、「Dear winner」というフレーズは、さまざまなスパムメールで頻繁に使用されるため、非常に疑わしいです。
このAPIツールをオンラインでデプロイする
この小さなツールをオンラインでデプロイすることで、いつでもスパムを検出できます。
このツールはPythonで記述されており、事前にApache SpamAssassinをインストールする必要があるため、AWS EC2やDigitalOceanのようなサービスのみを使用してデプロイできると思われるかもしれません。しかし、これらは高価になる可能性があり、デプロイプロセスは複雑です。
より適切なツールはありますか?
はい、Leapcellを使用してデプロイできます。
Leapcellは、Python、Go、Rustを含むさまざまな言語のデプロイをサポートしています。Dockerアーキテクチャを使用しており、さまざまな基盤ライブラリのインストールを可能にします。最も重要なのは、Leapcellは実際のAPI呼び出し回数に基づいてのみ課金するため、アイドル状態のプロジェクトを保持するのは完全に無料です。これにより、AWSやDigitalOceanのようなプラットフォームよりも大幅に安価になります。
デプロイ手順は簡単です。
-
プロジェクトをGitHubにプッシュします。
-
Leapcellで「Create Service」をクリックし、このGitHubプロジェクトを選択します。
-
「Build Command」フィールドに次のコマンドを入力してSpamAssassinをインストールします。

4.「Submit」をクリックします。
デプロイすると、スパム検証のためのAPIが利用可能になります!APIが呼び出されるたびに、SpamAssassinが実行され、メールがスコアリングされ、スコアが返されます。
Xでフォローする:@LeapcellJP
関連記事: