匿名メールを送る方法



 匿名メールを送る方法です。

 迷惑メールはどうやって対処したらよいでしょうか? 答えは簡単です。

    無視する。

です。これが一番よいのです。迷惑メールを送った人は確実にあなたのところにメールが届いているかどうかを知ることはできません。送った人は宛先をあなたのメールアドレスにしているのですが、これが間違っていて存在しないメールアドレスを宛先にした場合には、「宛先がありません。」というメールが送信者に返ってきます。しかしメールが返ってこないからといって100%確実に宛先のところへ届いているとは限りません。送った人のメールソフトが送信ミスをしているかもしれませんし、サーバーがミスをしているかもしれませし、あなたのメールソフトが受信ミスをしているかもしれません。無視するのが一番よいのです。

 無視でダメなら警告、受信拒否、プロバイダーへの問い合わせなど手段はあります。

 それでもダメならば・・・ここでの迷惑メールというのは、送信者がわかっていて、明らかに悪意があるメールです。そういう人に対してこちらから警告したほうがよいが、直接メールを送るのではなく、なんとかしたいという場合もあるでしょう。そのような場合、どうしたらよいでしょうか?

 ということでこのページは匿名メールを送る方法について書いてあります。

 通常のメールソフトでは匿名メールを送信することはできません。したがって匿名メールを送るには少々難しいことをやらなければなりません。メールの仕組みやメールそのものがある程度わかっていないと匿名メールを送るのは無理です。またそういうことを知らずに安易に匿名メールを送ってしまうと相手に送信者の割り出しをされてあなたが痛い目に会うこともあります。そこで仕組みについても説明してあります。

 匿名メールを送るには、次のような方法があります。

1. リメーラーを使う
2. CGIで Sendmail を使う
3. ツールを使う
4. Telnetを使う

この中で一番高度なものは、4の Telnet を使う方法です。この方法が送信者の特定が一番難しくなります。3まではあまり詳しく説明しません。というのは実際出来なかったり少々危険だったりするからです。4の Telnet は Windows であれば最初からインストールされているソフトで、メールの仕組さえわかれば誰でもできます。4については詳しく説明します。



0. 匿名メールとは
1. リメーラーを使う
2. CGIで Sendmail を使う
3. ツールを使う
4. Telnetを使う
5. 最後に


0. 匿名メールとは

 匿名メールとはその名のとおり送信者を隠したメールです。誰が送ったのかわからないメールです。送信者がなかったり、送った人とは違っていたり、架空のメールアドレスだったりするものです。そういうメールを送ることができるのでしょうか?

 できます。ではメールの送信者とはなんでしょうか?

 メール文書はメールヘッダーとメール本文の2つに分けられます。送信者や宛先や日時などはメールヘッダー、メール内容や添付ファイルはメール本文に含まれます。

 メールソフトが受信メールを表示する時の送信者は、詳しく言うとメールヘッダーの中にある From フィールドというものの内容です。メールソフトでメールヘッダーの表示をすると 「From:・・・」という行があるはずです。これを表示しているのです。メールソフトにヘッダーの表示機能がないものはどうしようもありませんが・・・ちなみに Outlook Express ではヘッダーだけでなくメールのソース自体を全部生で見ることができます。

 メールソフトでアカウントを追加するときにはメールアドレスが必要ですが、メールを送信するときにこのメールアドレスが使用されます。ということはメールソフトがメールを送る時に、メールヘッダーの From フィールドにこのメールアドレスを書いてしまうということです。このため通常のメールソフトでは匿名メールを送ることはできません。

 ではこのアカウントのメールアドレスを変えてしまえばいいんではないでしょうか?これでうまくいく場合もあります。これが可能かどうかはそのアカウントで使用するSMTPサーバーによります。実際はやはりセキュリティのため出来ないことがほとんどです。

 匿名メールを送るということは、このメールヘッダーの From フィールドを自分のメールアドレス以外のものにしてしまうということです。要するにメールヘッダーの偽造です。メールヘッダーの偽造ですから通常のメールソフトではできるはずがありません。そんなことができるメールソフトを販売したりフリーソフトで配ったりすると大問題です。したがってメールソフトではなく違う方法となります。

 現在のメールシステムでは、ほとんどの場合メールの送信にSMTPサーバーというものを使用します。メールソフトのアカウントの設定にありますよね。SMTPサーバーとやりとりすることでメールの送信ができます。したがってメールソフト以外のなんらかの方法でSMTPサーバーと通信してこの From フィールドを自分で書き込むことができれば匿名メールを送ることができるわけです。このページに書いてある「1. リメーラーを使う」以外はすべてSMTPサーバーを使用します。

 なお、匿名メールといっても100%完全な匿名にはなりません。もちろん送信メールアドレスはあなたのメールアドレス以外のものに変えてしまうので、相手がそのメールを見ると送信者はあなたのとは違うメールアドレスになります。しかし相手にメールヘッダーを見られると、あなたのメールアドレスが書かれている場合もあります。また書かれていない場合でも、相手がメールヘッダーにある Received フィールドというものの中に書いてあるIPアドレスから送信者を見つけ出すこともできます。見かけの送信者が変わってもメールヘッダーには送信情報が記録されるのです。ほとんどの人は普通メールヘッダーというものは気にもしませんね。いや、それどころかメールヘッダーというものを知らない人も多いと思います。が、匿名メールの送信者割り出しとなるとメールヘッダーは鍵となります。したがってメールの仕組みやメールヘッダーを知らずに匿名メールを送るのはやめたほうがいいです。安易にアンダーグラウンド系の匿名メーラーなどをダウンロードして匿名メールを送信すると痛い目に会うことになります。匿名メールとはどういうものかを理解してからにしましょう。


