web-dev-qa-db-ja.com

電子メールの偽の「差出人」フィールド

メールの「from」フィールドを操作して、「to」ユーザーに実際とは異なるものを表示させるにはどうすればよいですか。

例:

本当にから

From: [email protected]

彼らは見る

From: Tremayne "Top Dog" Stamper

SMTPの操作から聞いたことがありますが、それがどれほど正確で、どのように実行できるかは本当にわかりません

9
TStamper

基本的に、SMTPは実際の検証を行わない単なるテキストベースのプロトコルです。次に例を示します。

=== Trying g3.example.net:25...
=== Connected to g3.example.net.
<-  220 home.example.net ESMTP Exim 4.68 Thu, 07 May 2009 11:03:21 -0400
 -> EHLO g3.example.net
<-  250-home.example.net Hello g3.example.net [192.168.0.4]
<-  250-SIZE 52428800
<-  250-PIPELINING
<-  250-AUTH CRAM-SHA1 CRAM-MD5 MSN
<-  250-STARTTLS
<-  250 HELP
 -> MAIL FROM:<[email protected]>
<-  250 OK
 -> RCPT TO:<[email protected]>
<-  250 Accepted
 -> DATA
<-  354 Enter message, ending with "." on a line by itself
 -> Date: Thu, 07 May 2009 11:03:21 -0400
 -> To: [email protected]
 -> From: [email protected]
 -> Subject: test Thu, 07 May 2009 11:03:21 -0400
 -> X-Mailer: swaks v20070921.0-dev jetmore.org/john/code/#swaks
 -> 
 -> This is a test mailing
 -> 
 -> .
<-  250 OK id=KJA4HL-0006M6-8T
 -> QUIT
<-  221 home.example.net closing connection
=== Connection closed with remote Host.

"MAIL FROM:"行はSMTPエンベロープ送信者を定義し、From:はメッセージDATAで定義されています。これを防ぐ方法はいくつかありますが、プロトコル自体ではなく、メールサーバーロジックで定義されます。

たとえば、私はメールプロバイダーとして、user @ domainタイプのユーザー名を使用してユーザーに認証を要求する場合があります。次に、私のメールサーバーでは、送信するすべてのメールに、エンベロープ送信者と、認証されたユーザーと一致するFrom:ヘッダーが必要になる場合があります。 DKIMやSPFなどの追加のテクノロジーもこの分野で役立ちます。

14
jj33

ここで考慮すべき点がいくつかあります。別の名前または電子メールアドレスを表示するだけの場合は、メッセージの "差出人"ヘッダー(メッセージの差出人アドレス)を、表示名を角かっこで囲んで電子メールアドレスに設定します。

From:Joeの例<[email protected]>

メッセージヘッダーの「from」行は表示目的でのみ使用されることに注意してください。実際のルーティングは、SMTPエンベロープアドレスによって行われます。これは、サーバー間でメッセージを送信するためにSMTPサーバーが実際に使用するものです。これは、メッセージの「from」ヘッダーとは異なる場合があります。カスタムSMTPエンジンがある場合は、SMTPエンベロープで1つのアドレスを使用し、実際のメッセージの "from"ヘッダーで別のアドレスを使用するようにします。

これを実行する正当な理由はいくつかありますが、悪意のある目的は控えてください。

正しい構文の例は RFC 5322-A.2.1 にあります。

8
Justin Scott
telnet some_smtp_server.com 25
ehlo whatsup
mail from: [email protected]
rcpt to: [email protected]
data
your message here
end with a dot on a single line like this:
.

もちろん、リレーを許可するSMTPサーバーが必要ですが、これを見つけることはほとんど不可能です...または自分でロールする(この知識をスパムに使用しないでください!)。

2
Ivan

「really from」アドレスは、SMTP会話の「from:」ダイアログから取得されます。

「偽物」は、SMTPカンバセーションのデータ部分に配置されたさまざまなヘッダーフィールドを表示するという電子メールクライアントの一般的な慣行を利用することから来ています。例えば:

# telnet mail.example.com 25
Connected to mail.example.com.
Escape character is '^]'.
220 mail.example.com ESMTP Postfix
helo fakeserver
250 mail.example.com
mail from: [email protected]
250 2.1.0 OK
rcpt to: [email protected]
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
from: [email protected]
to: [email protected]
subject: This is a subject
This is the body.
.
250 2.0.0 Ok: queued as 90D0F95A06
quit
221 2.0.0 Bye
Connection closed by foreign Host.
#

データ部分の「from:」行と「to:」行を省略した場合、実際のエンベロープ送信者と受信者が表示されます。

これらの種類のトリックはスパムフィルターによって検索されることが多く、永続的な友達にはならないことに注意してください。また、これはすべてのメールクライアント(最も一般的なもののみ)では機能しません。

2
sh-beta

はい、SMTPヘッダーを手動で設定することにより、簡単に実行できます。グーグルそれ。しかし、スパムに巻き込まれないでください......

1
squillman

これはコードから直接私の2c-C#で書かれました

    public static void SendSpam(string message, string to)
    {
        System.Net.Mail.MailMessage myMessage = new System.Net.Mail.MailMessage("Fake Name", to);
        myMessage.Subject = "SPAM";
        myMessage.Body = message;
        System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient("mail.mailserver.com", 25);
        System.Net.NetworkCredential c = new System.Net.NetworkCredential("[email protected]", "realpassword");
        client.Credentials = c;
        client.Send(myMessage);
    }
0
Dani