On Monday 2 September 2019 16:38:46 CEST, John Levine wrote:
On Mon, 2 Sep 2019, Arnt Gulbrandsen wrote:
... Look at the python smtp client module. It does EAI and has a new SMTPNotSupportedError which is thrown if you send an EAI message and the server at the other end doesn't advertise SMTPUTF8. ...
I looked, and SMTPNotSupportedError isn't EAI-specific. Adding EAI support to a python app doesn't require it, because it was already required.
EAI raises that error in routines that never raised it before. I'd say that's an API change.
SMTPNotSupportedException is a subclass of SMTPException, which is raised for any SMTP-related. The method your have in mind has always raised SMTPException if the server refuses to relay to a given recipient. Old code that handles SMTPException gets SMTPNotSupportedException for free, it's just that it'll handle the proplem generically, not specifically, so it may report "remote server won't relay to ∀@example.org" when the actual problem is that the server has no SMTPUTF8 support.
I looked at it too, and if an application does nothing, it silently gets EAI support.
I looked at it, and if you don't say enable_SMTPUTF8=True it doesn't advertise SMTPUTF8 and you don't get EAI support. Look again.
https://aiosmtpd.readthedocs.io/en/latest/aiosmtpd/docs/controller.html#enab... The first sentence is the key. ("SMTP" is a legacy class, the recommended way is Controller nowadays.) I checked the actual code, and it matches the documentation. I love the wording BTW: "It’s very common to want to enable the SMTPUTF8 ESMTP option, therefore this is the default". Way to go.
Well, yeah but they don't get EAI support either if they don't set the utf8 option. IF you want EAI you have to change the client.
I'm not saying any of these changes are a big deal, but they're more than zero.
And I'm saying that if an application doesn't do any of them, then EAI has a nontrivial chance of working anyway. After a fashion. So the survey needs to take a position on software that contains no source-code-visible changes but may support EAI addresses anyway. How to find, how to classify. Whether to include. What to do about software that's intended to support EAI but contains no source-code-visible changes. Arnt