RFC 2821 - 客户端如何知道何时发送第一个命令?

时间:2015-07-24 06:43:37

标签: smtp rfc

来自RFC 2821:

D.2中止的SMTP交易场景

  S: 220 foo.com Simple Mail Transfer Service Ready
  C: EHLO bar.com
  S: 250-foo.com greets bar.com
  S: 250-8BITMIME
  S: 250-SIZE
  S: 250-DSN
  S: 250 HELP
  C: MAIL FROM:<Smith@bar.com>
  S: 250 OK
  C: RCPT TO:<Jones@foo.com>
  S: 250 OK
  C: RCPT TO:<Green@foo.com>
  S: 550 No such user here
  C: RSET
  S: 250 OK
  C: QUIT
  S: 221 foo.com Service closing transmission channel

我的理解是

  S: 250-8BITMIME
  S: 250-SIZE
  S: 250-DSN
  S: 250 HELP

是服务器支持的扩展名列表。 在给定的示例中,客户端在收到此列表后发送第一个命令EHLO。 但是,它如何知道此列表中不会有其他项目?服务器没有命令,如“LISTING_EXTENSIONS_DONE”。 所以例如如果服务器只有8BITTIME扩展,那么客户端如何知道它是唯一的,它不应该等待服务器发送其他扩展?

1 个答案:

答案 0 :(得分:1)

回复SMTP EHLO命令包含与中止的行 250-... - 要遵循的更多回复行
250 ... - 最终回复行

RFC-2821/4.1.1.1

  

4.1.1.1扩展HELLO(EHLO)或HELLO(HELO)
     ...
     通常,对EHLO的回复将是多行回复。每一行      响应包含一个关键字,并且可选地包含一个或多个      参数。遵循多行回复的常规语法,这些      keyworks遵循代码(250)和连字符,除了最后一个      line,以及最后一行的代码和空格。