Skip to content

Instantly share code, notes, and snippets.

Created October 25, 2012 12:24
  • Star 48 You must be signed in to star a gist
  • Fork 21 You must be signed in to fork a gist
Star You must be signed in to star a gist
What would you like to do?
Ubuntu sendmail using
function install_postfix() {
echo | sudo debconf-set-selections <<__EOF
postfix postfix/root_address string
postfix postfix/rfc1035_violation boolean false
postfix postfix/mydomain_warning boolean
postfix postfix/mynetworks string [::ffff:]/104 [::1]/128
postfix postfix/mailname string $HOST
postfix postfix/tlsmgr_upgrade_warning boolean
postfix postfix/recipient_delim string +
postfix postfix/main_mailer_type select Internet with smarthost
postfix postfix/destinations string $HOST, localhost.localdomain, localhost
postfix postfix/retry_upgrade_warning boolean
# Install postfix despite an unsupported kernel?
postfix postfix/kernel_version_warning boolean
postfix postfix/not_configured error
postfix postfix/sqlite_warning boolean
postfix postfix/mailbox_limit string 0
postfix postfix/relayhost string []:587
postfix postfix/procmail boolean false
postfix postfix/bad_recipient_delimiter error
postfix postfix/protocols select all
postfix postfix/chattr boolean false
echo "Postfix should be configured as Internet site with smarthost"
sudo apt-get install -q -y postfix
if ! dpkg -s postfix >/dev/null;
echo "Postfix is already installed."
echo "You may consider removing it before running the script."
echo "You may do so with the following command:"
echo "sudo apt-get purge postfix"
if zenity --version >/dev/null; then
GMAIL_USER=$(zenity --entry --title="Gmail username" --text="Enter your gmail username:")
GMAIL_PASS=$(zenity --entry --title="Gmail password" --text="Enter your gmail password:" --hide-text)
read -p "Gmail username: " GMAIL_USER
read -sp "Gmail password: " GMAIL_PASS
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
if ! [ -f /etc/postfix/ ]; then
sudo cp /etc/postfix/ /etc/postfix/
sudo tee /etc/postfix/ >/dev/null <<__EOF
relayhost = []:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_loglevel = 1
smtp_tls_per_site = hash:/etc/postfix/tls_per_site
smtp_tls_CAfile = /etc/ssl/certs/Equifax_Secure_CA.pem
smtp_tls_session_cache_database = btree:/var/lib/postfix/smtp_tls_session_cache
echo "[]:587 $GMAIL_USER:$GMAIL_PASS" | sudo tee /etc/postfix/sasl_passwd >/dev/null
sudo chmod 400 /etc/postfix/sasl_passwd
sudo postmap /etc/postfix/sasl_passwd
echo " MUST" | sudo tee /etc/postfix/tls_per_site >/dev/null
sudo chmod 400 /etc/postfix/tls_per_site
sudo postmap /etc/postfix/tls_per_site
sudo service postfix restart
echo "Configuration done"
mail -s "Email relaying configured at ${HOST}" $ <<__EOF
The postfix service has been configured at host '${HOST}'.
Thank you for using this postfix configuration script.
echo "I have sent you a mail to $"
echo "This will confirm that the configuration is good."
echo "Please check your inbox at gmail."
Copy link

sshtmc commented Oct 25, 2012

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

wget -O- | bash

Copy link

smonff commented Nov 28, 2012

Hey, thank you so much for this man !

Copy link


Thanks for this script. It makes a tedious job a snap. I now have cron mailing errors to me again.


Copy link

kforner commented Jan 19, 2013

Awesome, thank you so much !

Copy link

wvermin commented Dec 30, 2013

Indeed, awesome, thanks!

Copy link

OMG, works like magic!

Copy link

Wow, thanks I wish I found this a few hours ago!

Copy link

Not working for me. :(
I didn't have "mail" installed, so I ran apt-get install mailutils, but it also comes with postfix. So I uninstalled postfix, ran the script again. Still doesn't work. :/

Copy link

fpt commented Aug 14, 2014

Thank you so much!
It works for me on trusty after installing mailutils manually.

Copy link

Works like a charm after installing manually mailutils.
Thanks a lot.

Copy link

Hey, thanks a lot!

This script worked great for me. I wasted a day trying to configure sendmail for Ubuntu 14.04 and visited half-dozen sites before finding this well-written script.

It prompted me for not having mail. Once I ran 'sudo apt-get install mailutils' and 'sudo apt-get install sensible-mda', the script started to send email to my newly created gmail account. Don't use your existing gmail accounts, Google may block the traffic as a security protection measure.

Copy link

I get this when i run the wget command:

Connecting to (||:443... connected.
HTTP request sent, awaiting response... 400 Bad Request
2016-04-27 22:10:24 ERROR 400: Bad Request.

Copy link

This script works like magic. Save me a lot of time.

Copy link

@markandersonus the proper wget command is:

wget -O- | bash

add sudo if necessary.

Copy link

I can't see where to add my Gmail username and password to /etc/postfix/

snip from the tail of the command above
Running newaliases
Processing triggers for libc-bin (2.23-0ubuntu9) ...
Processing triggers for systemd (229-4ubuntu19) ...
Processing triggers for ureadahead (0.100.0-19) ...
Processing triggers for ufw (0.35-0ubuntu2) ...
bash: line 44: zenity: command not found
No gmail username given. Exiting.

Copy link

wvermin commented Oct 30, 2017

since end oct. 2017 the thing didn't work anymore. In the syslog complaints:
untrusted issuer /OU=GlobalSign Root CA - R2/O=GlobalSign/CN=GlobalSign
After editing the script: change Equifax_Secure_CA.pem into GlobalSign_Root_CA_-_R2.pem and
re-executing the script it is working again.

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