スパムメールは誰が、どこから、どうやって送っているのか？ ～その仕組みと対策を理解する～

## はじめに

スパムメール（迷惑メール）は、人々にとって日々対策が求められる厄介な存在です。 
本記事では、スパムメールが「誰が・どこから・どうやって」送られているのか、
その技術的背景を図解・コード例を交えながら解説します。

## 1. スパムメールとは何か？

### スパムメールの定義

「受信者が望んでいないのに送信される、宣伝・詐欺・フィッシング目的のメール」と定義されます。

### スパムメールの種類

| 種類 | 主な目的 |
|------|----------|
| 広告型スパム | 違法薬物販売、出会い系広告、不正広告収益の獲得 |
| フィッシング | 銀行装う偽サイトへ誘導、金銭情報や認証情報取得 |
| マルウェア拡散 | 添付ファイルでウイルス感染、PC乗っ取り、ランサムウェア |
| 個人情報収集型 | 偽アンケートで情報収集、個人情報販売、二次犯罪利用 |

## 2. スパムメールの送信者は誰か？

* **個人スパマー**: 趣味・嫌がらせ目的の小規模スパム送信
* **犯罪組織**: 金銭目的でフィッシング・マルウェア拡散
* **スポンサー型スパム業者**: 広告出稿者から依頼受け大量配信

### 地理的・組織的背景

特定の国や法整備の甘い地域がスパム拠点になりやすい。
以下は国・地域ごとのスパム送信元割合（例：202X年統計）を示した架空データ例。

| 地域 | スパム発信割合(%) |
|------|-------------------|
| ロシア | 31.5% |
| アメリカ | 11.3% |
| 中国 | 11% |
| 日本 | 3.6% |

出典:https://enterprisezine.jp/news/detail/19388?utm_source=chatgpt.com

## 3. どこから送られているのか？ ～ボットネットと悪用サーバー～

### ボットネット(Botnet)による分散送信

スパム送信は、世界中に散らばるマルウェア感染端末（PC、サーバー）を束ねた「ボットネット」で行われることが多いです。

ボットネット構造イメージ:
```mermaid
graph LR
A[攻撃者] -->|指令| B[感染PC1]
A -->|指令| C[感染PC2]
A -->|指令| D[感染PC3]
B -->|スパムメール送信| E[被害者Mailbox]
C -->|スパムメール送信| E[被害者Mailbox]
D -->|スパムメール送信| E[被害者Mailbox]
```


* 攻撃者はC&Cサーバーから世界中の感染端末に指令を出し、
一斉送信を行うことで発信元を分散します。

### 中継サーバーやオープンリレーの悪用

* **オープンリレーサーバー**: 適切に設定されていないメールサーバーが踏み台に利用される。
* **匿名化技術**: トレースを困難にするため、VPNやプロキシを多段利用。

## 4. どうやって送っているのか？ ～大量送信の仕組み～

### 自動化ツールとスクリプト

スパマーは大量のアドレスリストをもとに、スクリプトやツールを用いてメールを一斉送信します。

簡単なコード例（Python）: アドレスリストに対するメール送信プロセス
※あくまで概要例であり、実際の攻撃コードではありません

```python
import smtplib
from email.mime.text import MIMEText

# 仮のメールアドレスリスト（攻撃者が闇市場で入手したと想定）
email_list = ["victim1@example.com", "victim2@example.com", "victim3@example.com"]

# スパムメール本文
msg_body = """このたび当社では特別セールを実施中です... (スパム内容)"""

msg = MIMEText(msg_body)
msg["Subject"] = "特別オファー"
msg["From"] = "spoofed-sender@example.com"

# SMTPサーバー(悪用中)に接続して送信
with smtplib.SMTP("malicious-smtp-server.com", 25) as server:
    for email in email_list:
        msg["To"] = email
        server.send_message(msg)
```

上記のようなコードが、ボットネット上の無数の端末で並行的に実行され、大量送信が行われます。

## メール認証技術とスパマーの回避手法解説

メール認証技術には、SPF、DKIM、DMARCといった主要な標準技術があります。これらは、スパムやなりすましメールの配信を防ぐための重要な仕組みですが、スパマーはこれらを巧妙に回避する方法を常に模索しています。それぞれの技術と、その回避手法を詳しく解説します。

### 1. SPF（Sender Policy Framework）

#### 役割
SPFは、メールの送信元IPアドレスがそのドメインの管理者によって許可された送信元かどうかをDNSレコード（SPFレコード）で確認します。受信サーバーは、このレコードを参照し、許可されていないIPアドレスから送信されたメールを「なりすまし」として検知します。

#### スパマーの回避手法例

##### 1. オープンリレーサーバーの悪用
* セキュリティ設定が不十分なサーバーを踏み台にして送信。正当なサーバーに見せかけることでSPF検証を回避します。

##### 2. SPF設定の不備を悪用
* 一部の企業ドメインがSPF設定を正しく行っていない、または緩いポリシー（`+all`など）を設定している場合、そのドメインを偽装して送信します。

