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.