1. リメーラーを使う

 リメーラーとはメール配信システムの一つです。通常のメールソフトでのメールの送信は、SMTPサーバーに対してコマンドやデータを送ることによりメールの配信をしますが、リメーラーサーバーはSMTPサーバーとは異なり、メールによって配信がされます。したがってリメーラーにメールを送信することによってメールを配信することができます。

 なぜリメーラーを使うと匿名メールになるかというと、リメーラーサーバーにメールを送信した時にリメーラーがメールヘッダーの情報を削除してくれる場合があるからです。

 そもそもなぜリメーラーというものが存在するかというと・・・某ページによると、

「言論統制されている環境下の人々が、インターネット上の言論によって迫害と圧迫を受ける可能性から守るためのもの。」

だそうです。したがって悪意のある使い方をしてはいけません。

 では実際にどうやって使うかです。

(1)リメーラーを見つける。

 検索サイトで「リメーラー、remailer・・・」などと入力し検索します。ここでは例として remailer@reply.com を使用します。このようなものがリメーラーです。

(2)メールソフトを起動する。

 ツールや特殊なメールソフトは必要ありません。普段使用しているメールソフトでOKです。

(3)To:(宛先)に、リメーラーを入力する。

 ここでは、To: remailer@reply.com となります。

(4)Subject:(表題)に、表題を記入する。

 Subject は通常どおり表題を入力します。

(5)メール本文に 以下のように記述する。

1行目は、「::」(セミコロン2つ)
2行目は、「Request-Remailing-To: 送信メールアドレス」
3行目は何も書かない。
4行目から内容を書く。

例: ::
Request-Remailing-To: jimita@capella.freemail.ne.jp

匿名メールテストです。
  by じみた

(6)メールを送信する。

 ※Cc: や Bcc: には何も指定しません。


☆リメーラーの問題点です。

(1)使用可能なリメーラーがほとんどない。

 実際には、使用可能なリメーラーはほとんどありません。検索サイトで検索したページのリストはかなり古いデータのものが多いです。昔は使えたんでしょうけどね。おそらく悪意のある匿名メールに勝手に使用されるためになくなったんじゃないでしょうか。

(2)日数がかかったり届かなかったりする。

 リメーラーにメールを送っても数日かかったり、届かなかったりすることがあります。これではあまり意味がありません。

 使用できない、または存在しないリメーラーにメールを送信すると、当然送信者のメールアドレスにメールが返ってきてしまいます。メールヘッダーが削除されるリメーラーが発見できればいいんですけどね。

 なお、リメーラーで匿名メールが送信できたとしてもリメーラーのほうには送信ログが残りますので、相手がその気になれば送信者の特定は可能です。

 ということでリメーラーによる匿名メールの送信は簡単ではありません。


2. CGIで Sendmail を使う

 Sendmail が使用可能であればCGIを使用して匿名メールを送ることができます。

 Sendmail とはメールを送るためのツールで、規定の形式で作ったメール文書をSMTPサーバーに送ってくれるものです。SMTPサーバーに接続し、メールの送信をSMTPサーバーに依頼するものです。Sendmail はSMTPサーバーに対してメールの送信手続きを行ってくれるだけで、メールヘッダーは自分で書かなければなりません。メールヘッダーの送信者を自分で書くことで匿名メールが送信できるわけです。

 CGIサンプルは検索サイトで探せば見つけられます。

 ただし、セキュリティのためにSendmail が使用できるHPスペースはあまりないというのが現状です。自分のプロバイダが使用可能かどうかですね。使用不可能な場合は無料HPスペースとなるわけですが、これはさらに少ないでしょう。


3. ツールを使う

 アンダーグラウンド系には、匿名メール送信ツール、いわゆる匿名メーラーなどというものがあります。使用したい場合は探してダウンロードしてください。○-Mailerや○○○-Mailerなどがあります(ここでは書けません)。ただし、ウィルスチェッカーが起動されているとダウンロードできない場合があります。・・・こういうものはウィルスではないがイケないものとしてダウンロードさせてくれないらしい。

 しかし、アンダーグラウンド系ですからね。「○-Mailer のダウンロード」とか書いてあっても実際ファイルがなかったり、実はウィルスだったりすることがあります。ダウンロードの際は気を付けてください。

 またこういうものを使用した場合でもメールヘッダーに送信情報は書き込まれます。あなたのメールアドレスが書き込まれる場合もあります。メールヘッダーを知らずに使用するのは危険かと思われますので十分注意してください。


4. Telnetを使う

 この方法が匿名メールとしては一番高度なものです。この方法で送信できれば送信者の特定は非常に難しくなります。メール送信をするんですが、メール関連のツールは一切使用しません。

 方法は簡単に言うと、

「Telnet を使ってSMTPサーバーと通信し、メールを送信する。」

です。別の言い方をすると、メールソフトが裏でやっていることを自分でやってしまおう、ということです。

 したがって Telnet やメールの仕組みを知らないと実行するのは無理です。なので仕組みについても説明します。

 なお、ここでの説明は Windows です。Windows 以外は私はよく知りませんが Telnet のようなものはあるはずです。

4-1. メールの送受信とは何か?

 そもそもメール送信とは何でしょうか?

 メールソフトは何をやっているかというと、SMTPサーバーとやりとりをしているのです。SMTPサーバーにコマンドやメールデータを送っているのです。ただそれだけです。したがってこのやりとりが自由にできればある程度自由なメールを送ることができるわけです。SMTPサーバーはメールを受信すると指定のメールアドレスのPOPサーバーにデータを送信します。

 ではメール受信とは何でしょうか?

 メールソフトはPOPサーバーとやりとりをします。POPサーバーにコマンドを送ってメールを受信しているのです。もしこれが自由にできれば他人のメールを読むことが出来てしまいます。そこでPOPサーバーとやりとりをする場合にはログインとパスワードが必要となります。当然ですね。ところがSMTPサーバーはログインやパスワードは必要ありません。SMTPサーバー名がわかれば簡単にアクセスできてしまうのです。

 ※このSMTPサーバーにログインやパスワードが必要ないというのが問題なのです。自分のアカウント以外のSMTPサーバーを使って勝手に匿名メールを送ることができてしまうのです。メールをこういう仕組みにしてしまったのがいけないのです。最近、送信にも認証が必要になったり(AUTH認証)、送信する前に受信をしなければならなくなったり(POP before SMTP)するのはそのせいです。

4-2. Telnetとは何か?

 Telnet というのは Windows に最初からインストールされている通信ソフトです。Telnet を使うとネットワークを介して様々なサーバーやそのサービスにアクセスすることができます。サービスには http、ftp、smtp、pop、telnet、domain などたくさんあります。余談ですがブラウザというものはこのような通信の一部を行なうソフトだといってもいいんじゃないでしょうか。Telnet はもちろんSMTPサーバーにもアクセスできます。

 ★ここまで理解できれば予想できると思いますが、Telnet を使ってSMTPサーバーと直接通信することでメールの送信ができるのです。

 Telnet を使ってサーバーに接続する時にはサーバー名とポートナンバーを指定します。ポートナンバーはサーバーのどのサービスに接続するかを指定するために使用されます。SMTPサーバーを利用する時は 25 を指定します。ちなみに http は 80 、ftp は 21 、pop は 110、telnet は 23 を指定します。指定しないとデフォルトで telnet 接続になります。

 Telnet は Windows の種類(98とかNTとかXPとか)によって少し違います。オプション指定でエコーバックがされなかったり(自分が入力した文字が画面に出ない)、Backspace や Del キーを受け付けなかったりします。オプションを確かめてください。また「ターミナルの種類」がある時はvt100にしてください。(これはDEC(今のコンパック)が開発した汎用機の名称で、ほとんどのtelnet 端末はこれをエミュレートしているため。)

 なお Telnet を使う際、WinGate というものを使うと、匿名性が増すらしいです。私はそこまでする必要がないので使っていません。

 ※フリーソフト Tera Term について

 Telnet ですが、WindowsXP では WindowsNT 系の Telnet です。コマンドプロンプトの画面、いわゆるDOS画面で使うもので、コマンドを1つ1つ入力するものです。なんだか昔の通信ソフトみたいですね。Windows98 ではGUIです。なぜマイクロソフトはXPで Telnet をGUI仕様にしなかったのでしょうか?XPがNT系だから?

 どちらにしても Telnet は結構使いづらいです。もちろん Telnet でもできることはできるんですけど、フリーソフトで Tera Term というものがあります。おそらく Telnet より Tera Term を使用している人のほうが多いと思います。これはGUI仕様に加えてマクロが使用できます。マクロを記述することで、これ以降に書いてある操作が全部自動で出来るのです。これは優れものです。私はこちらをおすすめします。

4-3. Telnet を使ってメールを送信する。

Telnet を使ってメールを送信する方法です。とりあえずコマンドを順番に並べます。*印は必須ではありません。

1. telnet SMTPサーバ名 25
2. ehlo 接続元のマシンのホスト名、または何か文字列、または空
* 3. auth login [Enter] ログイン名 [Enter] パスワード名 [Enter]
4. mail from: 送信メールアドレス、または偽造メールアドレス、または空
5. rcpt to: 宛先のメールアドレス
6. data
* 7. subject: 表題
8. メール内容(メールヘッダーも含む)
9. .(ピリオドのみ)
10. quit

それぞれの詳細です。

4-3-1. telnet SMTPサーバ名 25

 Windows のスタートメニューにある「ファイル名を指定して実行」で上記のように入力します。

例:telnet smtp.xxx.co.jp 25

これでSMTPサーバーに接続することができます。SMTPサーバー名はメールアドレスを取得した時にメールソフトの設定情報としてありますね。

 「Connected to・・・」などが表示されれば接続完了です。

 接続完了後は、これ以降に書いてあるようなSMTPサーバーに対してのコマンドを送信します。2~10まではSMTPサーバー用のコマンドです。 

 SMTPサーバ名はIPアドレスでも構いません。

4-3-2. ehlo (接続元のマシンのホスト名、または何か文字列、または空)

 これはSMTPサーバに対してのあいさつのようなものです。これが成功すれば、これ以降のコマンドが使用できるようになります。

 引数は通常は telnet を実行しているホストの名前にします。マシン名やサーバーに対するクライアントの名前などです。でもおそらくここで入力する文字列はどんなものでも受け付けられると思われます。意味のない文字列でも大丈夫だと思います。

例:ehlo jimita

 ここで入力した文字列は、SMTPサーバーが メールヘッダーの Received: フィールドに書き込みます。空にできれば空にしておいて結構です。その場合 Received: フィールドにはクライアントのIPアドレスのみが書き込まれます。空にできないこともあります。

 入力後、「250・・・」のような200番台の番号が返ってくればOKです。500番台の数字が返ってくればエラーです。

 ※ehlo は以前は helo コマンドでしたが現在は ehlo です。ehlo ではSMTPサーバーの拡張コマンドを使用できます。

4-3-3. auth login [Enter] ログイン名 [Enter] パスワード名 [Enter]

 これは認証が必要なSMTPサーバーの場合のみ必要です。SMTPサーバーに認証が必要かどうかはメールアドレスを取得した時にメールソフトの設定情報としてあります。認証が必要な場合はこのコマンドが必要となります。

 まず auth login と入力します。

例:auth login

入力後、「334 ・・・」のような300番台の番号が返ってくればOKです。500番台の数字が返ってくればエラーです。

 次にSMTPサーバーへのログイン名を入力しますが、ログイン名そのままではダメです。ログイン名を「BASE64エンコード」で変換した文字列を入力します。BASE64エンコードはそういうツールがあります。またWeb上にも変換ページがあります。ここではログイン名を abcdef とします。これを BASE64エンコードで変換すると YWJjZGVm となりますのでこれを入力します。

例:YWJjZGVm

 入力後、「334 ・・・」のような300番台の番号が返ってくればOKです。500番台の数字が返ってくればエラーです。

 最後にパスワード名を入力しますが、これもBASE64エンコードで変換をした文字列を入力します。ここではパスワード名を hijklm とします。これをBASE64エンコードで変換すると aGlqa2xt となりますのでこれを入力します。

例:aGlqa2xt

 入力後、「235 2.0.0 OK Authenticated」のような200番台の番号が返ってくればOKです。500番台の数字が返ってくればエラーです。

4-3-4. mail from: 送信メールアドレス、またはウソのメールアドレス、または空

 送信者を指定するコマンドです。ここで入力した文字列はメールヘッダーの From: フィールドに書き込まれます。

 入力後、「250 OK」のような200番台の番号が返ってくればOKです。500番台の数字が返ってくればエラーです。

 ここで空(送信メールアドレスに何も入力しない)が指定できれば、送信者が空になります。実際そのようなメールを受信すると送信者に何も表示されません。誰が送ったかわかりません。匿名メールを送るのですからこれができれば一番よいのです。

