Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> isn't a valid excuse to reject a client either.

Yes it absolutely is: https://www.rfc-editor.org/rfc/rfc2119 is quite clear.

    3. SHOULD   This word, or the adjective "RECOMMENDED", mean that there
       may exist valid reasons in particular circumstances to ignore a
       particular item, but the full implications must be understood and
       carefully weighed before choosing a different course.
If the client SHOULD do something and doesn't, and your server does not know why, you SHOULD disconnect and move on.

If the server has considered fully the implications of not having a Message-ID header, then it MAY continue processing.

In general, you will find most of the Internet specifications are labelled MUST if they are required for the protocol's own state-processing (i.e. as documented), while specifications are labelled SHOULD if they are required for application state-processing in some circumstances (i.e. other users of the protocol).



> If the client SHOULD do something and doesn't, and your server does not know why, you SHOULD disconnect and move on.

That is not a rule.

In this situation the server can reject any message if it wants to, and not doing a SHOULD tests the server's patience, but it's still ultimately in the "server wanted to" category, not the "RFC was violated" category.


[flagged]


You are confused about what I'm doing. I'm not telling anyone what to do. I'm saying what category their actions fall into.

And the line of yours I quoted is still not supported by anything.


> You are confused about what I'm doing.

Absolutely.

And if you're not confused by what I said, that's not obvious in the slightest.

> I'm not telling anyone what to do.

So you say.

> I'm saying what category their actions fall into.

I think that's pretty weird that you think you get to decide that all by yourself.

But I'm not playing, because you're right: I don't know why you would be doing that.

> And the line of yours I quoted is still not supported by anything.

Yes it is. It's a description of the behaviour of other Internet hosts, and it's a description of exactly what is happening in the linked article.


> But I'm not playing, because you're right: I don't know why you would be doing that.

This is the comment you originally replied to:

>> If you're implementing a server, "the client SHOULD but didn't" isn't a valid excuse to reject a client either.

>> You can do it anyway, you might even have good reasons for it, but then you sure don't get to point at the RFC and call the client broken.

They're talking about how to categorize actions, just like I am.

So I thought you were playing on that same topic.

But if you weren't on that topic, and given that you quoted only the first one of those sentences, I have a guess.

I think you didn't realize how the second sentence affects the meaning of the first one, and you misunderstood what they were saying as trying to tell servers they can't reject. They were not trying to tell servers they can't reject.

If that's the case, then this whole line of conversation is pointless, because you were rebutting an argument that nobody made.

> It's a description of the behaviour of other Internet hosts, and it's a description of exactly what is happening in the linked article.

Taking a description of behavior and throwing an RFC-style "SHOULD" in front is only going to be correct if you get lucky. "is" and "SHOULD" are different things!


That clearly means it’s not required.

How does Google know whether or not the sender has a valid reason? They cannot know that so for them to reject an email for it means they would reject emails that have valid reasons as well.


How would the sender know the consequences of sending without the header? You shouldn’t assume anything here. As a sender, you should include it unless you’ve already worked out what the recipient is expecting or how it will be handled. Doing this with email is silly because the client is sennding to so many different servers they know nothing about so it’s basically a requirement to include it.


> That clearly means it’s not required.

You and I have different definitions of "clearly"

It is not required for the protocol of one SMTP client sending one message to one SMTP server, but it is required for many Internet Mail applications to function properly.

This one for example, is where if you want to send an email to some sites, you are going to need a Message-ID, so you SHOULD add one if you're the originating mail site.

> How does Google know whether or not the sender has a valid reason?

If the Sender has a valid reason, they would have responded to the RFC (Request For Comments) telling implementers what they SHOULD do, rather than do their own thing and hope for the best!

Google knows the meaning of the word SHOULD.

> it means they would reject emails that have valid reasons as well.

No shit! They reject spam for example. And there's more than a few RFC's about that. Here's one about spam that specifically talks about using Message-ID:

https://datatracker.ietf.org/doc/html/rfc2635


> If the server has considered fully the implications

The server "considers" nothing. The considerations are for the human implementers to make when building their software. And they can never presume to know why the software on the other side is working a certain way. Only that the RFC didn't make something mandatory.

The rejection isn't to be compliant with the RFC, it's a choice made by the server implementers.


Either the server must explicitly confirm to servers or the clients must accept everything. Otherwise message delivery is not guaranteed. In the context of an email protocol, this often is a silent failure which causes real-world problems.

I don’t care what the protocol rfc says, the client arbitrarily rejecting an email from the server for some missing unimportant header (for deduction detection?) is silly.


If it was unimportant it would be MAY.


Is the server somehow unable to inject an ID if the sender did not send one? Stop hiding behind policy and think for yourself.


> Is the server somehow unable to inject an ID if the sender did not send one?

Yes. https://www.rfc-editor.org/rfc/rfc2821#section-6.3 refers to servers that do this and says very clearly:

    These changes MUST NOT be applied by an SMTP server that
       provides an intermediate relay function.
That's Google in this situation.

> Stop hiding behind policy and think for yourself.

Sometimes you should think for yourself, but sometimes, and friend let me tell you this is one of those times, you should take some time to read all of the things that other people have thought about a subject, especially when that subject is as big and old as email.

There is no good reason viva couldn't make a Message-ID, but there's a good reason to believe they can't handle delivery status notifications, and if they can't do that, they are causing bigger problems than just this.


You want me to think for myself when writing an email server that interoperates with other email servers? Are you just clueless?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: