wruza 5 days ago

As a non-email guy, I can tell you that if a system that boils down to having an (optionally certified?) key requires much more than just putting it into a folder with a domain name and running a service, it’s badly designed and has unnecessary complexity. Which will result into abusers having more expertise than legitimate users. The fact that you can “get” DMARC SPF DKIM wrong, while it’s basically a hard requirement for operation, is just screaming something important to the email software.

1
trod1234 5 days ago

As a generalist admin, would you say the same about DBA operations or would you say that's just not my specialty?

The reasoning you provide doesn't differentiate, and speaks more of frustration which naturally comes with any area you aren't steeped in, or knowledgeable about.

wruza 5 days ago

Frustration doesn't come naturally. It comes with shitty software design.

"I don't know" is not a problem, you learn and you know, no frustration.

The problem is "I spent N hours/days on a thing that everyone does and which is a 99.99% of use cases and boils down to just having a keyfile in a proper(?) location and this knowledge doesn't translate effing nowhere".

would you say the same about DBA operations or would you say that's just not my specialty

It depends on the absurdity of the complexity of setting something up, not on operations themselves. Getting some results is absurdly complex -- not naturally complex and not necessarily very complex, just much more complex than the nature of the result itself.

For example, that's how you were supposed to install openvpn before angristan scripts: https://www.digitalocean.com/community/tutorials/how-to-set-... . To save someone a click, it's 50 pages "installation tutorial" with around 50 commands and a dozen of config files. And guess what, it uses "easyrsa" package to "set up RSA PKI easily". So it's not how openvpn meant to be installed, but an "easy" way.

trod1234 5 days ago

You are mistaken. Your reasoning is flawed because the heuristics you use are flawed, and the consequences of the heuristics are the reason you are frustrated.

There are critical tools that you clearly have not learned, and likely were never taught. Tools that have been around since the time of the Greeks.

This is evident in your use of poorly defined language running you indirectly in a circular path (trauma/torture loop).

There is irreducible complexity in software. Domain knowledge is needed to use complex software for purpose.

The script you say makes assumptive choices for you. What will you do now that RSA has practically become broken at small key sizes, and instead you need to use a different algorithm?

Do you know how to transition this without starting from scratch, or have you become corrupted by dependency, on someone who provided that for you that did have that knowledge? Are you helpless to do anything but wait.

If you want to correct the underlying reason for your troubles, I'd suggest going over the associated material covered in a Trivium based curricula.

It will require unlearning bad heuristics and re-learning good heuristics. It requires a lot of effort and constant attention until you've got your thought processes fixed and these provide the basics for rational thought.

You should have been taught these things in school.

Logic (Aristotle), Philosophy (metaphysical objectivity, identity and its requirements), Argumentation, Descartes Method, and Kant with regards to A priori knowledge, reasoning, and argumentation.

Small things with an outsized bigger impact.

If you can't understand what is written in the whitepapers, you have no hope of following the conformant requirements.

Software reduces to practice the requirements of business logic, which is described in those whitepapers.

Sometimes its irreducible, and you have to approximate, and they won't hand this ready-made to people that aren't willing to put the time cost and professional skill needed to do so correctly.

You have to offer tribute, in the form of expertise, and time to benefit from these systems. As you have to do for any other specialized career.

fc417fc802 4 days ago

To summarize. His complaint is common tasks involving commonly used software that are fairly simple but the software remains obtuse for some reason.

Your response is that he ought to read the standards and implement things himself. That the frustration is due to a skill issue, not to deficiencies in the software.

Or do I misunderstand?

I feel like the only thing missing here is the recommendation to do it all in assembler. To "build character" or something.

I suppose that technically you're correct, in the sense that if he were more skilled he likely wouldn't be as frustrated. Such an observation hardly invalidates the complaint about poorly designed software though.

There's nothing wrong with someone who wants to roll their own but most people most of the time want an out of the box solution. It's inevitable given the level of complexity involved in the modern tech stack. Building all of it from scratch by yourself simply isn't realistic.

trod1234 4 days ago

You read that right for the most part except you missed important nuance.

You have to understand the tasks themselves are not and cannot ever be simple because of the adversarial nature imposed by bad actors.

You can point at a small component piece and say that's a simple task, but taken in the full real working context its not at all simple because there were other requirements that were ignored when viewed in isolation that are crucial to continued function in a useful way.

The frustration is due to a skill issue, anyone that could set a system up without issue would, and there would be no frustration if that were the case.

Importantly also, this isn't a software problem, its a problem that cannot ever be completely solved by software. There are problems that computation simply cannot solve directly. This is one of them. Its touched on in Automata theory under the Limits of Computation.

Anytime you have two different underlying states whose structure is identical when examined (a single state that cannot be differentiated) it falls into one of these type of problems. Reputation systems are a form of approximation for hidden state systems used to differentiate in such cases by skewing it so those that those who abuse the system are limited and quarantined, whereas those that don't can use the system. The hidden states are required to make these systems work and retain usefulness.

