One good trick to use when testing your email server is to use telnet. To send email, you can just telnet into the destination email server directly:
u-1@srv-1 u-1 $ telnet yourmailserver.com 25 Trying 18.104.22.168... Connected to yourmailserver.com. Escape character is '^]'. 220 mx.yourmailserver.com ESMTP Sendmail 8.12.9/8.12.9; Thu, 12 Jun 2003 10:06:19 -0700 helo frommail.com 250 main.signalq.com Hello [22.214.171.124], pleased to meet you mail from: email@example.com 250 2.1.0 firstname.lastname@example.org... Sender ok rcpt to: email@example.com 250 2.1.5 firstname.lastname@example.org... Recipient ok data 354 Enter mail, end with "." on a line by itself Subject: test message this is a test . 250 2.0.0 h5CH6GVI015806 Message accepted for delivery quit 221 2.0.0 mx.yourmailserver.com closing connection Connection closed by foreign host. u-1@srv-1 u-1 $
The headers show up:
Return-Path: email@example.com> Received: from frommail.com ([126.96.36.199]) by mx.yourmailserver.com (8.12.9/8.12.9) with SMTP id h5CH6GVI015806 for firstname.lastname@example.org; Thu, 12 Jun 2003 10:07:31 -0700 Date: Thu, 12 Jun 2003 10:06:19 -0700 From: email@example.com Message-Id: <200306121707.h5CH6GVI015806@mx.yourmailserver.com> Subject: test message
Notice that the SMTP id, the Received: from IP, and the Message-Id have info added by the mail server.
The rest cannot be relied on as far as determining the validity of the email, because this was entered by us, and is not verified.
Some mail servers check for valid domain names, and some can be configured to do a reverse lookup on the IP source.
To test your mail server for relaying, enter an email address on the rcpt to: line for a different domain that the server should not relay for.