Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Sending Email by idSMTP from computers with underscore in name
#1
I realized, that an underscore in the computer name effectivly prevents sending of emails with Indy's TIdSMTP, TIdMessage & TIdSSLIOHandlerSocketOpenSSL.

I use Delphi XE3 with latest Indy 10.6.2. and latest SSLs (utUseExplicitTLS & port 587).

TIdLogfile shows this message when the computer name contains an "_":
"501 Syntactically invalid EHLO argument(s)"

I tested this with Windows pro 7 and 10.
Can anybody reproduce this?

When I change the computer name to a string not containing an underscore, mails are sent!

This observation is coherent with another user's problem, described here:
https://github.com/jens-maus/yam/issues/325

Is there a workaround that enables sending IdSMTP mails also from computer names with underscore?
Reply
#2
501 is not an Indy error. This error is coming from the server and most likely a server based problem. From the very link you posted which appears Indy is not involved there at all yet:

" In a short test it seems that the SMTP server of your provider doesn't like the "_" character in your hostname. I'll see how I can change that and what the official RFC says about that. Thanks for the report and the debug log."

It looks like an improperly configured server unless there is an encoding issue for which _ does not require such AFAIK.
Reply
#3
(04-12-2019, 01:45 PM)kudzu Wrote: 501 is not an Indy error. This error is coming from the server and most likely a server based problem. From the very link you posted which appears Indy is not involved there at all yet:

Even though 501 might not be an Indy error, it could well be that Indy behaviour is still effected by such non-standard hostnames, don't you agree?

The link I gave just for reference that the problem exists. I am aware that it does not refer to Indy.

Have you tried to reproduce?
Reply
#4
(04-12-2019, 09:19 AM)Steffen Wrote: TIdLogfile shows this message when the computer name contains an "_":
"501 Syntactically invalid EHLO argument(s)"

The EHLO command accepts only a valid domain host name or an IP address. A computer name is not always a valid host name, and a '_' character is not allowed in the EHLO command in SMTP, per RFC 5321, Section 2.3.5, Domain Names:

Quote:A domain name (or often just a "domain") consists of one or more components, separated by dots if more than one appears. In the case of a top-level domain used by itself in an email address, a single string is used without any dots. This makes the requirement, described in more detail below, that only fully-qualified domain names appear in SMTP transactions on the public Internet, particularly important where top-level domains are involved. These components ("labels" in DNS terminology, RFC 1035 [2]) are restricted for SMTP purposes to consist of a sequence of letters, digits, and hyphens drawn from the ASCII character set [6]. Domain names are used as names of hosts and of other entities in the domain name hierarchy. For example, a domain may refer to an alias (label of a CNAME RR) or the label of Mail eXchanger records to be used to deliver mail instead of representing a host name. See RFC 1035 [2] and Section 5 of this specification.

The domain name, as described in this document and in RFC 1035 [2], is the entire, fully-qualified name (often referred to as an "FQDN"). A domain name that is not in FQDN form is no more than a local alias. Local aliases MUST NOT appear in any SMTP transaction.

Only resolvable, fully-qualified domain names (FQDNs) are permitted when domain names are used in SMTP. In other words, names that can be resolved to MX RRs or address (i.e., A or AAAA) RRs (as discussed in Section 5) are permitted, as are CNAME RRs whose targets can be resolved, in turn, to MX or address RRs. Local nicknames or unqualified names MUST NOT be used. There are two exceptions to the rule requiring FQDNs:

o The domain name given in the EHLO command MUST be either a primary host name (a domain name that resolves to an address RR) or, if the host has no name, an address literal, as described in Section 4.1.3 and discussed further in the EHLO discussion of Section 4.1.4.

o The reserved mailbox name "postmaster" may be used in a RCPT command without domain qualification (see Section 4.1.1.3) and MUST be accepted if so used.

(04-12-2019, 09:19 AM)Steffen Wrote: Is there a workaround that enables sending IdSMTP mails also from computer names with underscore?

Set the TIdSMTP.HeloName property to whatever value you want, such as the result of the Win32 API GetComputerNameEx() function, which can return a (fully-qualified) domain name for the local computer, if one is available.

If no HeloName is provided, Indy defaults to using the computer's current host name (via TIdStack.HostName), and if no host name is available then it uses the computer's OS name (via IndyComputerName()).

Reply
#5
Thank you Remy!!!

It appears to me as if setting TIdSMTP.HeloName
to a valid domain string is extremely important for a reliable functionality of TIdSMTP.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)