The alternative is no communication at all because resources a limited, and the SNR doesn't allow differentiation putting that cost on every reader who will stop using such systems because it makes them useless and the cost is unreasonable.

The requirements and cost that result from implementation of the whitepapers requirements keep the systems useful. Not everyone should be running their own server largely because they aren't appropriately qualified to fulfill their responsibilities and obligations in doing so, and as a result of that lack of expertise cause issues for other businesses imposing cost when they are allowed to do so.

The alternative, having no requirements is having no messaging at all. You literally can't have it both ways.

The complexity involved is why Messaging and Email Systems are their own subspecialty within IT.

> Building all of it from scratch by yourself simply isn't realistic

You don't build it all from scratch. You configure the software someone else built from scratch appropriately to meet the implicit requirements to interoperate or you don't, and the consequence of failure is mail doesn't get accepted for those recipients at that provider.

As I said, non-professionals writing tutorials making it seem like this is simple, and people blaming their own ignorance on others; is where all the hardship is coming from.

It isn't simple at all, if it were an average child could do it.

I can tell you from experience, nearly every single postfix stack that I've walked onto the job and seen at a small business, lacked critical functionality in their configuration with only a single exception in a decade. That's thousands of instances that required standing up new infrastructure correctly, and they didn't have issues after that.

In nearly all of those cases a non-professional got hired, lied about their experience, and then set them up for failure and they got what they paid for, but didn't know it at the time.

It could have been set up correctly if the people were qualified, but they weren't and it wasn't, and its an ongoing cost because requirements change over time, when they change you change, or your system stops working.

Things like auditing and logging, rate limiting, alerting, migration, features like list-unsubscribe, and many other requirements... etc.

Most cases, people stop the configuration at the point where an email technically goes out and they call it a day, up until calamity strikes because they didn't pay attention to important things.

There are people who pay for the advice and are told months in advance if you keep doing this you'll wake up one day unexpectedly and find no email can go out, and they don't stop. They have to learn it the hard way.

Imposter syndrome is a thing in the industry, but there are also a lot of imposters pretending to be professionals as well.

fc417fc802 4 days ago

Sure, I won't disagree that there exist plenty of unqualified people doing things wrong while pretending that they know what they're doing. That seems obvious enough in the general sense.

I'll also agree that there are systems which exist that for whatever reason can't realistically be simplified.

However, on what basis do you claim that email - or rather email anti-abuse - qualifies as such?

> The alternative, having no requirements is having no messaging at all. You literally can't have it both ways.

You seem to be implying that the usefulness of the system derives from or otherwise depends on the difficulty of configuring it. However it doesn't seem to me that you've provided evidence of that. On the contrary, isn't the entire point of a reputation system that it avoids such gatekeeping by depending on historical behavior rather than some arbitrary barrier to entry?

I would make my own claim. That there exist software implementations that are far more complex than they realistically need to be, often because the thing being implemented has evolved over time and the resources or motivation or whatever needed to re-engineer and rewrite the implementation aren't available.

I would also claim that sometimes software has shitty UX for no better reason than the person developing it doesn't understand the needs of (some subset of) the people using it.

When configuring a network node to exchange messages in a really quite primitive protocol requires professional expertise to do correctly I'd say that's a clear indication that something is very wrong somewhere in the stack. Where exactly is certainly up for debate but a well behaved entity should not find it difficult to self host such basic functionality.

trod1234 3 days ago

Communication as a whole, not just email. The failures to address this, point to an inherent limitation of the systems we've built for computation. You'll have to revisit automata theory, and have some knowledge of why CPUs are able to do work at the lowest levels of abstraction.

Boiling it down, it comes down to system properties that are preserved, and Von-Neumann Architecture acts as a DFA. Computers act on a single state at any one time, moving only ever one edge on a abstract state graph at each operation.

People generally are considered NFAs that can operate on multiple states and decompose states, and have a wider range of problems in the types of problems we can solve.

This is abstract but the gist is, the computer follows an abstract rail of decisions that is really quite dumb, but necessarily so, and it doesn't halt or runaway except with bugs, because we preserve properties limiting the math to areas where it cannot have the problems except outside the working environment (i.e. power loss, hardware failure etc).

There's a reduction to an abstract algebra system inherent in the architecture by preserving certain properties in the design. You first run across this paradigm in first year EE (Systems and Signals) and a course is available on OCW if you haven't taken that, detailed knowledge is not needed though unless you plan on designing these hardware systems.

