Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I want to set up Exim to send the mails through my gmail (actually my domains google apps).

I have added the router, transport and authenticator. Specifically:

gmail_route:
  driver = manualroute
  transport = gmail_relay
  route_list = * smtp.gmail.com

gmail_relay:
  driver = smtp
  port = 587
  hosts_require_auth = $host_address
  hosts_require_tls = $host_address

gmail_login:
  driver = plaintext
  public_name = LOGIN
  hide client_send = :me@domain.com:mypassword

I was able to set this up for Exim on Debian but I can't figure it out on Centos.

When I try and send while monitoring the logs it tells me "no IP address found..." and then "SMTP error from remote mail server...". It also says "Authentication required".

Here is more detail: Pretend I am sending to someone@gmail.com

someone@gmail.com R=gmail_route T=gmail_relay: SMTP error from remote mail server after MAIL FROM:<me@domain.com> SIZE=1492: 

host gmail-smtp-msa.l.google.com [2a00:1450:4001:c02::6d]: 

530-5.5.1 Authentication Required. Learn more at\n530 5.5.1 http://support.google.com/mail/bin/answer.py?answer=14257 k41sm12066343een.19 - gsmtp

Is there anything I can try to fix this? I am planning on using it mostly to send alert emails to myself (fail2ban, logwatch etc). And the default Exim setup seems to work but I would prefer to use my gapps email like hostname@mydomain.com - For one thing the emails went to spam before I trained my email account to put them in the inbox...

Thanks,

share|improve this question

2 Answers 2

I have used the following config

ROUTER

send_via_gmail:
   driver = manualroute
   domains = ! +local_domains
   transport = gmail_smtp
   route_list = * smtp.gmail.com

TRANSPORT

gmail_smtp:
   driver = smtp
   port = 587
   hosts_require_auth = $host_address
   hosts_require_tls = $host_address

AUTHENTICATOR

gmail_login:
   driver = plaintext
   public_name = LOGIN
   client_send = : alex.hha@gmail.com : 7654321

Some simple test

# swaks -s 127.0.0.1 --to user@example.net --from alex.hha@gmail.com
=== Trying 127.0.0.1:25...
=== Connected to 127.0.0.1.
<-  220 mail.example.net, [127.0.0.1]
 -> EHLO mail.example.net
<-  250-mail.example.net Hello localhost [127.0.0.1]
<-  250-SIZE 52428800
<-  250-PIPELINING
<-  250-STARTTLS
<-  250 HELP
 -> MAIL FROM:<alex.hha@gmail.com>
<-  250 OK
 -> RCPT TO:<user@example.net>
<-  250 Accepted
 -> DATA
<-  354 Enter message, ending with "." on a line by itself
 -> Date: Wed, 05 Mar 2014 10:22:55 -0500
 -> To: user@example.net
 -> From: alex.hha@gmail.com
 -> Subject: test Wed, 05 Mar 2014 10:22:55 -0500
 -> X-Mailer: swaks v20130209.0 jetmore.org/john/code/swaks/
 ->
 -> This is a test mailing
 ->
 -> .
<-  250 OK id=1WLDep-0004ED-Kb
 -> QUIT
<-  221 mail.example.net closing connection
=== Connection closed with remote host.

Check maillog file

# cat /var/log/exim/main.log | grep 1WLDep-0004ED-Kb
2014-03-05 10:22:55 1WLDep-0004ED-Kb <= alex.hha@gmail.com H=localhost (mail.example.net) [127.0.0.1] P=esmtp S=479
2014-03-05 10:22:55 1WLDep-0004ED-Kb gmail-smtp-msa.l.google.com [2a00:1450:4001:c02::6d] Network is unreachable
2014-03-05 10:23:00 1WLDep-0004ED-Kb => user@example.net R=send_via_gmail T=gmail_smtp H=gmail-smtp-msa.l.google.com [173.194.70.108] X=UNKNOWN:ECDHE-RSA-AES128-GCM-SHA256:128
2014-03-05 10:23:00 1WLDep-0004ED-Kb Completed

You can run exim in debug mode

# echo -e "helo localhost\nmail from:<me@domain.com>\nrcpt to:<someone@gmail.com>\nDATA\nHello world\n.\nquit" | exim -bhc 127.0.0.1 -d+all

After that you get a lot of data. Add the output to the question

share|improve this answer
    
No matter how I tweak it, it still gives me an smtp error... –  Jay Mar 6 at 16:23
    
I have updated my answer –  ALex_hha Mar 6 at 17:10

Did you tried this;

Using GMail as smarthost:

Note: The following must be put in the appropriate sections of the configuration file, eg, after begin authenticators.

Add a router before or instead of the dnslookup router:

gmail_route: driver = manualroute transport = gmail_relay route_list = * smtp.gmail.com

Add a transport:

gmail_relay: driver = smtp port = 587 hosts_require_auth = $host_address hosts_require_tls = $host_address

Add an authenticator (replacing myaccount@gmail.com and mypassword with your own account details):

gmail_login: driver = plaintext public_name = LOGIN hide client_send = : myaccount@gmail.com : mypassword

$host_address is used for hosts_require_auth and hosts_require_tls instead of smtp.gmail.com to avoid occasional 530 5.5.1 Authentication Required errors. These are caused by the changing IP addresses in DNS queries for smtp.gmail.com. $host_address will expand to the particular IP address that was resolved by the gmail_route router. For added security, use a per-application password. This works with Google Apps accounts as well.

SOURCE: https://wiki.archlinux.org/index.php/Exim_with_Remote_SMTP_server

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.