Presentador Virtual e24Presenter
Encuentra usuarios de Twitter en tu ciudad con LocaFollow

votarConfigurando Ubuntu/Exim4 para mandar mensajes a través de Google por SMTP(configuación múltiple smarthost)

Autor: JB | Archivado en: Linux, Uncategorized el día 17/Dic/2008

Exim (EXperimental Internet Mailer) es un agente de transporte de correo (Mail Transport Agent, usualmente MTA) desarrollado por la Universidad de Cambridge y puede ser utilizado en la mayoría de los sistemas Unix (entre ellos Linux). 

Wikipedia

Para instalarlo y configurarlo como smarthost de gmail me guié por el siguiente enlace

Using Exim4 to send Messages through GMail

El problema viene cuando quieres dependiendo del emisor quieres mandarlo a través de una dirección correspondiente, es decir, configurar un smarthost “múltiple”.

Por ejemplo, si tenemos hosteados midominio1.com y midominio2 .com con google apps y queremos que cualquier mensaje que se mande via SMTP desde nuestro servidor (a través de PHP o cualquier otra aplicación ) con una cuenta @midominio1.com se mande desde la cuenta noreply@midominio1.com y si se manda desde midominio2.com lo mismo.

Para ello mi sugerencia es la siguiente:

1.- Instalamos exim4

#apt-get install exim4 y hacemos los pasos que se explican en Using Exim4 to send Messages through GMail

También en español he visto el siguiente enlace Exim 4.69 con Gmail

2.- Para varios smarthosts creamos passwd.client.midominio1 y passwd.client.midominio2 poniendo en cada uno lo siguiente:

1
2
3
4
5
smtp.gmail.com:milogin@midominio1.com:mipassword
 
gmail-smtp.l.google.com:milogin@midominio1.com:mipassword
 
*.google.com:milogin1@midominio1.com:mipassword

y lo mismo con el dominio2.com 3.- Una vez hemos hecho esto, vamos a crear los diferentes smarthost para ello hacemos #nano etc/exim4/conf.d/router/200_exim4-config_primary y cambiamos:

1
2
3
4
5
6
7
8
9
smarthost:
debug_print = "R: smarthost for $local_part@$domain"
driver = manualroute
domains = ! +local_domains
transport = remote_smtp_smarthost
route_list = * DCsmarthost byname
host_find_failed = defer
same_domain_copy_routing = yes
no_more
por
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
smarthost_midominio1:
condition = ${if eq {${lc:$sender_address_domain}} {midominio1.com} {true} fail }
debug_print = "R: smarthost for $local_part@$domain"
driver = manualroute
domains = ! +local_domains
transport = remote_smtp_smarthost_midominio1
route_list = * DCsmarthost byname
host_find_failed = defer
same_domain_copy_routing = yes
no_more
smarthost_midominio2:
condition = ${if eq {${lc:$sender_address_domain}} {midominio2.com} {true} fail }
debug_print = "R: smarthost for $local_part@$domain"
driver = manualroute
domains = ! +local_domains
transport = remote_smtp_smarthost_midominio2
route_list = * DCsmarthost byname
host_find_failed = defer
same_domain_copy_routing = yes
no_more
4.- Ahora modificamos el siguiente fichero: /etc/exim4/conf.d/transport/30_exim4-config_remote_smtp_smarthost y cambiamos esto:
1
2
3
4
5
6
7
8
9
10
remote_smtp_smarthost:
debug_print = "T: remote_smtp_smarthost for $local_part@$domain"
driver = smtp
port=587
hosts_try_auth = <; ${if exists{CONFDIR/passwd.client} \
{\
${lookup{$host}nwildlsearch{CONFDIR/passwd.client}{$host_address}}\
}\
{} \
}
por nuestros smarthosts:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
remote_smtp_smarthost_midominio1:
debug_print = "T: remote_smtp_smarthost for $local_part@$domain"
driver = smtp
port=587
hosts_try_auth = <; ${if exists{CONFDIR/passwd.client.midominio1} \
{\
${lookup{$host}nwildlsearch{CONFDIR/passwd.client.midominio1}{$host_address}}\
}\
{} \
}
remote_smtp_smarthost_midominio2:
debug_print = "T: remote_smtp_smarthost for $local_part@$domain"
driver = smtp
port=587
hosts_try_auth = <; ${if exists{CONFDIR/passwd.client.midominio2} \
{\
${lookup{$host}nwildlsearch{CONFDIR/passwd.client.midominio2}{$host_address}}\
}\
{} \
}
* No se os olvide añadir el port=587
5.- Recargamos #exim4 reload y listo. Ahora si enviamos desde milogin@midominio1.com se enviará a través del smarthost definido para midominio1 y posteriormente a través de gmail apps

Tags: , , , ,
  • Digg
  • del.icio.us
  • Facebook
  • Google
  • LinkedIn
  • Meneame
  • MySpace
  • Technorati
  • TwitThis
Posts Relacionados

3 Comentarios on “Configurando Ubuntu/Exim4 para mandar mensajes a través de Google por SMTP(configuación múltiple smarthost)”

  1. #1 Santiago dijo 11:23 pm el Noviembre 17th, 2009:

    Estimado JB. Creo que tu post me será muy útil, pero necesito entender algo. Espero que no sea una pregunta muy tonta, pero la verdad he googleado harto y no logro encontrar un instructivo claro a este respecto.
    Cuando tú enseñas como usar dos smarthost, dices que hay que crear dos archivos con nombre passwd.client.dominio[12] , pero me hace pensar que tienes cuentas en dos servicios distintos. En cambio, si yo tengo dos cuentas de gmail: cuenta1@gmail.com y cuenta2@gmail.com , entonces ¿cómo lo hago?, porque el dominio sería el mismo, ¿o no? Es decir,
    midominio1 = midominio2 = gmail
    Gracias


  2. #2 JB dijo 10:35 am el Noviembre 18th, 2009:

    Hola Santiago,

    En tu caso deberías de cambiar la condición en este fichero:

    etc/exim4/conf.d/router/200_exim4-config_primary

    condition = ${if eq {${lc:$sender_address_domain}} {midominio1.com} {true} fail }

    Y comparar con el nombre completo del mail, es decir, debería de ser:

    condition = ${if eq {${lc:$sender_address}} {cuenta@gmail.com} {true} fail }

    o

    condition = ${if eq {${lc:$local_part@$sender_address_domain}} {cuenta@gmail.com} {true} fail }

    No lo he probado, por lo que no sé si va, pero este sería el concepto.

    Un saludo, espero que te sirva


  3. #3 Santiago dijo 12:57 pm el Noviembre 18th, 2009:

    Gracias por la pronta respuesta. Lo probaré hoy día y ahí cuento cómo me fue.



Deja un comentario.