##### 3. 複数の中継サーバー利用
* 攻撃者は複数の中継サーバーを使って送信元IPの追跡を困難にし、SPF検証をすり抜ける手法を使います。

### 2. DKIM（DomainKeys Identified Mail）

#### 役割
DKIMは、メールのヘッダーや本文に電子署名を付与し、送信ドメインが正当であり、メール内容が改ざんされていないことを保証します。署名の検証にはDNSに公開鍵を配置し、受信側はこれを使ってメールの正当性を確認します。

#### スパマーの回避手法例

##### 1. 偽ドメインの使用（タイポスクワッティング）
* 本物のドメインに似た名前（例: `amaz0n.com`）を使い、正当なDKIM署名を設定して送信。受信者は本物だと思い込む可能性があります。

##### 2. 秘密鍵の盗用
* 攻撃者が正当な送信者の秘密鍵を奪取すれば、そのドメイン名で署名付きメールを正当に見せかけて送信できます。

##### 3. DNS改ざん（DNSキャッシュポイズニング）
* 受信側が参照する公開鍵を指すDNSレコードを改ざんし、攻撃者の公開鍵を指すように設定します。これにより、スパムメールが正しい署名を持つかのように偽装されます。

### 3. DMARC（Domain-based Message Authentication, Reporting & Conformance）

#### 役割
DMARCは、SPFやDKIMの検証結果を統合し、送信ドメインの管理者が「メールが認証に失敗した場合の処理ポリシー」を受信側に指示する仕組みです。「破棄」「隔離（迷惑メールフォルダ）」「無視（受け入れ）」などのアクションが設定できます。また、受信サーバーからレポートが送られ、認証失敗状況を確認できます。

#### スパマーの回避手法例

##### 1. 踏み台サーバーの悪用
* SPFとDKIMの検証をすり抜ける踏み台サーバー（中継サーバー）を利用し、DMARCチェックを通過するよう工夫します。

##### 2. DMARCレコード未設定の悪用
* 多くのドメイン管理者がDMARCを未設定のまま放置しているため、スパマーはそのようなドメインを積極的に悪用します。

#####3. なりすまし送信者情報の作成
* メールヘッダーの「From」フィールドを偽装し、DMARCを設定していない企業や組織のドメインを使ってメールを送信します。

| 技術 | 役割 | スパマー回避手法例 |
|------|------|---------------------|
| SPF | 送信元IP認証 | 不正中継、設定不備の悪用 |
| DKIM | ドメイン署名の検証 | 偽ドメイン、鍵盗用、DNS改ざん |
| DMARC | ポリシー適用と報告 | 踏み台利用、なりすまし送信 |

これらの技術はメール認証の柱として、企業や組織がスパムメールの受信を減らすうえで欠かせません。ただし、スパマーたちはこれらを回避する手法を絶えず進化させています。
そのため、SPF/DKIM/DMARCを適切に設定し、運用状況の監視やセキュリティ教育を併せて行うことが重要です。

## 5. メールアドレス収集の仕組み

### 収集手法

* **ウェブスクレイピング**: WebページやSNSからメールアドレス抽出
* **漏えいデータ悪用**: Hackで入手したデータベースからメールアドレス取得
* **辞書攻撃**: ユーザー名部分を総当たり

簡易スクリプト例：ウェブページからメールアドレスらしき文字列抽出（正規表現）
※あくまで概要例であり、実際の収集コードではありません
```python
import re
import requests

url = "https://example.com"
res = requests.get(url)

# 簡易的なメールアドレス検出用正規表現（実運用では精度不足だが概念的例）
pattern = r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"
emails = re.findall(pattern, res.text)

print("Found emails:", emails)
```

スパマーはこのような形でスクリプトを実行し、自動収集を行います。

## 6. スパムメールの影響

* **個人**: フィッシング詐欺、マルウェア感染、時間とストレス
* **組織**: セキュリティコスト増加、ブランド毀損、サーバー負荷増大

個人も組織も、ただただ迷惑ですよね。
デメリットしかないように思います。


## 7. スパムメール対策

### 技術的対策

* **スパムフィルタ/ベイジアンフィルタ**: コンテンツベースでスパム判定
* **認証技術の導入(SPF, DKIM, DMARC)**: 正当なメールサーバーか判断
* **ブラックリスト・ブロックリスト**: 悪名高いIPアドレスやドメインを遮断

簡易的なフィルタ例
※あくまで概要例であり、実際の対策コードではありません
```python
spam_keywords = ["セール", "特別オファー", "無料", "限定", "今すぐ"]

def is_spam(subject, body):
    score = 0
    for kw in spam_keywords:
        if kw in subject or kw in body:
            score += 1
    return score > 2

# 判定例
subject = "特別オファーのお知らせ"
body = "今すぐアクセスください"
print(is_spam(subject, body))  # True
```

※実際のスパム判定はもっと高度な解析や学習モデルが必要。

## 8. メールヘッダ解析によるトレース

## メールヘッダ解析の基本

