Please do not put IP addresses into DNS MX records
blog.hboeck.de
blog.hboeck.de
And, of course, if you try to write an IPv6 address, it will naturally fail, since IPv6 addresses uses colon “:” characters, which are not allowed in domain names.
Therefore, it would be beyond silly for programs to actually use these invalid domain names in MX records. MX records which point to domain names which cannot be resolved are simply broken.
@example.net:192.0.2.0::10
tinydns synthesizes "mx.example.net." for the intermediate domain name.* http://jdebp.uk./Softwares/djbwares/guide/commands/tinydns-d...
That said, the SMTP Relay server needs to know that "mx.example.net." is one of its names, if it is a fallback server.
One can envision a world where records in the DNS database map a (domain,service,transport) tuple directly to a set of (address,port,preference,weight) tuples, where that is what administrators consistently deal with for everything, where that is how the on-the-wire protocol actually works, and where SMTP Relay loop prevention works by comparing IP addresses; but SMTP doesn't work like that, the DNS did not start out like that, the DNS has gone through at least two iterations to even get to where it is now with SRV and MX records, and the DNS has grown through fitting new mechanisms against existing ones.
One point about "mx.example.net.": If the intermediate domain names are in-bailiwick like that, and the MX response contains "glue", then it is not actually "one additional request".
It also would need to know its name in order to have SMTP over TLS to work (as required by DANE).
In order to have a pointer to what you actually want to have.
MX points to a hostname. This hostname can have many records including A, AAA, TXT, etc which are used by MTAs such as postfix and sendmail for delivery and verification. Also you'd have to make changes only in the hostname records which would affect all other records in the zone that point to it. Easier to maintain.
The History Department at a major university could delegate mail to be handled by the schools IT department and need not be involved in the movement of a mail server from one IP to another.
This decision was made in a time when running mail involved lots of external coordination and was best delegated to a single central group, whereas a simple web server could be spun up by a technical person within the History dept.
Having different DNS types helps simplify administration far more than the overhead of another entry.
Domain name is often the best way to go. Esp if different organisations are involved (like a mail hostel.)
However, a valid host name can never have the dotted-decimal form #.#.#.#, since at least the highest-level component label will be alphabetic
I searched to see where it's from (CSI: Miami) and found a screenshot of it in a gallery with even more egregious examples, like 67.259.2942.1003 and 8394.83.384.38482:
https://www.root.cz/galerie/pocitacove-nesmysly-ve-filmech/#...
[1] https://nationalnanpa.com/number_resource_info/555_numbers.h...
https://en.wikipedia.org/wiki/Chaosnet
All hail the second coming of Chaosnet, the return of the Tzeentch Control Protocol!
https://lovecraft.fandom.com/wiki/Chaos_God
>Major Chaos Gods
>Tzeentch: The Architect of Fate, who uses powerful sorceries to alter the future. He was once the greatest of the Chaos Gods and is potentially the most powerful. He's the God of Change, who endlessly plots and schemes, in a cosmic-wide game of subterfuge and manipulation. He became fully sentient in the 2nd millenium, due to mankind during Earth's medieval period. Tzeentch listens to the hopes of all mortals, feeding on their need and desire for change.
Per TFA,
> some mail servers do configure an IP address. Many mail servers are lenient when it comes to this misconfiguration and will deliver mails nevertheless
I.E. people can and do put IP addresses into these things. And any actual example is a complete rebuttal of claims of impossibility.
Standards don't have any cosmic significance. If people use a thing in a manner, then it's also that thing.
It has been further pointed out that even if dealing with human-readable forms in (say) BIND's "zone" format files, the human-readable form of an IP address doesn't actually get translated into a 4-label domain name, because it isn't a fully-qualified human-readble domain name. Human-readable IP addresses don't end in dots, and if one has typed in a human-readable IP address into a "zone" format file, one actually has not made the relevant misconfiguration; and conversely if one has made the misconfiguration (in a way that will actually work with dnscache et al.) what one has typed is not actually a vanilla human-readable IP address.
Ironically, neither the headlined article nor many in this discussion have noted that the SMTP standard's algorithm for loop prevention breaks when one does this in MX resource records for the same reason that it breaks when one uses alias domain names via CNAME records rather than the canonical domain names. SMTP Relay servers do not match the domain names in the data of MX resource records against (their own) IP addresses because ... well ... those domain names are not IP addresses.
This discusses some consequences of avoiding standards: https://tools.ietf.org/id/draft-thomson-postel-was-wrong-03....
Of course your DNS server can return whatever you fancy in response to a request. If you want to return an MX record that looks like an IP address then go ahead. I think the old restriction on a hostname being greater than two chars and no leading int has gone away. If a MTA is happy with the result then fine.
However, anti-spam systems will frown on things like that and will probably tut a bit. ... and drop your mail on the floor. You can do what you like - you could call these records "Liberty MX" but I will still drop your mail because I can't be arsed to analyse your intent. You don't follow email standards - DROP!
E.g., the lenient server would have to treat the value "10.0.0.254" like an IP address but "10.0.0.256" like a hostname that requires DNS resolution.
On the contrary, an MX record can only contain a FQDN. If you type “foo” as your target in an MX record in your domain “yourdomain.example”, what actually gets stored in the MX record is “foo.yourdomain.example.”; a perfectly normal FQDN.
EDIT: Yep, wireshark shows the byte sequence c00c following "protection". c00c is a compression pointer to "outlook.com." in the question section of the message.
I do, however, note that, in the -X part of the tcpdump output, the periods between labels are not really ASCII period characters, but simply displayed that way by tcpdump; these are in fact byte counts for the label lengths, which, since all the individual labels are below 32 characters in length, makes these bytes ASCII non-printing control characters, which tcpdump then displays as periods.
In another comment, eknshow writes¹ that DNS labels can either be specified inline with a byte count (as described above), or can be a pointer to another set of bytes. Could this be what you are seeing? That is, could the domain part be present, but specified as pointers and therefore not be obvious in the tcpdump output? One would have to carefully examine the raw bytes to be sure.
$ nc 127.0.0.1 25
220 localhost ESMTP Postfix (Ubuntu)
GET
221 2.7.0 Error: I can break rules, too. Goodbye.
Where: 221 =
- 2XX = "(Positive Completion Reply): The requested action has been successfully completed."
- 221 specifically, "Service closing transmission channel"
2.7.0 = (class.subject.detail)
- 2.X = "Success: Report of a positive delivery action."
- X.7 = "Security or Policy Status"(While .foo is a real top level domain, Google doesn’t let the public register names in it. It would be nice if there was a “.example” TLD; “.invalid” looks wrong and using “example.(com|org|net)” is awkward when using multiple domains in an example. 10.X.X.X should not be resolved at the internet-wide DNS level in the real world, but these are examples, not real-world cases)
We get this packet when asking the domain1.foo nameserver for blog.domain1.foo
blog.domain1.foo CNAME blog.domain2.foo
blog.domain2.foo A 10.1.2.3
Should we use this A record? BIND, about 20 years ago, did use this A record. DJB rightfully screamed bloody murder (since BIND allowed domain1.foo to alter the cache for domain2.foo), and would not accept the IP. MaraDNS (Deadwood, these days), on the other hand, accepts the IP, but stores it in the domain1.foo record (so domain1.foo does not affect cache entries for domain2.foo).Now, the correct thing to do is to not accept the domain2.foo record at all unless it comes from a server in domain2.foo’s bailiwick, since that is how modern versions of BIND do it. Otherwise, there are a small number of poorly configured corner cases (where domain1.foo has an outdated IP for domain2.foo) which will resolve incorrectly.
Now, back to the article, I believe DJB had a way of handling this: If it saw “domain2.foo MX 10.2.3.4”, it would then, if asked for the IP for the domain “10.2.3.4”, return the A record (IP) 10.2.3.4 (or was it Qmail which did the expected thing if it saw a dotted decimal domain name? Or both? There are enough old school DJB advocates here that someone should be able to clarify)
I know this much: DJB made some noise two decades ago that this is a real-world misconfiguration which should be accounted for and handled the expected way, calling them dotted decimal IPs.
I don't understand what you want here. RFC 2606 reserves .example for the purpose of examples. I use it all the time for this purpose.
If you want to really register names under that TLD now it isn't an example any more and ceases to serve its purpose.
For the record, example.com, example.net and example.org are reserved domains, that cannot be used. So you can always use those as safe examples. https://en.wikipedia.org/wiki/Example.com https://tools.ietf.org/html/rfc2606
I think you mean “Should we use this A record?”?
> calling them dotted decimal IPs.
Thankfully, with IPv6 we don’t have to worry about it, since the syntax for IPv6 addresses are invalid as domain names.
* http://jdebp.uk./Softwares/djbwares/guide/commands/dnscache....
* http://cr.yp.to/djbdns/dnscache.html
And it wasn't to do with bailiwick at all. It was to do with the fact that many softwares allowed users to enter either IP addresses or domain names; but either left recognizing IP addresses up to the DNS client libraries, some of which would in turn fail to do so and just treat them as domain names, or recognized IP addresses in a form that users would forget to use, such as having them enclosed in square brackets. M. Berstein's own DNS client library, and several others, do the same thing that dnscache did, in the client library itself, implementing this same defence at multiple layers of the system.
* https://cr.yp.to/djbdns/dns.html
A related scenario: Some Unix/Linux softwares allow one to specify users by either ID or name, but fail to take advantage of the fact that the colon is prohibited in account names, and so can be used as a syntax for unequivocally distinguishing between the twain. As a result, strings like "0" can potentially be mapped to something other than the superuser if someone goes and creates a user account with the name "0" (whereas ":0", as in the syntax for some tools, is unequivocally user ID zero and "0" generates an error unless there is actually an account by that name). This in turn leads to people arbitrarily banning account names with digits, and security holes resulting when the action upon encountering attempts to use such a name is to just ignore them. Recall the "User=0pointer" kerfuffle in systemd.
What? It's in RFC 1035, and that's noted in the article. There is lots of corner cases in the DNS. This is not one.
For the A records you can different classes of addresses. Nowadays we are using the "IN", but the spec also supports others like "CH" (Chaos) and "HS" (Hesiod).[2]
MX record points to mail.example.org (A-record). mail.example.org could then point to two different addresses in the different networks, using the different classes. Depending on what network the client is connected to, it can request specify the class in the query and get address on the correct network.
I guess they could have baked this in to the MX records as well, but that would have made it more complicated.
Disclaimer: Just googled this up.
[1] https://serverfault.com/questions/663112/why-cant-mx-records... [2] https://serverfault.com/questions/220775/what-does-the-in-me...
If I misunderstood the comment, then my bad.
The author is correct- if somebody is doing this, they're simply doing it wrong. Standards exist so that we can say "This configuration is wrong" instead of "Lets complicate software to allow people to use any configuration they want."
To be clear, MX records are supposed to point to an A record. Pointing to a CNAME record is not legal.
Having a dynamic IPv4 address with multiple domains on it, updating every record would take more time.
Admittedly, I could also have a copy of the IP per domain, but the CNAME was easier to setup.
Meanwhile you can use ALIAS record and get the same result, without others noticing.
See: https://en.wikipedia.org/wiki/CNAME_record#ANAME_record
I believe Postfix also delivers to IPv6 if possible.
Non-authoritative answer: gmail.com mail exchanger = 20 alt2.gmail-smtp-in.l.google.com. gmail.com mail exchanger = 5 gmail-smtp-in.l.google.com. gmail.com mail exchanger = 40 alt4.gmail-smtp-in.l.google.com. gmail.com mail exchanger = 10 alt1.gmail-smtp-in.l.google.com. gmail.com mail exchanger = 30 alt3.gmail-smtp-in.l.google.com.
Authoritative answers can be found from: > set qu=aaaa > gmail-smtp-in.l.google.com. Server: 10.1.1.1 Address: 10.1.1.1#53
Non-authoritative answer: gmail-smtp-in.l.google.com has AAAA address 2607:f8b0:4001:c05::1a
The network I'm on right now (VPN to work) cannot service IPv6 and I cannot connect to the IPv6 IP for that MX host, but I can easily connect to the IPv4 endpoint.
You want pretty much everything but A and AAAA records to use domain names for pointing, so that they’re not tied to a particular version of IP. Keep the IP resolution to the last step only, and let everything else use domain names.
And apparently I'm still doing it wrong, I recently learned I'm supposed to point the MX of the various domains to whatever certificate the mail server will use. I thought the mail server just had to have certs for all the domains it wished to serve. Again, though, it worked and nobody told me otherwise until the topic came up a few weeks ago (a friend of mine is building a mail server). Back when I set the thing up, StartCom was still popular, and while I use LE now, I didn't know I had a reason to change configs to better accommodate transport encryption.
These things tend to -- until they don't (by which time you don't notice).
> ... and nobody told me not to until years later.
Instead of trying to enumerate all of the wrong ways to do things, the RFCs -- the authoritative documents -- will describe the right way to do things (although, in some cases, they do explicitly identify some things one must not do). If an RFC is ambiguous or unclear, that's a deficiency which should be addressed.
--
> And apparently I'm still doing it wrong, I recently learned I'm supposed to point the MX of the various domains to whatever certificate the mail server will use.
In general, the following has worked quite well for a long time:
1. Choose the "one true name" that your mail server will be known as.
foo.example.com
2. Create an A RR for the hostname that points to the IP address of the server. foo.example.com. -> 192.0.2.25
3. Ensure that the PTR RR for the IP address of the server resolves to the chosen name (cf. "forward-confirmed reverse DNS"). 25.2.0.192.in-addr.arpa. -> foo.example.com
4. Configure your MTA to use foo.example.com as its "official" name (in EHLO/HELO greetings, Received: headers, and so on). If you run POP3/IMAP4 daemons on the same host, configure them to also use the same name.5. Ensure that the MX RR for any hosted domains reference the one true name.
6. If you wish to use additional hostnames to refer to this server ("mail.example.com", a "mail" subdomain for each of your hosted customer domains, etc.), create CNAME RRs for them that point to the one true name.
7. Acquire and install a certificate for the one true name of the server ("foo.example.com") AND any other names that the server is known by (i.e., any hostnames from step six) and configure your MTA (and POP3/IMAP4 servers) to use it.
--
A few related points:
Notice the common theme: use the "one true name".
The above steps assume that everything is running on a single host that has a single IP address. If it has multiple IP addresses available, you can "get more creative" and use "multiple true names" (this is almost done for "cosmetic" purposes, however; there are no technical reasons to do so).
I did not mention SPF, DKIM, or DMARC, but you'll want to configure them all - and they should all use the "one true name" of your mail server.
Some mail clients nowadays can make use of the "autoconfig" [0] and/or "autodiscovery" [1] methods, eliminating the need for the end user to manually set up their MUA. Additional RRs will need to be created to support these methods; "autoconfig" will also require a web server and some additional configuration.
Postfix added support for SNI a few years ago (I can't speak to other MTAs). As with HTTPS, this allows using multiple "per-domain" certificates instead of a single certificate with all names. I don't know which, if any, mail clients currently support and, I have no firsthand experience using it. I mention it just in case it may be something you want to look into.
--
[0]: https://developer.mozilla.org/en-US/docs/Mozilla/Thunderbird...
Sorry man but this sounds like a "you" problem. You probably need to fix your mail server or get a new one.
1. Accept that the new standard is that ip addresses should be supported, and write a new rfc document with that change. 2. Encourage people to not support this.
Simply asking all mailservers to support this non-standard feature (or de facto standard) is arguable the worst outcome, because now every mail server implementer is expected to implement the standard + a bunch of institutional knowledge.
Luckily with mail there's a lot of incentive to set things up correctly, because getting parts of it wrong likely results in a higher number of emails going to spam.
I made up the tongue-in-cheek HTTP 397 for this case:
More people relying on this means more servers will have to start supporting this bug and you end up with the 'worst case' again.
Being strict if you can tolerate it is usually the better option.
You can lament that is the case, but it is just the way it is.
I think once upon a time in-addr.arpa. did this, so you could use http://4.3.2.1.in-addr.arpa/ and it'd resolve to 1.2.3.4. But not now.
-- This script is to be run by coLunacyDNS
-- This script takes a query like 10.1.2.3.ip4.invalid. and returns the
-- corresponding IP (e.g. 10.1.2.3 here)
-- Change these IPs to the actual IPs the DNS server will run on
bindIp = "127.0.0.1" -- We bind the server to the IP 127.0.0.1
bindIp6 = "::1" -- Localhost for IPv6
function processQuery(Q) -- Called for every DNS query received
if Q.coQtype == 1 then
local query = Q.coQuery
if query:match("^%d+%.%d+%.%d+%.%d+%.ip4%.invalid%.$") then
local ip = query:gsub("%.ip4%.invalid%.$","")
return {co1Type = "A", co1Data = ip}
end
else
return {co1Type = "notThere"}
end
return {co1Type = "notThere"}
end
One will need coLunacyDNS to run this script: git clone https://github.com/samboy/MaraDNS
cd MaraDNS/deadwood-github/tools/coLunacyDNS
make
sudo cp coLunacyDNS /usr/local/bin
Full documentation for coLunacyDNS is available:https://github.com/samboy/MaraDNS/blob/master/deadwood-githu...
- this service will last forever
- this service won't be acquired by someone else with evil intention and will never lie
Do not use this service. It has the power to steal your traffic.
To summarize:
git clone https://git.sr.ht/~samiam/MaraDNS
cd MaraDNS/deadwood-github/tools/coLunacyDNS
make
sudo cp coLunacyDNS /usr/local/bin
And the script to do the name-to-IP conversion is one of the examples included in the docs:https://github.com/samboy/MaraDNS/blob/master/deadwood-githu...
Only the absence of a matching in-addr.arpa record would “look up” to the IP itself (by failing to look up to a name).
Why not fix Courier? Seems easier than trying to convince others to change how they configure their DNS. Be forgiving in what you accept and disciplined in what you send.
If you don’t follow the standards things might fail. That’s not someone else’s fault, it’s your fault.
"Be liberal in what you accept, and conservative in what you send."
Courier is failing to be liberal in input-handling.
Postel's law is a good rule of thumb if you're writing a JSON library, but not if you're writing anything that has to do with security.
I'm a big fan of Postel's law in the context of UNIX tools, but I think that JSON is exactly the wrong example: JSON parsing is a security/format boundary, and I don't want my JSON (or any other parser) trying to suss structure out of something that's under- or unspecified. That way lies input confusion vulnerabilities.
Storing numbers inside strings can be necessary if you're encountering JavaScript's 2^56 limit on integers, for example.
This is a great example of "paving over bad behavior with worse behavior."
If JSON is specified to only represent numbers that fit within a JavaScript double, then a correct parser must fail on numeric literals that don't fit into that type. It's up to me as a consumer to interpret strings that represent larger numbers.
I've had this exact kind of "helpful" behavior cause potentially exploitable bugs in programs before: a complex system was using more than one JSON parser, and parser Foo would accept numeric inputs that parser Bar would silently fail on (mangling large numbers into garbage). The result was a potential arbitrary read primitive.
It isn't / doesn't make that restriction. For example,
10000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000
is a valid JSON value. Python will decode it to an integer with the equivalent value; JavaScript will decode it to "Infinity", as it exceeds the limits of Number. (Despite nowadays having a bigint type that could represent it.)It is possible to write a JSON parser in JavaScript that would handle decoding large numbers to BigInts. Most people just don't bother, as it's pretty rare to need to go above the 2 * 53 limit of JS's number.
The actual RFC language[1]:
> This specification allows implementations to set limits on the range and precision of numbers accepted. Since software that implements IEEE 754-2008 binary64 (double precision) numbers [IEEE754] is generally available and widely used, good interoperability can be achieved by implementations that expect no more precision or range than these provide, in the sense that implementations will approximate JSON numbers within the expected precision.
Accepting a non-conforming message could easily lead to injection.
In this case, I'd say that an MX record containing an IP address is not a big deal versus an MX pointing to an A record that contains an IP address, so one may consider that it makes sense to favour successful delivery of emails over strict enforcement of the standard and to accept it. That's pretty much what Postel's law is about and why many servers do accept it (though it also makes sense for a server to refuse to be configured that way even if it accepts it externally for robustness).
Postel's law is not an anachronistic concept. This sort of design consideration applies everywhere in the real world.
> Actually, Postel's principle is misstated. I knew Jon personally. He never advocated forcing implementations to accept bogus protocol, and it is a perverson of Jon's legacy to claim otherwise.
> "Be liberal in what you accept" referred to accepting a wide range of valid protocol, as opposed to accepting only the most common form. If you consider the early protocols, such as Telnet and FTP, it was all too easy to create two compliant and non-interoperable implementations due to each implementation choosing a different subset.
-- https://groups.google.com/g/alt.comp.mail.qmail/c/dcwx0Wc7yp...
> This statement is based upon a terrible misunderstand of Postel's robustness principle. I knew Jon Postel. He was quite unhappy with how his robustness principle was abused to cover up non-compliant behavior, and to criticize compliant software.
-- https://groups.google.com/g/comp.mail.pine/c/E5ojND1L4u8/m/i...
https://en.wikipedia.org/wiki/Mark_Crispin
https://tools.ietf.org/html/rfc748
4. Motivation for the option.
Several hosts appear to provide random lossage, such as system
crashes, lost data, incorrectly functioning programs, etc., as part
of their services. These services are often undocumented and are in
general quite confusing to the novice user. A general means is
needed to allow the user to disable these features.Have you considered that after some point you need to accept the de facto protocol as a valid protocol?
If everyone else is using unnamed but extant protocol X, why fight that? What do you gain from it?
But it has obvious downsides. One is that the protocol keeps evolving, because people find novel ways to be non-conforming senders. This means an implementation is never "done". Another is that it becomes so hard to create a new implementation that accounts for all the non-conforming behavior, that the "standard" essentially becomes defined by a few of the big implementations.
It's widely believed these days that postel's law was a mistake.
Then you'll need to be liberal in what you accept.
Because they don't want to be? Because they don't know that they should be? Because they don't know how? Because they think they are but they're mistaken? Because the specification is ambiguous? Any number of reasons.
But you can't control what they do. You can only control what you do.
If you want to send an email to them, you need to be compatible with their email server.
Because they can't send email when they follow the standard?
What are you trying to achieve? Following a standard for the sake of it, or are you actually trying to send email?
And what's the point or use of a standard that people aren't following? What's the point of following such a standard?
What the point is of the standard requiring you to use a name instead of an IP address is a reasonable question but not the same question as whether you should follow the standards.
Note this is a standard made by people who knew what they were doing and it has stood for 35 years. There’s always room for improvement but it would be a bit silly to think you can just handwave it away with arguments you can come up with in a few seconds. There is bound to be a catch.
In this case the catch of course is that there are more address types than IPv4 addresses, so the system requires you to specify what kind of address you are talking about. The mechanism for that is the A record, which only holds IPv4 addresses.
In DNS, there is actually a single record type that should hold a physical address, for each supported protocol address. We have A records for IPv4, and AAAA records for IPv6. Anything else should be a domain name.
Adding both IPv4 and IPv6 support to every other record type would be a waste.
Note: ignoring other protocol addresses above to keep it focused on what is currently is large scale use.
https://tools.ietf.org/html/rfc974 (Page 3)
In general, we expect systems to be forgiving.
It's the author's "fault" they can't send mail to those destinations when others can.
When you see an MX record with the value 1::8, how should you interpret it? Is it a malformed value? Is it an IPv6? Is it some other protocol that you don't know about?
DNS clients shouldn't have to guess. Instead, the MX record should point to a domain name, and the client should look up the corresponding address record for the protocols it knows how to speak (A or AAAA or whatever else will exist).
https://en.wikipedia.org/wiki/No_true_Scotsman
To be precise instead of tautological (which you should be when arguing the pedantic nuances of networking protocols), when you use a word like "physically", you're implying that it has something to do with the "Physical Layer", and that there could not exist another networking protocol in the same universe that DID allow IP addresses in MX records, because it's forbidden by the physical laws of nature, not by the logical laws of networking protocols.
It's literally like using the word "literally" to mean "figuratively". (And I mean "literally" literally, not figuratively.)
Obviously it's not physically impossible, because sometimes people do it, and sometimes it even works.
I will agree that it's unwise and scandalous and logically impossible, just not "physically" impossible, and that a better explanation is needed. That's probably why the first reply to your comment was "Out of curiosity though: why is it like this?"
A networking protocol that operates faster than the speed of light, or sends information backwards in time, could be physically impossible, according to the currently known laws of physics.
Although it would be super cool and convenient if you could specify a "Date:" field in the past or the future to send email at the specified time.
A series of statements needs to be lies in order to qualify for that term, and you totally refused to provide any evidence and failed to prove anything I said was not true, but it was. The fact that Eric S Raymond has provably and publicly said so many many many racists things over the more than three and a half decades that I've personally known him does not make me or WikiQuotes literally quoting a few of them a "Gish Gallop".
https://en.wikiquote.org/wiki/Eric_S._Raymond
Those were all actual ESR quotes, despite your denials and overconfident claims that I was lying and that you could rationalize and explain away them all. Please, in the future, chose your words and heros more carefully, and stick to the facts, instead of making stuff up, and please stop lying and white-knighting in the defense of a virulent racist (and sexist Harvey Weinstein defender) and linking to his personal fundraising page.
Nobody "canceled" you -- quite the opposite: I tried to engage you in a conversation, gave you the facts and citations, asked you to explain yourself, and prove what you claimed, and YOU decided to refuse, despite the fact that you glibly brushed off all his racist statements and wrongly called me a liar by saying "I’m sure all your claims can be either explained as inconsequential or disproven as false" in his defense.
When you lie down with dogs, you get up with fleas.
It's nice that it's the other person's fault. Still doesn't make your mail arrive.
Instead of trying to parse the address and guess what protocol it might be, DNS tries to make that unambiguous: you ask it for the A or AAAA records for a domain name you are interested in, and you know for sure that you are getting an IPv4 or IPv6 address respectively.
The only clean alternative would have been to make an MXMXMXMX record type to hold a domain name OR an IPv6 address.
It isn't "broken".
> I did a quick scan of the Alexa Top 1 Million list. Currently around 0,06 % are affected
Only affects a small minority of mailservers, and even then only 0.06% of domains.
That the interpretation of the MX record is overly pedantic, makes the above statement from the article a wee bit ironic.
Absolutely insane because soon as you change the naked domain IP to point elsewhere, their email stops working.
If an MX RR isn't present, the spec says MTAs are to try to deliver majl to the host that the A RR points at.
If you don't want that, create the appropriate MX RR. If you don't want e-mail for a given domain, create a null record.
Makes sense, unfortunately allows for businesses (generally SMEs) to be relying on very sketchy setups.
Also we have HTTPS everywhere, but DKIM is still not supported by most domains. That is a more serious issue and it also covers this as well.
Technically the CA/B forum hasn't outlawed TLS certificates for IP addresses, and a few live ones exist.
dig myspecialdomainwhatever.com MX
for anyone like me who had to look that up. (And I'm far from competent on DNS matters so please correct if there's a better way)IMHO, no one seems to use IP in DNS record, probably someone just do quick and dirty and forgot config.
Because when putting IP, when you change your server you have to tell all people to update MX records. So you usually see service use mx1 mx2 style domain.
Nowadays, peolple rarel setup mail server and use 3rd solution and they usually alreayd use domain name in their DNS record.
So this advice is for people who run their own server who really should know their stuff already.
Why?
You should recompile Courier!