AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 5822
Accepted
TStamper
TStamper
Asked: 2009-05-08 06:54:18 +0800 CST2009-05-08 06:54:18 +0800 CST 2009-05-08 06:54:18 +0800 CST

电子邮件中的虚假“发件人”字段

  • 772

如何操纵电子邮件中的“发件人”字段并使“收件人”用户看到与实际不同的东西。

例子:

真的从

From: [email protected]

但他们看到

From: Tremayne "Top Dog" Stamper

我从操纵 SMTP 中听说过它,但真的不确定它有多准确或如何完成

email smtp
  • 6 6 个回答
  • 28189 Views

6 个回答

  • Voted
  1. Best Answer
    jj33
    2009-05-08T07:09:57+08:002009-05-08T07:09:57+08:00

    在其基础上,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
  2. Justin Scott
    2009-05-08T07:15:01+08:002009-05-08T07:15:01+08:00

    这里有几个不同的事情需要考虑。如果您只想显示不同的名称或电子邮件地址,请将邮件的“发件人”标题(邮件发件人地址)设置为显示名称在括号中的电子邮件地址,如下所示:

    来自:乔示例 <[email protected]>

    请记住,邮件标题中的“发件人”行仅用于显示目的。实际路由是由 SMTP 信封地址完成的。这是 SMTP 服务器实际用于在服务器之间传输消息的内容。这可能与消息“发件人”标头不同。如果您有自定义 SMTP 引擎,只需让它在 SMTP 信封中使用一个地址,在实际邮件的“发件人”标头中使用另一个地址。

    您可能出于许多正当理由想要这样做,但请不要出于恶意目的。

    请注意,可以在RFC 5322 - A.2.1中找到正确的语法示例

    • 8
  3. Ivan
    2009-05-08T07:08:56+08:002009-05-08T07:08:56+08:00
    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
  4. sh-beta
    2009-05-08T07:11:56+08:002009-05-08T07:11:56+08:00

    “真正发件人”地址来自 SMTP 对话中的“发件人:”对话框。

    “假冒”来自利用电子邮件客户端中的常见做法,即显示在 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.
    #
    

    如果您在数据部分省略了“发件人:”和“收件人:”行,它将显示实际的信封发件人和收件人。

    请注意,垃圾邮件过滤器通常会寻找这些技巧,并且肯定不会让您成为任何永久的朋友。此外,这不适用于所有邮件客户端(仅适用于最常见的客户端)。

    • 2
  5. squillman
    2009-05-08T06:58:43+08:002009-05-08T06:58:43+08:00

    是的,它是通过手动设置 SMTP 标头来完成的。去谷歌上查询。但是不要被垃圾邮件抓到......

    • 1
  6. Dani
    2009-05-08T07:30:06+08:002009-05-08T07:30:06+08:00

    这是我直接从代码中提取的 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

相关问题

  • 你使用什么样的邮件服务器?

  • 针对大量邮件的 SMTP 服务的建议 [关闭]

  • 多操作系统环境的首选电子邮件客户端

  • Exchange 2007 的备份解决方案

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve