Troubleshooting Guide for Sending SMTP Email
- Connection settings
- Connection refused errors
- Authentication errors
- SSL errors
- SMTP responses and errors
- Scrambled HTML messages
Connection refused errors
Errors such as connection refused or cannot connect to remote host are usually related to an ISP blocking traffic on port 25. Port 25 blocking is often the default for many ISPs.
Port 25 networking can be tested using telnet. Telnet is readily available on Linux, Mac, and Windows.
To test your connection, begin by opening a command line terminal. At the command prompt type telent ssrs.reachmail.net 25. If you see a message like 220 ssrs.reachmail.net easysmtp 2.1.2 b35eab8573 you’ve successfully connected. Type ‘quit’ and telnet will terminated the connection.
netbsd13$ telnet ssrs.reachmail.net 25 Trying 22.214.171.124... Connected to ssrs.reachmail.net. Escape character is '^]'. 220 ssrs.reachmail.net easysmtp 2.1.2 b35eab8573 quit 221 bye Connection closed by foreign host.
If the connection did not complete or a connection refused error was received, it’s likely that your ISP is blocking traffic on port 25. You may use the alternative SMTP service on port 587 or the SMTPS service on port 465 or contact your ISP for information on activating port 25 networking.
Failed authentication will return error code 535 along with a brief explanation of the problem. Further details on the explanations are found below.
TrialExpired – Trial account has expired, please contact email@example.com for assistance.
TooManyFailedLoginAttempts – 3 consecutive login attempts have failed, try again in 20 minutes.
AccountDisabled – Account has been deactivated, contact firstname.lastname@example.org for more information.
InvalidUsernameOrPassword – Invalid user or password was submitted.
BadAUTHEncoding – The base64 encoding of the authorization parameters could not be decoded. Check to make sure your account key, username and password are correct. Note that the username submitted to Easy-SMTP is your account key and username joined with a backslash, e.g. ACME\admin
UnspecifiedError – Please contact email@example.com for assistance
AccountBlocked – Account has been blocked, contact firstname.lastname@example.org
OverSendingLimit – Account has exceeded the monthly sending limit. Contact email@example.com to upgrade or defer all mails until midnight on the first of the next month.
NoValidPayment – A credit card must be entered to secure the account. Login to the account dashboard at https://go.reachmail.net to submit a credit card.
NoComplianceData – All accounts must have CAN-SPAM compliance address data. Login to the account dashboard at https://go.reachmail.net and go to Account > Addresses.
UserBlocked – The authenticated use is blocked from sending.
Bad authorization encoding
The BadAUTHEncoding error is often the result of an incorreclty formed username. Your Easy-SMTP username is is your account key and user name joined with a backslash, e.g. ACME\admin. Note that depending on how your programming language or MTA deals with special charachters in authorization strings, you may need to add a second backslash, e.g. ACME\\admin. Additionally, depending on your environment you may also need to escape special characters in your password with a backslash, though this is less likely.
Invalid authentication method
Using an unsppported authentication method will result in a 535 error, e.g. using CRAM-MD5 will return 535 error: invalid auth method CRAM-MD5. The supported authentication methods are PLAIN and LOGIN. Most programming languages will use PLAIN while MTAs may attempt a preferred method and fallback to others.
Make sure that your connecting client supports PLAIN or LOGIN methods, you may need to change the preferred method in your MTA config or enable the PLAIN or LOGIN methods if they’re not supported by default.
501 syntax errors
If a 501 sytax error is received Easy-SMTP can’t understand the command as received, please contact firstname.lastname@example.org for further assistance.
Using IP authentication
If your client doesn’t support SMTP authentication, you may choose to setup IP based authentication. Doing so will treat all connections coming from your IP as authenticating to your account. Keep in mind that you will be responsible for all messages sent through your account so this is not the best option for shared resources.
To setup IP authentication, login to your account dashboard at https://go.reachmail.net and click the ‘Edit’ button in the Account Settings section. In the pop-up, enter your public IP address in the IP address field and click Save. Allow 5 minutes for the access control lists to update and attempt to connect again.
With the exception of connections authenticated by IP which do not transmit a password all connections are required to use SSL. Connections on port 25 will need to issue the STARTTLS command before sending the AUTH command, connections to port 465 should be prepared to secure the connection immediately. SSL version 3 and TLS version 1 are supported, SSLv2 is not supported.
If your system or connection client does not support SSL the only connection option is to use IP authentication over port 25. See the Using IP Authentication section in this document.
SSL is best tested using the openssl client. Openssl is readily available for Mac and Linux.
To test Easy-SMTP SMTPS
openssl s_client -connect ssrs.reachmail.net:465 -crlf -no_ssl2
To test Easy-SMTP STARTTLS
openssl s_client -connect ssrs.reachmail.net:25 -crlf -no_ssl2 -starttls smtp
If successful, those commands should yield an open connection under a banner like 220 ssrs.reachmail.net easysmtp 2.1.2 b35eab8573
If openssl connects without issue but your connection client is still failing with a trust error, e.g. cannot verify issuing authority, try one of the following:
Adjust the verification depth
Update the CA packs used by your client
Turn off verification
If openssl cannot connect, try adding the -debug option to get more information and contact email@example.com for additional assistance.
SMTP responses and errors
Easy-SMTP will respond to commands using standard SMTP response ranges including:
2xx – Command accepted
4xx – Temporary error
5xx – Permanent error
55x – Permanent error, terminates connection
Special Easy-SMTP errors
In addition to the standard SMTP errors, Easy-SMTP may respond to a command with one of the following.
421 error: too many errors
Too many invalid commands were received, to free up resources, the current connection has been terminated.
451 error: Message rate limit exceeded
Messages are limited to 25 per-connection, exceeding this rate will result in this error. Note that if you’re using a MTA this is will likely be interpreted as a temporary deferral and the message will be tried again at a later time.
451 error: Monthly message limit reached
If you are using the Easy-SMTP free account plan, a limit of 10,000 messages per month is imposed on your account. This counter is reset at midnight on the first of the month. Note that if you are using a MTA this error will be interpreted as a temporary deferral and depending on the MTA’s message timeout value these messages may be sent after the volume counter resets. This error will not occur for paid accounts.
451 error: RCPT limit reached
Each message is limited to 100 recipients, i.e. 100 RCPT commands. Using the RSET command will clear the counter.
554 <ip address> please wait for acl update
Only for accounts using IP authentication. This error indicates a connection made before the IP access control lists have been updated. Please try again in 5 minutes
554 <authorization error>
Only for accounts using IP authentication. This error indicates that some authorization condition is preventing your account from authenticating. The authorization error string will match one of the authentication errors defined elsewhere in this document, e.g. 554 OverSendingLimit.
554 transaction failed
This is an exceptional error, please contact firstname.lastname@example.org for assistance.
Scrambled HTML messages
Are your HTML messages coming out jumbled? You may be missing the Content-Type header.
By default, Easy-SMTP will treat all incoming messages a plain text unless HTML is specified in the Content-Type header. If you are sending HTML messages but are seeing the HTML code in the message body when viewing the message in a mail user agent, your sending mechanism is likely omitting the Content-Type header.
To correct the problem, insert Content-Type: text/html in the message headers.
Subject: New forum posting Content-Type: text/html