> ## Documentation Index
> Fetch the complete documentation index at: https://kb.mochahost.com/llms.txt
> Use this file to discover all available pages before exploring further.

# How to Test Sendmail From Command Line on Linux

> 📘 This content originated from JavaPipe's knowledge base. JavaPipe has now merged with [Mochahost](https://mochahost.com/), providing an improved range of hosting services with added benefits and dependable service quality. Check out the fastest hosting plans here: [Linux Servers](https://mochahost.com/linux-servers)

## What Is Sendmail?

`sendmail` is a very plain and simple MTA (Mail Transfer Agent), which implements the SMTP (Simple Mail Transfer Protocol) amongst others and can be used to transmit emails, typically even on the cheapest KVM VPS running Linux. While there is a commercial version available which is called "Sendmail", the `sendmail` we're covering in this how-to article is the UNIX-based version of it, which comes with pretty much every Linux distribution as well as \*BSD (FreeBSD, OpenBSD and variants). Using the `sendmail` command might be the most easy way to send e-mails via Linux shell CLI (Command Line Interface), apart from mailx, which can be used in conjunction with `sendmail` to make it even easier to send and receive mails from command line. Like the name already suggests, `sendmail` itself can only send emails and not store received ones in POP or IMAP mailboxes.

Where Is Sendmail And Its Configuration Files Located?\
The first interesting information that we might need for testing sendmail is the path of the binary file that gets executed if we issue the command `sendmail` on our command line. To figure that out, we'll use the which command as shown below:

`[root@box ~]# which sendmail
/usr/sbin/sendmail`

The above output means that the full path to our `sendmail` command's binary file is `/usr/sbin/sendmail `which you should note for the steps further below.

If you want to adjust the configuration files of `sendmail`, you can usually find them in the directory `/etc/mail/` on UNIX (FreeBSD, OpenBSD) and Linux (CentOS, Fedora, Debian, Ubuntu) systems. The main configuration file of sendmail is `/etc/mail/sendmail.cf`, however adjusting that is not part of this tutorial. A good place for more information is the manual page of sendmail, that you can view by running the command `man sendmail`. Now to the interesting part of this sendmail command line tutorial.

## How to Test the Sendmail Command On Linux

To quickly test if the `sendmail` command is working correctly to then use it for example in shell scripts, via command line or even from PHP scripts (PHP supports `sendmail` to send emails from PHP scripts - you can set the sendmail path in your php.ini), you can issue the below command on your UNIX or Linux system:

`echo "Subject: sendmail test" | sendmail -v [my@email.com](mailto:my@email.com) [my@email.com](mailto:my@email.com)` is obviously the e-mail address you want the test email to be sent to. This `sendmail` command line example will send a blank email with the subject "sendmail test" to [my@email.com](mailto:my@email.com) if the test is successful. You can also send longer e-mails containing a subject, body and additional headers if you want to, but just to test if sendmail works that's usually not required. Still, here is how you can do that:

1.) Create a file called `mail.txt` (or anything you like) in `~/mail.txt` with vim or nano or your preferred text editor

2.) Paste the following content to it, but of course adjusting the email addresses, as those are just `sendmail` command examples:

`To: [my@email.com](mailto:my@email.com)
Subject: sendmail test two
From: [me@myserver.com](mailto:me@myserver.com)`

And here goes the e-mail body, test test test..\
3.) At last we send the e-mail template we just created with: `sendmail -vt \< ~/mail.txt`

That's it - you can now test `sendmail` from command line and even send full e-mails including headers from Linux/UNIX shell. Below is an example of how the simple `sendmail` test could look like on a live system:

## Sendmail And Spam

One thing I'd like to add is that due to the fact that PHP and other scripts can usually access the `sendmail` binaries, it can also be used to send out spam and phishing mails and that's what can happen on shared servers where accounts were compromised through an outdated CMS or weak passwords. If you want to find out which script or POSIX user is sending the spam with `sendmail`, you can issue the below command and pay close attention to the output:

`ps faux | grep sendmail`

## Sendmail Conclusion

While `sendmail` can pose a few risks on shared or insecure systems, it is a great lightweight MTA that can be used to send e-mails from shell scripts, PHP applications or even directly the command line. It also automatically negotiates STARTTLS for encrypted transmission of the emails if the remote SMTP server supports it, which is a useful security pratice.
