How to route the mail through GMail SMTP servers?
With the help of exim (the default MTA in debain/ubuntu), it is possible to route all mail through GMail SMTP servers. It can also be implemented in your localhost server which you use for developing or learning process.I tested it in Debian Lenny and Ubuntu 10.10 which worked without any problems . Follow the steps below to route the mail.
Step 1 : Install Exim4
sudo apt-get install exim4
Step 2 : Configure Exim
sudo dpkg-reconfigure exim4-config
Press Ok
Note: GMail allows only 100 smtp connections per day.
Step 1
Run dpkg-reconfigure exim4-config
Choose mail sent by smarthost; received via SMTP or fetchmail
Type System Mail Name: e.g. ubuntu.com / i kept debian in debian and ubuntu in ubuntu
Type IP Adresses to listen on for incoming SMTP connections: 127.0.0.1
Leave Other destinations for which mail is accepted blank
Leave Machines to relay mail for: blank
Type Machine handling outgoing mail for this host (smarthost): smtp.gmail.com::587
Choose NO, don't hide local mail name in outgoing mail.
Chose NO, don't keep number of DNS-queries minimal (Dial-on-Demand).
Choose mbox
Choose NO, split configuration into small files
Mail for postmaster. Leaving blank will not cause any problems though it is not recommended
Step 2
Open the file /etc/exim4/exim4.conf.template
Find the line .ifdef DCconfig_smarthost DCconfig_satellite and add the following in that section
send_via_gmail:
driver = manualroute
domains = ! +local_domains
transport = gmail_smtp
route_list = * smtp.gmail.com
If you have any other smarthost defined with "domains = ! +local_domains" remove that smarthost.
Find the "begin authenticators". In that section add the following
gmail_login:
driver = plaintext
public_name = LOGIN
client_send = : [email protected] : YourGmailPassword
Make sure you have no other authenticators with the same public_name (LOGIN). Comment them out if needed
Find the comment "transport/30_exim4-config_remote_smtp_smarthost". In that section add
gmail_smtp:
driver = smtp
port = 587
hosts_require_auth = $host_address
hosts_require_tls = $host_address
Step 3
Run update-exim4.conf
Do /etc/init.d/exim4 restart
You will get the following error message :
ALERT: exim paniclog /var/log/exim4/paniclog has non-zero size, mail system possibly broken
Remove the file using Rm command
rm /var/log/exim4/paniclog
This was on an Ubuntu server as well as Debian. I tested in both the environment and it worked perfectly.