例:mail from:

 ウソのメールアドレスを指定できればそのメールアドレスから送信したということになります。実際そのようなメールを受信すると送信者にここで入力したメールアドレスが表示されます。メールアドレスは実際に存在するものでも存在しないものでも構いません。

例:mail from: xxx@xxx.co.jp

このようなものでよいのです。

★しかし、この送信メールアドレスは自由に入力できるわけではありません。

 これはSMTPサーバーの設定によります。迷惑メール対策などのためにSMTPサーバーが送信メールアドレスを自由に指定できないようになっている場合があります。空にできない場合もあります。これは予想なのですが、

(1)サーバーが許可しているドメインしか指定できない。
(2)サーバーと同じドメインしか指定できない。
(3)サーバーに登録されているメールアドレスしか指定できない。

などがあると思われます。

 (1)の場合、ある程度自由なウソのアドレスが使用できます。

 (2)の場合、送信メールアドレスの @ より前の部分だけ適当な名前にすることはできます。

 例: jimita@capella.freemail.ne.jp
xxx@capella.freemail.ne.jp

 (3)の場合、あなたのメールアドレスを入力するしかありません。

 いずれの場合も実際に存在するメールアドレスにはしないことです。(3)の場合、 @ より前を変更して実在するメールアドレスにすることもできます。しかしその人に迷惑をかけます。またその人が送信者の調査をしたときのことを考えてください。あなたの状況が悪くなるだけです。

 では、(2)で不満や(3)の場合、匿名メールは送信できないか?続きは「4-4. 匿名メールやメールヘッダーの偽造について」を見てください。

4-3-5. rcpt to: 宛先のメールアドレス

 これは通常に宛先のメールアドレスを指定します。

 入力後、「250 OK」のような200番台の番号が返ってくればOKです。500番台の数字が返ってくればエラーです。

4-3-6. data

 メールの内容の送信開始するためのコマンドです。これ以降、8のピリオドを送信するまでメール内容となります。

 入力後、何も返ってこないか「354 End data with .」「354 go ahead」のような300番台の番号が返ってくればOKです。500番台の数字が返ってくればエラーです。

4-3-7. subject: 表題

 これはあってもなくても構いません。これを入力すると表題となります。表題の文字列はなんでも構いません。

4-3-8. メール内容(メールヘッダーも含む)

 メールの内容を入力します。

 まずメールヘッダーがあれば入力します。なければなくて結構です。

 空行を1行入力します。

 その後メールの本文を入力します。「・・・」「Enter」「・・・」「Enter」・・・で改行します。

4-3-8. .(ピリオドのみ)

 ピリオドだけを入力することで内容を終了します。

 入力後、「250 Message accepted for delivery」のような200番台の番号が返ってくればOKです。500番台の数字が返ってくればエラーです。

4-3-10. quit

 SMTPサーバーの接続を解除するためのコマンドです。

 入力後、「221smtp.xxx.co.jp closing connection」のような200番台の番号が返ってくればOKです。500番台の数字が返ってくればエラーです。


★Telnetを使用した具体的な例です。

ここでは、

SMTPサーバー: smtp.xxx.co.jp
宛先メールアドレス: atesaki@yyy.co.jp
内容: 匿名メールテストです。

とします。なお→から右はサーバーからのメッセージです。

telnet smtp.xxx.co.jp 25
Trying 123.456.78.90...
Connected to smtp.xxx.co.jp
ehlo
250 OK
mail from:
250 OK
rcpt to: atesaki@yyy.co.jp
250 OK
data
354 End data with .
匿名メールテストです。
250 Message accepted for delivery
quit
221smtp.xxx.co.jp closing connection

このような感じになります。この例では送信メールアドレス(mail from:)が空ですので、これができれば匿名メールが送信できたことになります。

4-4. 匿名メールやメールヘッダーの偽造について

 ここでは、Telnet を使用して匿名メールを送る場合の様々な注意点について説明します。

4-4-1. 匿名メールにするには

 匿名メールにするには、送信者を自分のものではないメールアドレスに変更すればよいのですから、4-3-4 の mail from の送信メールアドレスを変更すればいいのです。ただ上でも説明したように、このメールアドレスは自由に入力できるわけではありません。SMTPサーバーの設定によります。空にできたり自由に入力できる場合はOKです。

例1:mail from:
例2:mail from: xxx@xxx.co.jp

@ の前まで変更できる場合で、あなたがそれでよいのならOKです。

例:mail from: xxx@capella.freemail.ne.jp

 ダメな場合はどうすればよいでしょうか?

4-4-2. メールヘッダーの偽造について

 4-3-8の内容に関してです。

 メールヘッダーがあれば入力すると書きましたが、実はこれが入力できることでメールヘッダーの偽造ができるのです。

例:Date: Sun, 1 Jan 1000 00:00:00 +0900

これで西暦1000年の1月1日に送ったことになります。

4-4-3. From フィールドの上書き

 メール送信者というのはメールヘッダーの中の一つで From フィールドです。mail from で入力したアドレスはSMTPサーバーが From フィールド に書き込んでしまいます。

 そこでメールヘッダーとして強引に From フィールド を追加してしまうとどうなるんでしょうか?

 メールヘッダーの From フィールドは上書きされます。メールヘッダーには1つの From フィールドしか許されないということでしょう。したがって4-3-8の内容の入力で From フィールドを入力すればよいのです。もちろん空にできれば空にしてもOKです(空にはならないようですけど)。

 具体的には次のような感じになります。

例: mail from: jimita@capella.freemail.ne.jp
data
From: xxx@xxx.co.jp

ただ、これもSMTPサーバーによってはうまくいかない場合があります。また、うまくいった場合でも重要な注意点があります。次の項を見てください。

4-4-4. Return-Path フィールドについて

 4-3-4 の mail from に関してです。

 前項のように mail from は本当のメールアドレスを入力し、メール内容入力時に From フィールドを入力して From フィールドを書き換えたとします。

 メールは経由サーバーを介して送信されていきますが、一番最後のサーバーが mail from の引数を Return-Path フィールドとしてメールヘッダーに追加する場合があります。実際はそういうサーバーのほうが多いです。この場合はメールヘッダーの Return-Path にこの引数がそのまま表示されてしまいます。どういうことかというと、

 「mail from は勝手に入れられないみたいだから本物のメールアドレスを入れた。ちゃんと後から From でウソのメールアドレスを入れておいたからこれでOK。」

 このメールを相手が受信すると、見かけの送信者はウソのメールアドレスになりますが、メールヘッダーを見られると Return-Path にあなたのメールアドレスが書き込まれていてバレバレ、ってことになるのです。もちろんメールソフトは送信者として From のほうを表示しますが、メールヘッダーに Return-Path がある場合はこちらが本当の送信者となるわけです。

 この Return-Path フィールドですが、最後のサーバーが勝手に追加するのですから、メール内容の入力で追加しても上書きされません。強引に追加するとメールヘッダーの下の方に追加されて Return-Path フィールドが複数になるだけです。逆に怪しまれます。

 したがって、最後のサーバーが mail from の引数を Return-Path フィールドとして追加するような場合は、mail from に実の送信メールアドレスを入力すると本当の意味での匿名メールにはなりません。といっても追加するのは最後のサーバーですから、そのサーバーが書き込むのかどうかは調べようがありません。

 匿名メールを送る相手がメールヘッダーを知らないような人であればこれで十分です。そうでなければどうしたらいいでしょうか?

4-4-5. SMTPサーバーの検索

 今まで説明してきたようにSMTPサーバーの設定によっては匿名メールを送るのは難しいのです。しかしSMTPサーバーは名前さえわかれば誰でもアクセスすることができます。したがってSMTPサーバーを見つければよいのです。Web上にはSMTPサーバーリストのようなページが存在します。検索サイトで「SMTPサーバー、リスト」などと入力して検索します。またSMTPサーバー名はドメイン名そのままだったり、ドメイン名の前に「smpt.」や「mail.」を付けたものが多いです。例えばドメイン名が xxx.co.jp の場合、xxx.co.jp や smtp.xxx.co.jp や mail.xxx.co.jp などです。

 もちろん見つけたSMTPサーバーが自由に使用できるわけではありません。認証が必要だったり、送信の前に受信をしなければならなかったりするようなものはダメです。1つ1つTelnetで確かめてみるしかありません。

 入力する送信メールアドレスは、見つけたSMTPサーバーと同じドメイン名にするとうまくいくことが多いです。

例1:smtp.aaa.com → xxx@aaa.com
例2:mail.bbb.co.jp → xxx@bbb.co.jp

のような感じです。

4-4-6. ehlo によるメールヘッダーの Received フィールドの ホスト名の偽造について

 4-3-2 の ehlo で入力した文字列に関してです。

 SMPTサーバーは、Received フィールドにIPアドレスと ehlo で入力した文字列があればこれも書き込みます。IPアドレスのドメイン名を書くこともあります。ehlo jimita とすると次のような感じです。

