我试图了解使用smtp发送邮件。我看到了一个例子,就像这样:
HELO yourhost.yourdomain.edu
MAIL FROM: <carol@yourhost.yourdomain.edu>
RCPT TO: <msgs@host1.somewhere.com>
RCPT TO: <alice@host2.somewhere.com>
DATA
Date: Sun, 30 Nov 98 nn:nn:nn EST
From: Carol <carol@yourhost.yourdomain.edu>
To: <msgs@host1.somewhere.com>
Cc: <alice@host2.somewhere.com>
Subject: Update
Mike: Cindy stubbed her toe. Bobby went to
baseball camp. Marsha made the cheerleading team.
Jan got glasses. Peter has an identity crisis.
Greg made dates with 3 girls and couldn't
remember their names.
.
QUIT
我感到困惑的是,我们在开始时已经有了MAIL FROM和RCPT TO,为什么我们还有来自:,To:和Cc:再次在DATA部分? RCPT TO:在标题和To:在DATA部分之间有什么区别?如果我们假设我们使用这些命令成功发送邮件,那么输出是什么?我的意思是接收器看到了什么?
由于
答案 0 :(得分:3)
消息正文在协议的DATA部分传输。
但是,SMTP使用MAIL FROM和RCPT TO来记录信封信息(可能与实际消息不同)。这在邮件列表传递中最为明显,其中信封发送给实际收件人,而邮件正文通常只包含通讯组列表名称。
收件人只能看到DATA中的内容。当MTA(邮件传输代理)将内容放入邮件存储区以供MUA(邮件用户代理)检索并显示给用户时,信封将丢失。
由于可能存在不匹配的值,这产生了多年的问题(以及无穷无尽的垃圾邮件),但当RFC-822结构和SMTP传输协议及其后继者被认为是最合适的机制时,这被视为最合适的机制。的准备。
实际传输不要求以任何特定形式格式化邮件。这是接收系统验证的内容,以确保只接受格式良好的邮件进行本地传递。
答案 1 :(得分:1)
基本上:SMTP服务器(如Postfix)只对信封感兴趣(MAIL FROM和RCPT TO命令),邮件用户代理(如Thunderbird)只对邮件内容感兴趣(From:,To:和Cc)头)。
这与蜗牛邮件非常相似,信封上的地址和附带的信件通常是相同的,但不一定相同。
信封中的反向路径表示如果出现问题,将在何处发送退回邮件。它可能与From标头匹配,也许不匹配。例如,秘书以他老板的名义发送邮件。反向路径将包含秘书的电子邮件地址,From标题将包含老板的名称和邮件地址。邮件列表也是不同的,因为它是由Pekka写的。
前向路径(RCPT TO参数)是实际目的地。 SMTP服务器不知道是否必须将邮件传递给某人,因为他在To中,或者因为他在te Cc列表中。在Bcc地址的情况下,邮件内容中自然没有Bcc标题!毕竟它是盲抄袭。但是Bcc-ed收件人在RCPT TO命令中被列为转发路径,因此SMTP服务器将了解它们,用户不会。