@cwebber Indeed! I have several issues with datacenters.
First, using large amounts of water for cooling is NOT required. Evaporative cooling is NOT required. The fact that every so-called journalist writes about datacenter projects without calling out the megacorps who simply don’t want to pay for non-evaporative cooling just makes things worse.
I have servers colocated in three different datacenters in three different US states. None use evaporative cooling. For years I had a quarter rack in a datacenter in Phoenix, Arizona, also without evaporative cooling. In Phoenix!
Sure, people who like to make excuses for megacorps will say that high density compute like what AI companies want to build can’t be cooled without evaporation, but that’s simply not true. It can be done, but it costs much more, and AI companies don’t care about 10+ year ROI.
The articles that don’t point out that all of these projects are bribing - er, negotiating cheaper power and water from municipal sources that are driving residential prices higher are doing everyone a disservice.
All of this is one of many failings of capitalism. When a single corporate entity can demand so much of a service’s output that it can adversely shape the costs of basic, required services, there’s something wrong. The fact that there’s no governmental protections from this kind of abuse is highly problematic.
It sure would be nice if journalists pointed out that the results of megadatacenters aren’t inevitable, but chosen based on how much hurt can be pushed on to everyone else.
@slyecho@cwebber Do you have some examples and numbers to share?
Also, it’s not “outrage” to not want your local municipal water prices to go up, for your water quality to go down, for your aquifiers to run dry and/or for your area to run out of water, or anyone else’s. Saying that someone else is doing something worse so that doing something bad isn’t as bad isn’t really a persuasive argument.
@ryanc My guess is Google’s nameservers caching incorrect DNS for much, much longer than the published TTL. That, at least, is what I’ve been dealing with.
@dalias Ages ago, I twisted my brain enough to learn Sendmail rules and came up with two HELO / EHLO checks: one which requires that the HELO / EHLO name resolves to the connecting IP(v6), and that the PTR for that address also resolves to the same address, and one that’s not as aggressive and just makes sure that the HELO / EHLO name resolves in DNS.
Checking that the PTR name resolves to the same address as the PTR is beyond Microsoft. I think they’re not allowed to have O’Reilly animal books. They really take “not invented here” seriously, and considering they haven’t invented shit, nothing of theirs works properly.
LOCAL_RULESETS
Scheck_mail
Kcheckdns dns -R A
Kcheckv6 dns -R AAAA
Kcheckptr dns -R PTR
FH /etc/mail/access
# require_dns.m4, 9-November-2003, John Klos (jklos@netbsd.org)
# Updated 6-January-2007
# Checks that HELO IP literal matches connecting machine, and
# checks that HELO domain name resolves (but not necessarily back
# to the connecting server), and that it isn't our name.
# This HELO checking is what should be done, anyway; syntactically
# invalid HELOs are allowed to be rejected. Checking whether a
# HELO hostname resolves is my lazy way of checking the syntax.
# localhost (real address, not HELO localhost) is always Ok.
R$* $: $&{client_addr}
R127.0.0.1 $@
RIPv6:::1 $@
RIPv6:0:0:0:0:0:0:0:1 $@
# Skip checking if connection is authenticated
R$* $: <$&{auth_type}>
R<PLAIN> $@
# Reject addresses with no / broken reverse DNS
R$* $: < $&{client_resolve} >
R<TEMP> $#TEMP $@ 4.4.0 $: "450 Relaying temporarily denied. Cannot resolve PTR record for " $&{client_addr}
R<FORGED> $#error $@ 5.7.1 $: "550 Relaying denied. PTR likely forged " $&{client_name}
R<FAIL> $#error $@ 5.7.1 $: "550 Relaying denied. PTR lookup failed " $&{client_name}
# Reject our own names. Anything that's in /etc/mail/access or
# /etc/mail/local-host-names should not match any HELO name.
R$* $: $&s
Rlocalhost $#error $@ 5.1.8 $: "550 Access denied. You are not obviously not localhost."
R$=w $#error $@ 5.1.8 $: "550 Access denied. You are not "$&s"."
R$=H $#error $@ 5.1.8 $: "550 Access denied (access file). You are not "$&s"."
# Reject common domain names which all use proper HELO strings.
Ryahoo.com $#error $@ 5.1.8 $: "550 Access denied. You are not "$&s"."
Rjuno.com $#error $@ 5.1.8 $: "550 Access denied. You are not "$&s"."
Rgoogle.com $#error $@ 5.1.8 $: "550 Access denied. You are not "$&s"."
Routlook.com $#error $@ 5.1.8 $: "550 Access denied. You are not "$&s"."
Rhotmail.com $#error $@ 5.1.8 $: "550 Access denied. You are not "$&s"."
Rmsn.com $#error $@ 5.1.8 $: "550 Access denied. You are not "$&s"."
# This test checks if the HELO string either matches or is the last part of
# the PTR record for services such as Hotmail and Gmail.
R$* $: <$&{client_name}> <$&{client_resolve}>
R<$*$&s> <OK> $@
# Skip checking if connection is authenticated
R$* $: <$&{auth_type}>
R<PLAIN> $@
# These rules assume that all will be OK if:
# HELO [IP address] matches [{client_addr}] or
# HELO [IPv6:IPv6 address] matches [{client_addr}]
# Or, if neither of the above, that the HELO string must be a FQDN (primary
# host name) as per the RFCs and therefore should resolve. Non-matching
# [IP address] or [IPv6:IPv6 address] do not resolve as FQDN and fail below.
R$* $: $&s
R [$&{client_addr}] $@
# Stick the connecting IP address into the workspace; if it's an IPv6 address,
# replace it with the IPv6 address of the AAAA HELO lookup. If it matches
# the connecting IP, it's Ok.
R$* $: $&{client_addr}
RIPv6:$+ $: <$( checkv6 $&s $: FAIL $)>V6
R<$&{client_addr}>V6 $@
# Stick the IP address of the A HELO lookup into the workspace. Fail
# if the lookup fails.
R$* $: <$( checkdns $&s $: FAIL $)>V4
R<FAIL>V4 $#error $@ 4.1.8 $: "550 Access denied. HELO does not resolve. (HELO " $&s ")"
R<$&{client_addr}>V4 $@
@dalias 2a01:111:f403:c105:0:0:0:1 would be non-canonical, and 2a01:111:f403:c105::1 would be after canonicalization. Or the other way around. Point is, they need to be consistent to properly compare.
I’ll have to take some time soon to look up new (to me) Sendmail macros!
@dalias Outlook is all over the place. Some names give a single IPv4 and a single IPv6. Some give several of one or the other, or several of each. Some give proper answers.
What EHLO errors are you specifically making overrides for, if I may ask?
Like the world needs another corporate Linux distro...
I even wrote a quick letter to Julian Andres Klode, requesting that he not be so dismissive of others' work, and he just replied with stupid justifications showing that he didn't understand the rather simple request or intentionally ignored it.
@bert_hubert@whitequark I never thought that there should be a requirement for HELO / EHLO to match reverse DNS, although it's nice and should be done, if possible.
OTOH, one of my checks on my non-primary MX is to block all email coming from IP addresses that have reverse DNS PTRs that either don't resolve or that don't resolve back to the corresponding IP.
I'm much more ready to block on non-primary MX because spammers still try to deliver to them even when there's no issue connecting to the primary MX.
So your HELO / EHLO isn't what you'd prefer, but I take it at least it resolves back to the IP address the connection is from?
Lack of obscure/legacy things is immaturity only if you assume having them is a goal, but Rust prioritized other things
You illustrate the problem perfectly here: thinking that it’s either / or is a broken way of thinking.
Even if it were the case that prioritizing certain things precludes others (which it most certainly isn’t, unless you’re doing things incorrectly), this is precisely why Rust is inappropriate for universal adoption.
If a certain corporate led group gets to decide what is “obscure/legacy”, then people either have to maintain their own forks of Rust, or we just have to blindly accept that things that aren’t popular enough or that don’t get enough attention by corporations will be deemed, “obscure/legacy”.
@kornel@chainq This is bad for the planet. We should make good use of our computing resources and not intentionally landfill them. m68k is an example of how we can maintain support for non-mainstream if we want, yet people who know nothing about m68k would love to kill it for emotional reasons. We don’t need this at all. We’re already seeing this with Debian and i386.
So when people want to lump things in to an “obscure/legacy” category and suggest that the problem isn’t Rust, that just means you’re cheerleading for reducing sustainability.