How to test a mail server from the command line
Posted on Fri 06 January 2017 in linux • 1 min read
As I am currently setting up a new mail server, I had to test the new server manually (As of now, the DNS records are not changed, so mail clients are problematic).
If you want to test plain text ports like standard postfix, go simply with
telnet localhost 25
. If you try this remotely from home (on the public
interface), you will be kicked out by the server, because usually IP-ranges
from ISPs for dynamic allocations are blocked. So use this directly on your
server or from another server. Common things like helo
and ehlo
might work,
but 'sending' mail without authentication should fail, even for adresses the
server is responsible for.
The other part is the SMTP submission, which should be on port 587 for STARTSSL. This service is used by the mail client to send mails, therefore it is usually required to use encryption (test this with telnet and check if auth is allowed). Doing encryption with telnet is not possible, so use openssl for STARTTLS in this case:
openssl s_client -starttls smtp -crlf -connect your.mail.host:587
After that usage is as with the telnet client on port 25, but for sending mail you must authenticate yourself. For plain auth, use
auth plain [user/pass string]
with the user and password string generated with
perl -MMIME::Base64 -e 'print encode_base64("\000user\@mdomain.com\000password");'
Note that @ has to be escaped and the \000
must remain in place.
See for example this Microsoft site for possible SMTP commands: https://technet.microsoft.com/en-us/library/aa996114(v=exchg.65).aspx
References