-
-
Save JosefJezek/6194563 to your computer and use it in GitHub Desktop.
#!/bin/sh | |
# Sending emails using Gmail and msmtp | |
# Author: [Josef Jezek](http://about.me/josefjezek) | |
# Donate: [Gittip](https://www.gittip.com/josefjezek) | |
# Link: [Gist](https://gist.github.com/6194563) | |
# Usage: setup-msmtp-for-gmail.sh | |
sudo apt-get update -q | |
sudo apt-get install msmtp-mta ca-certificates heirloom-mailx -yq | |
if command -v zenity >/dev/null; then | |
GMAIL_USER=$(zenity --entry --title="Gmail username" --text="Enter your gmail username with domain ([email protected]):") | |
GMAIL_PASS=$(zenity --entry --title="Gmail password" --text="Enter your gmail password:" --hide-text) | |
else | |
read -p "Gmail username with domain ([email protected]): " GMAIL_USER | |
read -p "Gmail password: " GMAIL_PASS | |
fi | |
echo # an empty line | |
if [ -z "$GMAIL_USER" ]; then echo "No gmail username given. Exiting."; exit -1; fi | |
if [ -z "$GMAIL_PASS" ]; then echo "No gmail password given. Exiting."; exit -1; fi | |
sudo tee /etc/msmtprc >/dev/null <<__EOF | |
# Accounts will inherit settings from this section | |
defaults | |
auth on | |
tls on | |
tls_certcheck off | |
# tls_trust_file /etc/ssl/certs/ca-certificates.crt | |
logfile /var/log/msmtp.log | |
# A first gmail address | |
account gmail | |
host smtp.gmail.com | |
port 587 | |
from $GMAIL_USER | |
user $GMAIL_USER | |
password $GMAIL_PASS | |
# A second gmail address | |
account gmail2 : gmail | |
from [email protected] | |
user [email protected] | |
password password | |
# A freemail service | |
account freemail | |
host smtp.freemail.example | |
from [email protected] | |
user joe.smith | |
password secret | |
# A provider's service | |
account provider | |
host smtp.provider.example | |
# Set a default account | |
account default : gmail | |
__EOF | |
sudo chmod 600 /etc/msmtprc | |
sudo chown -R www-data:www-data /etc/msmtprc | |
HOST=$(hostname) | |
sudo mail -vs "Email relaying configured at ${HOST}" $GMAIL_USER <<__EOF | |
The postfix service has been configured at host '${HOST}'. | |
Thank you for using this postfix configuration script. | |
__EOF | |
echo "I have sent you a mail to $GMAIL_USER" | |
echo "This will confirm that the configuration is good." | |
echo "Please check your inbox at gmail." |
Thank you, it is what I am looking for ... unfortunately it doesn't work due to increased google security ...
Someone just tried to sign in to your Google Account [email protected] from an app that doesn't meet modern security standards.
Details:
Saturday, December 19, 2015 12:56 AM (Pacific Standard Time)
yyy, OR, USA*
We strongly recommend that you use a secure app, like Gmail, to access your account. All apps made by Google meet these security >standards. Using a less secure app, on the other hand, could leave your account vulnerable. Learn more.
If you decide update your script it will be useful.
Thank you.
Yeah
Thank you Sir, wonderful script.
As for the google security issue:
6. Enable "Less Secure Apps" In Gmail
By default, only the most secure sign-ins, such as logging in to Gmail on the web, are allowed for your Gmail account. To permit relay requests, log in to your Gmail account and turn on Allow less secure apps.
For more information, review the Google Support document "Allowing less secure apps to access your account."
tls_certcheck off
why?
Regarding enabling less secure apps, it's better to enable 2-step verification and create a per-app password.
I am trying on Android to send mail... From PHP
I require to edit msmtp.cnf file for use mail() function I copied configuration code from your shell script. but not working .. for Android. If you know something can you provide info?? Please help sir
Hi, the scripts worked. Thank you for that, but the mail command still doesn't send mails..
You can download and run this using a one-liner:
wget https://gist.github.com/josefjezek/6194563/raw/setup-msmtp-for-gmail.sh && chmod +x setup-msmtp-for-gmail.sh && ./setup-msmtp-for-gmail.sh