Dilyan Palauzov wrote:
> Does anybody see any disadvantages of ending the session
> EHLO server.example.com
> 250 OK server.example.org
> MAIL FROM:<spammer(_at_)example(_dot_)com>
> 250 OK
> RCPT TO:<spamtrap(_at_)example(_dot_)org>
> 250 OK
> RCPT TO:<mailing-list(_at_)example(_dot_)org>
> 250 OK
> 354 OK
> That is all.
> 550 Mail rejected by mailing-list(_at_)example(_dot_)org
> which implies, that the mail was accepted by all but
Sure, it changes all kinds of ideas about delivery success, status, etc.
Keep in mind that SMTP servers do not read the "Literal" part, just the
response codes to have any real meaning. The literal is just for
LOGGING. It has NO (expected) AUTOMATION concept behind it
550 means the Transaction was permanently rejected and as far as the
SMTP server is concern, none of the recipients are going to be receiving
Whatever you really do on your own end, thats your business, but its not
a standard expectation and we can't be working on this basis. A 550 at
DATA means none of the RCPT users are expectd to be receiving the mail
and as far as the SENDER is concern it was a FAILED DELIVERY attempt.
If you want to REJECT a recipient but continue with others, then you
should be using a 45x for the RCPT:
250 OK server.example.org
45x or 55x Sorry User doesn't exit
Do not assume the client is going to stop at the first 45x or 55x
response. He MAY continue with the next RCPT. If a 55x was used, the
specs simply says not to try again with the same information. If the
clients want to stop, thats up it want it trying to send. If the RCPT
list is exhausted, it might stop. But if it got atleast 1 250 for RCPT,
it may continue to DATA.
> How many evelopes I receive do have more than one recipient? Well,
> except the spam almost nothing. But imagine a mailing list that
> has 1000 subcribers. 10 mails for sure will go for the same domain,
> so for that 10 subscribers giving a temporary error after the
> second RCPT would lead to huge delays (<=> grey listing).
If you are greylisting, in my opinion, it needs to be for the ENTIRE
transaction, not just individuals. I doubt it will work right and again
your end can do what it wants, but you won't be able to change the
SENDER behavior who is designed to work with a standard expected
behavior. If you send a 45x at the DATA, then the entire transaction
MAY be tried again. A 55x will not be tried again - period.
However, if you do it at the RCPT, you **MIGHT** get a sender to filter
its RCPT in future transactions.
Hector Santos, CTO