例1: Received: from unknown (HELO jimita) (123.456.78.90) by ・・・
例2: Received: from jimita (smtp.xxx.co.jp [123.456.78.90]) by ・・・
例3: Received: from jimita ([123.456.78.90]) by ・・・

この文字列を実際に存在するドメイン名、要するにウソのホスト名にしておくと Received フィールドのホスト名とIPアドレスが一致しなくなります。仮にSMTPサーバーが yahoo.co.jp (IPアドレスは211.14.12.0)だったとし、ehlo infoseek.co.jp にすると、例3の場合は次のようになります。

例: Received: from infoseek.co.jp ([211.14.12.0]) by ・・・

ウソのホスト名だとはいえ実在するドメイン名が表示されています。

 迷惑メール対処法で「Received フィールドを見る」を知っている人の中でも、このウソのホスト名宛に迷惑メールを対処してもらうように要請する人もいるんじゃないでしょうか。しかし問い合わせをしても、「そのようなメールは来ておりません。」という返事が返ってくるだけです。当然ながら infoseek.co.jp はメールを受信していません。Telnetで勝手に入力しただけです。IPアドレスのほうが正しいのです。このホスト名が本物かどうかを確かめるには、横に表示されているIPアドレスをドメイン名検索サービスで調べるしかありません。ここで初めてホスト名とIPアドレスが一致しないということが判明しホスト名がウソだとわかるのです。Received フィールドを見て迷惑メールに対処するんであればIPアドレスからドメイン名を検索をしなければなりません。

4-4-7. Message-ID フィールドについて

 メールヘッダーの Message-ID はメールの識別子です。全世界のメールはそれぞれ固有の Message-ID を持つべきで @ 以降はSMTPサーバー名です。・・・のはずですが偽造できてしまいます。

例: Message-ID: <1234567890-12345678@[1.1.1.1]>

 Message-ID は入力しないとSMTPサーバーが書き込みます。したがって Telnet を使って Message-ID を入力しなかった場合、SMTPサーバーが自分の名前を書いてしまうのでどのSMTPサーバーを使ったかがバレバレとなります。相手がメールヘッダーを知らない場合はよいでしょうが、知っている場合は Message-ID も追加しておいたほうがいいですね。逆に匿名メールの調査の際は Message-ID も参考になりますね。

4-4-8. Received フィールドの偽造について

 Received は経由サーバーによるメールの受信の情報です。経由サーバーがメールを受け取るごとに次々と書いていきます。新しいほどメールヘッダーの上のほうに書かれます。したがって一番下に書かれている Received が最初のSMTPサーバーとなりこのサーバーのログを見れば誰が送信したかがわかるはずなのですが・・・実はメール内容の入力でこの Received: フィールドは追加できてしまいます。しかも都合のいいことに下に追加されてしまいます。

例: Received: from [111.222.33.444]
 by [123.456.78.90] SMTP; 11 Dec 2002 15:57:13 +0900

 Received の内容はSMTPサーバー名やIPアドレスや日時などですが、これを信用できる内容で追加してしまった場合、具体的には実在するSMTPサーバー名やIPアドレス、日時は実際に送信するちょっと前の時間に設定した場合はどうなるんでしょう。これは実際に私が Received を追加して私宛に送ったメールのヘッダーです。ただしIPアドレスだけ変えてあります。

例: Received: (qmail 21229 invoked from network); 11 Dec 2002 15:57:26 +0900 
Received: from unknown (123.456.78.90)
 by capella.freemail.ne.jp with SMTP; 11 Dec 2002 15:57:26 +0900
Received: from [111.222.33.444]
 by [123.456.78.90] SMTP; 11 Dec 2002 15:57:13 +0900

上の2つはSMTPサーバーが書き込んだものです。3番目は私が勝手に追加したものです。といってもこれは見ただけではわかりません。これが一番やっかいです。困ったもんです。Received の偽造ができてしまいます。このような場合、どの時点かから上の部分は正しいReceived です。この場合は2番目ですね。このメールの送信者を割り出すにはどうしたらいいんでしょうか?これはそれぞれの Received に書いてあるサーバーにログが残っているかいないかを問い合わせるしかありません。この偽造をされると送信者を特定するのはたいへん困難です。しかも信用されそうな Received をいくつも追加した場合は・・・

 しかし逆に悪質な匿名メールならば調査は可能だということです。メールヘッダーの偽造によって調査を困難にするのはここまでしかできません。

 くれぐれも悪意のある匿名メールは送らないようにしましょう。

※Received フィールドの偽造をされたメールについて

 一番やっかいな匿名メールはこのReceived フィールドを追加されたものでしょう。匿名メールの送信者の特定は一番下のReceived フィールドを見るのが一番確実です。しかしこの偽造 Received の追加をされては一番下の Received がウソのものとなってしまい、送信者の特定は困難となります。

 ただこの偽造はするほうもたいへんです。なにせサーバー名やIPアドレスや日時など全部信用できるように書かなければなりませんからね。適当に書いたものは逆に偽造したのがバレバレになってしまいます。匿名メールといってもよほどのことがない限りここまではしないでしょう。

4-5. 匿名メールを送るには(まとめ)

 Telnetを使って匿名メールを送る方法のまとめです。

(1) mail from が自由に入力できるか?
  できる  → OK
  できない  → (2)へ
(2) mail from の入力で @ の前までなら変更できるか?
  できる  → あなたはそれでよいか?
    よい → OK
    よくない → (3)へ
  できない  → (3)へ
(3) mail from は本当のメールアドレスを入力して From を後から上書き入力するが、Return-Path に本当のメールアドレスをサーバーが書き込む場合がある。あなたはそれでよいか?
  よい  → OK
  よくない  → (4)へ
(4) SMTPサーバーを探す。

こんな感じでしょうか。

4-6. 注意点

 注意点です。

  (1) どんな場合も必ず Received フィールドにIPアドレスが書かれてしまう。
  (2) 経由サーバーの最後のサーバが mail from の引数を Return-Path として追加する場合がある。
  (3) Message-ID を入力しなかった場合はSMTPサーバーが自分のサーバー名を書いてしまう。

 (1)に関しては信用されそうな Received フィールドを追加することでわかりにくくすることはできます。

 (2)に関してはどうしようもありません。mail from をあなたのメールアドレスを入力しなければならない場合であなたがこれでダメなら mail from を自由に入力できるSMTPサーバーを探すしかありません。

 (3)に関しては Message-ID フィールドを追加することができます。

 今まで説明してきたように完全な匿名メールというものは存在しません。SMTPサーバーは必ず Received にIPアドレスを書きます。どんなにメールヘッダーを偽造しても、たとえ偽造 Received フィールドを追加したとしてもどこか1ヶ所だけは本当のIPアドレスが書き込まれてしまうのです。これは削除することができません。そしてサーバーには送信ログが残ります。いつ誰がメールを送信したという情報が残るのです。送信者を調べようと思えば調べられるわけです。

 ★結局、匿名メールを送る相手によるということです。

 相手がメール初心者の場合はこんなことまでしなくても、例えば送信者の表示名だけ変えるだけでも十分です。

例: "じみた"<jimita@capella.freemail.ne.jp>
"xxx"<jimita@capella.freemail.ne.jp>

これだけでも相手は誰が送ったかわからなくなるでしょう。

 相手がメールヘッダーを知らない人であれば、少々メールヘッダーに送信情報が書かれてもいいわけです。

 相手がメールヘッダーを少々知っている人であれば、送信情報を隠せるところまで隠せばいいのです。

 相手がメールヘッダーから調査をしそうな人の場合は、・・・これはあなたの判断に任せます。


5. 最後に

 4の Telnet は詳しく書きました。2の semdmail や3のツールといっても、やっていることといえばSMTPサーバーとやりとりをしているだけです。3のツールは難しいことを知らなくても匿名メールは送れますが、あなたの知らないところでメールヘッダーに送信情報が書かれる場合があります。Telnetで出来ればこれに超したことはありません。

 匿名メールを送る際に重要なことは、あなたがメールの仕組みやメールヘッダーというものをどこまで知っているか、同様に相手がどこまで知っているかです。

 一番手の込んだ匿名メールはどんなものでしょうか?

 リメーラーは宛先アドレスの前に「Request-Remailing-To:リメーラー」の行を追加することで複数のリメーラーを使用することができます。リメーラーのチェーンです。

 したがって、

「Telnetでメールヘッダーを偽造しまくり、宛先をリメーラーにし、さらにリメーラーのチェーンをする。」

まあ果てしなく送信者を特定するのは困難となりますが、やろうと思えばできます。

 ところで完全な匿名メールって存在するんでしょうか?現在のメールシステムでは無理じゃないでしょうか。SMTPサーバーやリメーラーには送信ログが残ります。またSMTPサーバーを使う以上 Received にIPアドレスが書き込まれます。100%完全な匿名メールというのは無理だと思うんですけどね。でもあることはあります。

SMTPサーバーのシステムにバグを発見し利用する。
バグのあるSMTPサーバーを探す。
送ったPOPサーバーのログインとパスワードを盗み出しヘッダーを書き換える。
メール送信にSMTPサーバーを使わず、直接POPサーバーに送ってしまう。

など(^^)

 くれぐれも悪意のある匿名メールは送らないようにしましょう。