I am making this post because last 2 days I tried to install msmtp to my Debian 10 server. Previously I used ssmtp where I did not have any problems but it cannot be installed at the time of making this tutorial. Because nobody is maintaining the package anymore or something like this as far as I understood.
I spend countless hours to the error that said my username and password is not accepted by Gmail. So here is my tutorial to how fully install it and configure it.
Step 1: Installing required packages.
sudo apt-get install msmtp msmtp-mta
Step 2: Create an app password in Google for msmtp
This (Step 2.* in this tutorial) was the missing piece of the puzzle which weren’t in any of the msmtp tutorials I did through. I found out about it in one of the Postfix tutorials where it was included after many hours of trial and error. Because at first, I thought the msmtp config file where was password field had to be filled with the same password with what you log in as a person to your account.
Go to: https://myaccount.google.com and log into the email account you want to start sending the emails.
Step 2.1: Select Security from the side menu and turn 2-Step Verification ON.
Step 2.2: After that click on App passwords
Step 2.3: Next up select Other (Custom name)
Step 2.4: Fill in the name as msmtp for example
Step 2.5: Get the password for your msmtp configuration file
Save this password to some notepad temporarily so you can copy & paste it later to a configuration file because once you click DONE you cannot see the password again. At least I have not found a way to re-open this popup.
Step 3: Create a configuration file
sudo nano /etc/msmtprc
Step 4: Configure msmtprc file
defaults
auth on
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile ~/.msmtp.log
account gmail
host smtp.gmail.com
port 587
from [email protected]
user username
password password
account default : gmail
The [email protected] has to be changed in the config file with the email you used to create an app password in Google.
The user field where is username has to be changed as well. For example, if your email is [email protected] then change username to john.doe.
The password field has to be changed also to the one the Google App password told you.
So the configuration file would look like something like this:
defaults
auth on
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile ~/.msmtp.log
account gmail
host smtp.gmail.com
port 587
from [email protected]
user john.doe
password fkelpwkdymcwslwo
account default : gmail
Step 5: Testing the email configuration
echo "Message" | mail -s "Title" [email protected]
After that command, you should receive an email from your configured account.
I hope this helps at least some of you. If you have any questions then feel free to ask and I will try to answer as fast as I can.
Great tutorial, it just works! Very detailed steps. Thank you.
and the test works from the browser
Thank you for your guide, it worked for me on my Raspberry Pi 4!
Have a great day
Thanks for this tutorial. Works perfectly.
Excellent! Been a while trying to solve this. Thanks a lot.
Thanks very much, gave me the missing step I needed. Have bookmarked this page for later 🙂
Excellent way of explaining, and good paragraph to take facts regarding my
presentation topic, which i am going to convey in university.
Everything is very open with a really clear clarification of the issues.
It was truly informative. Your site is very helpful. Many
thanks for sharing!