>...

mous replied to my comments (originally directly to Kai):

>List Mail User a écrit :
>[snip]
>>      Leave the FQDN part out and you can try to base an argument on 2821,
>> but there sections 2.3.4 and 2.3.5 simply and clearly states that "Domain
>> names are used as names of hosts and of other entities in the domain name
>> hierarchy." So there seems little left to argue about and "single dot rule",
>> even a "no dot" case is allowed in RFC2821 - "consists of one or more", 
>> though
>> I don't believe any such hosts still exist.
>
>agreed.
>
>"localhost" is an fqdn with no dots. (also in theory, some TLDs have 
>A/MX records, so they could send mail and thus helo as their tld name. 
>but fortunately, these don't send mail, so they can be ignored).
>
>also, the "matching" argument seems to be misinterpreted. the 
>requirement (in my understanding) is that
>       ip(helo) = client_ip
>not helo = rdns or mx(helo) = foo_bar
>
        It is actually much better/worse than that.  By sections, let us
go over the language in RFC2821.

        The phrasing in RFC2821 section 3.2:

"
...
   In the EHLO command the host sending the command identifies itself;
   the command may be interpreted as saying "Hello, I am <domain>" (and,
   in the case of EHLO, "and I support service extension requests").
"

gives us some comment about the intent - notice the explicit "<domain>",
not "<host>".  However the wording in section 3.6 regarding the argument
to HELO/EHLO is:
"
   Only resolvable, fully-qualified, domain names (FQDNs) are permitted
   when domain names are used in SMTP.  In other words, names that can
   be resolved to MX RRs or A RRs (as discussed in section 5) are
   permitted, as are CNAME RRs whose targets can be resolved, in turn,
   to MX or A RRs.  Local nicknames or unqualified names MUST NOT be
   used.  There are two exceptions to the rule requiring FQDNs:

   - The domain name given in the EHLO command MUST BE either a primary
     host name (a domain name that resolves to an A RR) or, if the host
     has no name, an address literal as described in section 4.1.1.1.
...
"
Notice that here in section 3.6 the requirement that a HELO/EHLO argument
be either resolvable to an 'A' RR or an IP literal is a "MUST", but in
section 4.1.1.1, we get:
"
4.1.1.1  Extended HELLO (EHLO) or HELLO (HELO)

   These commands are used to identify the SMTP client to the SMTP
   server.  The argument field contains the fully-qualified domain name
   of the SMTP client if one is available.  In situations in which the
   SMTP client system does not have a meaningful domain name (e.g., when
   its address is dynamically allocated and no reverse mapping record is
   available), the client SHOULD send an address literal (see section
   4.1.3), optionally followed by information that will help to identify
   the client system.  y The SMTP server identifies itself to the SMTP
   client in the connection greeting reply and in the response to this
   command.
...
"
(Note: the apparent typo of a 'y' in the last quoted paragraph actually
is the text of the RFC, not an error I have introduced).  Here, the previous
"MUST" requirement is reduced to a "SHOULD", introducing ambiguity in the
specification.  My specific situation is that the sending server does have
a static IP, but the upstream routing is dynamic and some possible paths
are NAT'd (though to static addresses, not DULs) - i.e. yet another case
beyond the example case where the client IP (and hostname) as seen by the
receiver is not known - and worse yet is neither known or readily knowable
by the sending machine (i.e. it couldn't construct an IP literal, even if
it wanted to).

        Similar "weasel" words occur later in section 4.1.4:
"
...
   The SMTP client MUST, if possible, ensure that the domain parameter
   to the EHLO command is a valid principal host name (not a CNAME or MX
   name) for its host.  If this is not possible (e.g., when the client's
   address is dynamically assigned and the client does not have an
   obvious name), an address literal SHOULD be substituted for the
   domain name and supplemental information provided that will assist in
   identifying the client.
...
"
with the key words here being "if possible", and for other cases "SHOULD".
This discounts the possibility of it not being possible *and* also not
possible to construct an IP literal.

        So, to this point the only unambiguous requirement we have yet is
that a FQDN or IP literal must be used, or a CNAME that refers to one of
these and that it must resolve to either one or more 'A' *and/or* 'MX' RRs.

        Now, still in section 4.1.4, we completely blow away any requirement
that the HELO/EHLO requirement match the client's IP at all with the next
paragraph:
"
...
   An SMTP server MAY verify that the domain name parameter in the EHLO
   command actually corresponds to the IP address of the client.
   However, the server MUST NOT refuse to accept a message for this
   reason if the verification fails: the information about verification
   failure is for logging and tracing only.
...
"
So we find a rare "MUST NOT" case in that a conforming server is actually
prohibited from refusing mail because the HELO/EHLO != client IP!  There
are at least one escape clauses for administrators who wish to enforce a
stricter set local rules - section 7.7 says:
"
7.7 Scope of Operation of SMTP Servers

   It is a well-established principle that an SMTP server may refuse to
   accept mail for any operational or technical reason that makes sense
   to the site providing the server.
...
"
Which leads to the old and well-worn adage "your server, your rules", and
together with other clauses basically allows a 550 response anywhere you
like for any reason.

        So we find it is actually not only *not* contained with RFC2821
any requirement that the HELO/EHLO argument resolve to/match the client IP,
but we find an explicit prohibition on refusing a transaction because of
the lack of match.  For those administrators that do want to enforce some
other set of rules for whatever reason(s) they choose, we do still have
section 7.7 which basically is a "anything you think makes sense is OK"
clause - which doesn't require the administrator to be correct, or even
rational but simply to want to impose a rule that he/she believes in, and
that *is* allowed.


        Paul Shupak
        [EMAIL PROTECTED]

Reply via email to