List Mail User wrote on Mon, 19 Dec 2005 05:40:35 -0800 (PST): > Whose "reverse DNS record"?
The client's. > > Actually, I think checking that if rDNS exists, it matches is not > a bad idea; it's not a bad idea. But it's not RFC-compatible and bound to FP quite often. But the actual prohibition is on the forward DNS (or even the > supplied address literal, as stupid as that seems) not matching the client > IP is being used for rejection. Ahm, yes. There is a slight misunderstanding. I didn't want to imply that you can reject based on certain helo requirements and be 2821-conformant. But your original sentence binds the requirement for identification and the requirement for not-refusal together. It's not bound together. There *is* a requirement to helo with correct information. And there *is* a requirement not to refuse if that information is wrong. This doesn't wipe out the first requirement. Basically this is to allow a "service" such > as where domainA handles mail for domainB, and being "smart" does a HELO/EHLO > using domainB as the argument when sending mail for domainB; This leads to > the situation where the client's IP is domainB (or some host contained within > it), but the the HELO/EHLO argument "seems" unrelated (since the receiver has > no knowledge of a relationship between the domains). Well, I don't see an explanation in the document that it's because of this. The requirement is quite clear: identify yourself, not someone else. Heloing with different credentials is not correct, even with "best intent". Also, there is no rule > against requiring that the client's IP meet FCrDNS, hence that is the common > check that is applied (and not prohibited). I'm not sure what FCrDNS means. But just because it's not mentioned doesn't mean it's allowed. You can deduce from the document and the meaning is clear: identify yourself and don't refuse others because of incorrect data. Saying that rDNS match rejection is conformant with 2821 is like saying rejecting all blue servers is conformant just because it's not explicitly forbidden. > To consider the notion of "client identity" (which is a valid way > to view the concept), we must include also the case of agency - i.e. the > client is acting as an agent of the domain identified in the HELO. No, that's not at all even implied in there. Remember, a machine can carry thousands of domains. It's not the purpose to identify for which domain it is sending, but who it is: "who am I". > For the second case above, if the argument does not resolve to any > IP but does resolve to at least one 'MX', the qualifiers in 2821 leave out > any chance to check the second half of the argument - i.e. the forward part > of the FC ("full circle") - some IP -> HELO/EHLO arg. You can still always > check FCrDNS on the client IP and reject on that basis if there is a lack > of mapping (the prohibition is on rejecting because "client IP" != "some > IP"). This is a subcase of the whole matching story. It's not allowed. There is *no* requirement that this check matches, obviously you cannot reject on a basis of a non-requirement. See above: rejecting blue servers. If you want to be strict you could argue that the only way for the client to know *for sure* "who am I" is to do a reverse lookup (otherwise he can't assure that what he grabs from /etc/hosts or HOSTNAME is accurate and unique and really identifies itself) and thus construct this requirement. Nevertheless, you still clash with the requirement not to refuse because of wrong data. > > In fact, it is fairly common for people to pose the question, "Why > is there any argument to HELO/EHLO at all?". After all, by the nature of > the TCP protocol, we know unambiguously the client's IP, which is a unique > identifier; The answer is that the HELO/EHLO argument give us, rather than > the identity of the sending machine, the identity of the organization (re. > domain) on whose behalf the mail is being sent. No. The only rationale for this argument given in the document (or maybe it's another RFC, I don't remember) is that the machine can identify loops. It's clearly a *machine* identifier. Nothing else makes sense. The sending organization is known from the email address. > And of course, the additional cases of virtual hosts sharing a > machine (and IP address), but wishing to give the name of the domain sending > the email, rather than merely the and identifier mapping to the hosting > campany or the case of an organization with multiple domains sitting behind > a common NAT'd IP address wishing the same, are provided for by interpreting > the HELO/EHLO argument of the idenitifer of the originating organization (re. > again as domain), not of the owner of the IP which may be visible to the > receiver (which as stated, is already unambiguously defined). All of that is not of interest at all in this document. > If it were a requirement that HELO/EHLO argument -> client IP, > there would be no reason to have the argument. It *is* a requirement. You are just not allowed to refuse if the client fails to do this. Which means if a client wants to assure delivery he better complies or he risks getting rejected by someone who doesn't obey this rule. It's like using rubber wheels on a street because wheels of steel may prove difficult to use. I'm going on vacation soon and don't have time to continue such lengthy discussion. So, wish you a relaxing end of year and if you want to follow up I suggest moving it to private mail. Kai -- Kai Schätzl, Berlin, Germany Get your web at Conactive Internet Services: http://www.conactive.com