Using Exim4 to send Messages through GMail

Debian ships default with Exim4 as a mail server. To use this to send messages through Google's smtp servers for GMail accounts, you need to do the following.

# dpkg-reconfigure exim4-config

-Choose YES, split configuration into small files

-Choose mail sent by SMARTHOST; received via SMTP or fetchmail

-Type System Mail Name: localhost

-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

-Choose NO, don't hide local mail name in outgoing mail.

-Chose NO, don't keep number of DNS-queries minimal (Dial-on-Demand).

Run

# vi /etc/exim4/passwd.client

and add the following lines:

gmail-smtp.l.google.com:yourAccountName@gmail.com:y0uRpaSsw0RD *.google.com:yourAccountName@gmail.com:y0uRpaSsw0RD smtp.gmail.com:yourAccountName@gmail.com:y0uRpaSsw0RD

The following only applies to exim 4.50 in sarge; in etch and sid the port can be configured via debconf. See the Debian exim docs for more detailed description.

The following will only work in split configuration.

Next, tell it what port to try. Run

# vi /etc/exim4/conf.d/transport/30_exim4-config_remote_smtp_smarthost

and add the following line after the line containing "hosts_try_auth..."

port=587

Finally, run

# update-exim4.conf

Good luck.

Possible Problems

If this doesn't work, first enable POP for your GMail account, and then try:

# tail /var/log/exim4/mainlog.

If you see something like

2005-10-23 21:51:04 1ETuIW-0002iB-Qo **  yourAccountName@gmail.com R=smarthost  T=remote_smtp_smarthost: SMTP error from remote mailer after  MAIL FROM:<yourAccountName@gmail.com> SIZE=1555:  host gmail-smtp.l.google.com [64.233.163.111]: 530  5.7.0 Authentication Required 23sm863650nzn 

except there is something different than

gmail-smtp.l.google.com,

the host might be resolving to something else. In that case, replace the gmail-smtp.l.google.com in your /etc/exim4/passwd.client with whatever it says.

To try test these changes immediately---you might have failed enough times to have a very long delay between retries---run

# exim4 -M 1ETuIW-0002iB-Qo

but replacing that garbage ID tag from the first line of the error entry in the log file with the ID of the failed message that you want to resend.

If you see something like

failed to open /etc/exim4/passwd.client for linear search: Permission denied (euid=102 egid=102)

exim is unable to read the password file.

# chown Debian-exim:Debian-exim /etc/exim4/passwd.client

did it for me. (Don't know how "safe" it is.)