An alternative lightweight MTA that also handles local mail is AUR.AUR, available in the
is in the extra repository.
# pacman -S msmtp
The following is an example of a msmtp configuration file for several accounts. If msmtp throws errors when using this file, search for double byte '\xc2\xa0' characters that may have been erroneously inserted.
# Accounts will inherit settings from this section defaults auth on tls on tls_trust_file /usr/share/ca-certificates/mozilla/Thawte_Premium_Server_CA.crt # A first gmail address account gmail host smtp.gmail.com port 587 from firstname.lastname@example.org user email@example.com password password # A second gmail address account gmail2 : gmail from firstname.lastname@example.org user email@example.com password password2 # It looks like Google's in the process of becoming its own certificate # authority. For some users, they seem to have switched to a "Google # Certificate Authority" certificate, which is rooted in Equifax. #tls_trust_file /usr/share/ca-certificates/mozilla/Equifax_Secure_CA.crt # A freemail service account freemail host smtp.freemail.example from firstname.lastname@example.org user joe.smith password secret # A provider's service account provider host smtp.provider.example # Set a default account account default : gmail
msmtp will refuse to start if user configuration file is readable and writeable to anyone else but the owner:
$ chmod 600 ~/.msmtprc
This does not apply to system configuration file (in Arch, this is /etc/msmtprc; copy the example over from /usr/share/doc/msmtp/ ).
If your application uses "mail" (mailx) to send mail (e.g. smartd), specify msmtp:
-a flag specifies the account to use as sender;
<username>@domain.com is the recipient.
Save (with the addresses you want to use)
To: <username>@domain.com From: email@example.com Subject: A test Yadda, yadda, yadda.
as, say, "test.mail".
$ cat test.mail | msmtp -a default <username>@domain.com
Do not merely use "echo 'Yadda, yadda, yadda.'" instead of "cat test.mail". This causes at least Gmail and Yahoo to deliver the mail incorrectly.
Practical password management
password directive may be omitted. In that case, if the account in question has
auth set to a legitimate value other than
off, invoking msmtp from an interactive shell will ask for the password before sending mail. msmtp will not prompt if it has been called by another type of application, such as Mutt.
If this is not desired, an alternative is to place passwords in
~/.netrc, a file that can act as a common pool for msmtp, OfflineIMAP, and associated tools.
Using msmtp offline
Although msmtp is great, it requires that you be online to use it. This isn't ideal for people on laptops with intermittent connections to the Internet or dialup users. Several scripts have been written to remedy this fact, collectively called msmtpqueue.
The scripts can be downloaded from SourceForge, the most recent of which is msmtpqueue-0.5.tar.gz.
Once the scripts have been downloaded extract them using:
$ tar xf msmtpqueue-0.5.tar.gz
After that, copy the scripts to a convenient location on your computer (
/usr/local/bin is a good choice):
$ cp msmtpqueue-0.5/*.sh /usr/local/bin/
Finally, change your MUA to use msmtp-enqueue.sh instead of msmtp when sending e-mail. Queued messages will be stored in
When you want to send any mail that you've created and queued up run:
/usr/local/bin to your PATH can save you some keystrokes if you're doing it manually. The README file that comes with the scripts has some handy information, reading it is recommended.
Vim syntax highlighting
The msmtp source distribution includes a
msmtprc highlighting script for Vim. Install it from
Send mail with PHP using msmtp
Look for sendmail_path option in your
php.ini and edit like this:
sendmail_path = "/usr/bin/msmtp -C /path/to/your/config -t"
Note that you can not use a user configuration file (ie: one under ~/) if you plan on using msmtp as a sendmail replacement with php or something similar. In that case just create /etc/msmtprc, and remove your user configuration (or not if you plan on using it for something else). Also make sure it's readable by whatever you're using it with (php, django, etc...)
From the msmtp manual: Accounts defined in the user configuration file override accounts from the system configuration file. The user configuration file must have no more permissions than user read/write
So it's impossible to have a conf file under ~/ and have it still be readable by the php user.
To test it place this file in your php enabled server or using php-cli.
<?php mail("firstname.lastname@example.org", "Test email from PHP", "msmtp as sendmail for PHP"); ?>
Issues with TLS
If you see the following message:
msmtp: TLS certificate verification failed: the certificate hasn't got a known issuer
it probably means your tls_trust_file is not right.
Just follow the fine manual. It explains you how to find out the server certificate issuer of a given smtp server. Then you can explore the
/usr/share/ca-certificates/ directory to find out if by any chance, the certificate you need is there. If not, you will have to get the certificate on your own.
If you are trying to send mail through GMail and are receiving this error, have a look at this thread or just use the second GMail example above.
If you are completely desperate, but are 100% sure you are communicating with the right server, you can always temporarily disable the cert check:
$ msmtp --tls-certcheck off