メールヘッダ情報は、スパムメールの送信経路を追跡する重要な手掛かりです。メールがどのサーバーを経由して送られてきたかが記録され、各サーバーのログが「Received」フィールドに追加されていきます。

メールヘッダは通常、以下のような構造になっています：

```
Received: from malicious-smtp-server.com (unknown [203.0.113.50]) by victim-mail-server.com (Postfix) with ESMTP id ABC123 for <victim@example.com>; Mon, 15 Dec 2024 10:10:10 +0900
```

### ヘッダ要素の詳細

* **malicious-smtp-server.com**: メールが最初に送信されたと思われるサーバー名（偽装可能）。
* **[203.0.113.50]**: 実際の送信元IPアドレス。IPアドレスは追跡のカギとなります。
* **victim-mail-server.com (Postfix)**: 受信したメールサーバーの名前。
* **ESMTP id ABC123**: メール送信プロトコルのセッションID。
* **受信日時**: メールが送信された日時。

## メールヘッダの解析手順

1. **Receivedヘッダの逆順解析**:
   * 最新の受信記録から順に、最初の送信サーバーを見つけるまでたどる。

2. **送信元IPの確認**:
   * 実際の送信元IPアドレス（例: `203.0.113.50`）を見つける。

3. **WHOIS検索**:
   * IPアドレスをWHOIS検索して、管理者情報、国、ネットワークプロバイダ情報を取得。

4. **ブラックリスト参照**:
   * IPアドレスがスパムブラックリスト（Spamhaus、SORBSなど）に登録されているかを確認。

5. **SPF/DKIM/DMARC検証**:
   * メールヘッダの情報から認証技術の適用状況を確認。

## 9.今後の展望

### 1. AIの悪用: LLMを用いた高度なフィッシングメール

近年のスパムメールの進化には、**大規模言語モデル（LLM: Large Language Models）** が使われる可能性があります。

#### 想定される悪用シナリオ

1. **カスタマイズされたフィッシングメール**:
   * AIを活用することで、個人のSNSや公開情報を解析し、その人に適した説得力のあるフィッシングメールが自動生成される。

2. **高度な文章生成**:
   * LLMを使えば、過去のフィッシングメールに比べて、誤字脱字や不自然な表現のない本物そっくりのメールが生成可能。

3. **多言語対応のスパムメール**:
   * 多言語対応のAIによって、世界中のあらゆる言語で精巧なスパムメールが作成され、より多くのターゲットが狙われる。

#### 対策の必要性

* **AIフィルタの強化**:
   * スパムフィルタ自体がAI対応し、メール内容や送信パターンの文脈的解析を強化する必要があります。

* **ユーザー教育の重要性**:
   * 高度なAIによるフィッシングが普及すれば、受信者が常に警戒し、怪しいリンクを開かない習慣が必須となります。

### 2. 対策の進化: 機械学習と国際的な取り締まり強化

#### (1) 機械学習ベースのスパムフィルタ

* **機械学習の活用例**:
   * 受信したメールの特徴を数百万件のスパムデータセットから学習し、メッセージの内容、送信元IP、件名、リンクパターンなどを解析してスパムを自動判定。

* **技術例**:
   * 自然言語処理（NLP）を使った文脈解析
   * リンク解析エンジンによるURLの信頼性スコアリング
   * ベイジアンフィルタやディープラーニングモデル

#### (2) 国際的な取り締まりの強化

* **サイバー犯罪条約の強化**:
   * 国際的なサイバー犯罪取締条約に基づき、各国の政府機関や警察が協力する体制を構築。

* **多国間連携の事例**:
   * 欧州連合（EU）や米国連邦捜査局（FBI）などの国際的なサイバー犯罪対策機関が連携し、スパム送信者を摘発。

* **実際の取り締まり例**:
   * ボットネット運営者の摘発事例や、闇市場でのメールアドレス売買の取り締まりが既に行われています。

## 10. 結論

スパムメールは、「犯罪組織や個人」が「世界中に点在する感染端末（ボットネット）や悪用サーバー」を用いて、「自動化ツールやスクリプト」で大量送信されています。
この構造を理解することで、SPF/DKIM/DMARCの活用やフィルタ強化、ユーザー教育、法的措置によって、スパムの脅威を軽減可能です。

## 最後に

国産メール配信エンジン「blastengine（ブラストエンジン）」のご紹介

blastengineは、IPレピュテーション管理、バウンス処理、ブラックリスト監視などの
高度なメール配信管理機能を提供し、エンジニアをメール配信の手間から解放します。
APIやSMTPリレーでお客様のシステムと簡単に連携でき、一斉メールやトランザクションメールのスムーズな配信が可能！

また、国内キャリアやiCloud、Gmailなど各プロバイダ向けに最適化されたチューニングを行うことで、迷惑メール判定を回避しやすい配信を実現します。

即時発行の無料トライアルが可能なので興味のある方は是非！

https://app.engn.jp/be/order/request-form

https://app.engn.jp


ぜひご利用いただき、安全で快適なメール配信環境を構築してください