An example of a client-server conversation is given at the end
of this document.
In SMTP server EHLO replies, the keyword associated with this
extension is XFORWARD. The keyword is followed by the names of the
attributes that the XFORWARD implementation supports.
The client may send the XFORWARD request at any time except in
the middle of a mail delivery transaction (i.e. between MAIL and
DOT). The command may be pipelined when the server supports
ESMTP command pipelining.
The syntax of XFORWARD requests is described below. Upper case
and quoted strings specify terminals, lowercase strings specify
meta terminals, and SP is whitespace. Although command and attribute
names are shown in upper case, they are in fact case insensitive.
xforward-command = XFORWARD 1*( SP attribute-name"="attribute-value )
attribute-name = ( NAME | ADDR | PROTO | HELO | SOURCE )
attribute-value = xtext
Attribute values are xtext encoded as per
The NAME attribute specifies the up-stream hostname,
or [UNAVAILABLE] when the information is unavailable. The
hostname may be a non-DNS hostname.
The ADDR attribute specifies the up-stream network
address, or [UNAVAILABLE] when the information is unavailable.
Address information is not enclosed with . The address may
be a non-IP address.
The PROTO attribute specifies the mail protocol for
receiving mail from the up-stream host. This may be an SMTP or
non-SMTP protocol name of up to 64 characters, or [UNAVAILABLE]
when the information is unavailable.
The HELO attribute specifies the hostname that the
up-stream host announced itself with (not necessarily via the
SMTP HELO command), or [UNAVAILABLE] when the information is
unavailable. The hostname may be a non-DNS hostname.
The SOURCE attribute specifies LOCAL when the message
was received from a source that is local with respect to the
up-stream host (for example, the message originated from the
up-stream host itself), REMOTE for all other mail, or [UNAVAILABLE]
when the information is unavailable. The down-stream MTA may
decide to enable features such as header munging or address
qualification with mail from local sources but not other sources.
Note 1: an attribute-value element must not be longer than
255 characters (specific attributes may impose shorter lengths).
After xtext decoding, attribute values must not contain control
characters, non-ASCII characters, whitespace, or other characters
that are special in message headers.
Note 2: DNS hostnames can be up to 255 characters long. The
XFORWARD client implementation must not send XFORWARD commands that
exceed the 512 character limit for SMTP commands.
Note 3: [UNAVAILABLE] may be specified in upper case, lower
case or mixed case.
Note 4: the XFORWARD server implementation must not mix
information from the current SMTP session with forwarded information
from an up-stream session.
Note 5: Postfix implementations prior to version 2.3 do not
xtext encode attribute values. Servers that wish to interoperate
with these older implementations should be prepared to receive