Any time you have an underlying state that is both true and false given the same state (the message), and in adversarial environments the property requirements for computation are broken. This can naturally occurs in any communication system, and the hoops we have to jump through that we add on in the form of requirements is defining a way to differentiate that hidden state indirectly by the presence of the requirements which good actors follow more closely than bad actors. This is decomposing the state in structure from an NFA type problem to a series of DFA type problems as I'm sure you might recall from your Compiler Design Courses (if you've taken them), or learned from the Dragon Book.

Any message sent must be sent in an identical structure. Any bad actor will adapt to ensure their messages get sent through flooding and raising the noise floor. Any good actor will adapt in a number of ways sometimes by no longer using a system that doesn't provide benefit. You can only operate on the same state.

If you can only process and interact with the message structure itself. No computation system will ever be able to skew what is sent or received so that only the legitimate messages are sent, and the illegitimate ones aren't. Everything goes through the same point. With everything going through, the noise floor is so high nothing gets through, and communication is the sharing of meaning/signal between two parties, people adapt and abandon the system for systems that work.

The core issue is a fundamental computer science issue.

When a computer hardware system first boots up, the bringup stage in hardware sets up the constraints needed to do work. Ask yourself what about the design of computers today prevents the classic unsolved computer science problems and you'll find this staring back. Halting and Decidability (usually).

There are impossible to solve problems, because we've proven that math is incomplete, which impacts on decideability.

Computers work on specific principles, and when you don't understand or know how those work you can easily jump to magical conclusions that simply do not work or have a basis in reality.

A very simple example of this same problem demonstrates this. You are given two spreadsheets without distinct (unique) names. You have 10,000 rows of employees, and you have a list to deactivate 400 people's accounts in an hour, the list of people to be deactivated is by name. You have a script to do all that's necessary for that for individual accounts given a specific account, but some of those people's names are identical to others, and they are different people. The first match you happen to see is the CEO.

How do you solve this?

If you pass the names to automation blindly, you'll deactivate people's accounts that should not be deactivated and you get fired. If you don't in the time period alotted, your fired. How do you solve this?

The only possible way to solve this given the constraints is you ask for a list that includes a unique identifier for the people that need to be deactivated, and a matching list to work from and then the automation can work.

If you just did it blindly, the computer would do it blindly. It has no way to know otherwise. The function is a deactivation so it would deactivate every item passed to it, ending in... you are fired.

There is no other way that does not result in you being fired. Fuzzy matching doesn't work because without the identifier you know that one of those two or three needs to be deactivated but you don't know which, and getting it wrong ends in you being fired. This type of problem is called decidability.

You get the same types of this subtle problem all over automation in different forms. Like in Linux with ldd's output, which is why it fails silently when passed to any automation. The overloaded null state means two different things, and its undecidable when it flattens, and if you examine it carefully it breaks regular expressions. Why? That property isn't preserved.

You are used to dealing with the top of the stack where these properties are preserved, unless you or others break them with a bug.

wruza 4 days ago

You’re just arrogant here imo, and I regret the time spent on elaborating. Your comment is straight from the 25 years ago when it was normal to read toxic lectures to lame noobs on forums and create software that has no last mile connection to reality. I’m glad that that era is long over except for a few remnants. Have a regular day.

trod1234 4 days ago

You have willfully blinded yourself to opportunities that if taken to heart could have prevented yourself a world of suffering.

You mistake the environment you are in, and where it is going, which will threaten your ability to survive at some point as you are helplessly dependent on an environment that will cease to exist in the near future.

This was neither toxic, nor arrogant, just the facts and advice provided in good will and faith, something that is vanishing along with tolerance, and those facts should frighten you because they have detrimental outcomes as a consequence for you.

You didn't want to hear it because of indoctrination, and an inability to to comprehend. As a result, you have only yourself to blame for the choices you've made and what predictably comes next. Struggle and frustration.

Those that can't help themselves won't be helped by others. Those that cannot learn and adapt doom themselves by their own choices. Darwin's fitness.

A time is coming where the blind in their unpredictable and crazy behavior may be given a final mercy that can't be taken back, for the good of all because these people are a detriment to all if left alone. Historically, this is well known and it wasn't until modern times that we had the resources to care for such illness in seeming perpetuity.

Until things change, you've made it clear the only path for you is to struggle on needlessly, without any help, and let it distort you in a spiral of madness until you succumb to your self-fulfilling prophecy and break moreso than you already have.

Slapping goodwill and advice down falsely believing its toxic, when in fact its just unpleasant/harsh truths you weren't strong enough or willing to face speaks greatly to the character and outcomes you will face.

There are people who happen to know more than you do, about a great many things; because you were given a poor foundation purposefully. Its not arrogance to want to give people the opportunities that an education they should have been given as a child provides. The alternative is delusional adult children running amok destroying the pillars of their own survival.

You tread forward down the path those malevolent people laid for you, deceived, and never straying; biting any hand that offers help. Its sad because its preventable and needless.

I'll pray you revisit this when you get tired of the madness you put yourself through.