Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save miguellan/b4af43c35c0a9fb69c5b3ee327c5478a to your computer and use it in GitHub Desktop.
Save miguellan/b4af43c35c0a9fb69c5b3ee327c5478a to your computer and use it in GitHub Desktop.
Sending emails using Gmail and msmtp on Ubuntu / Debian
#!/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 (username@gmail.com):")
GMAIL_PASS=$(zenity --entry --title="Gmail password" --text="Enter your gmail password:" --hide-text)
else
read -p "Gmail username with domain (username@gmail.com): " 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 username@gmail.com
user username@gmail.com
password password
# A freemail service
account freemail
host smtp.freemail.example
from joe_smith@freemail.example
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."
@miguellan
Copy link
Author

You can download and run this using a one-liner:

wget https://gist.githubusercontent.com/miguellan/b4af43c35c0a9fb69c5b3ee327c5478a/raw/1078ecec8ee4cbfd8b3f6fc98d792738785b930d/setup-msmtp-for-gmail.sh && chmod +x setup-msmtp-for-gmail.sh && ./setup-msmtp-for-gmail.sh

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment