• Aviso Legal
  • About

Bienvenidos al Blog de David Rodriguez

Como configurar un servidor de correo qmail para hacer un relay selectivo

noviembre 12, 2009 5:26 pm / 2 Comments / David Rodriguez

Despues de hacerlo en varias maquinas, me he dado cuenta que no hay ninguna referencia a como hacer esto en español. Con lo cual, os voy a comentar lo que he realizado y los posibles problemas que puedes encontrarte para permitir el envio de correos desde un servidor a otro (relay).

El problema es que tenemos 2 servidores, y desde uno queremos utilizar el otro como maquina que envia los correos, para ello, en el servidor que va a enviar los correos, necesitamos configurar el qmail para que nos deje enviar esos correos desde la otra maquina. Esta opción siempre viene cortada para evitar los ataques de SPAM a esa pagina.

Para ello, nos vamos a basar en esta url, donde explica los pasos que hay que seguir. Siempre tenemos la pagina de qmail oficinal y una no oficial con bastante información en ingles, aunque para mi .. no la suficiente.

Lo primero es bajarse una aplicación para el qmail, como las que aparecen en la pagina no funcionan del todo bien, os dejo la mía con mis propias instrucciones.

ucspi-tcp-0.88

para desempaquetar el fichero

$ tar xvf ucspi-tcp-0.88.tar

$ cd ucspi-tcp-0.88

$  make

En caso de no tener instalado el comando make hay que instalarlo

$ yum install make

tambien hay que tener instalado el gcc .. con lo cual si te da error por no tienes el gcc tambien hay que instalarlo

$yum install gcc

Si al compilar te sigue dando errores como a mi .. que es lo mas normal, hay que comentar una fila en el fichero error.h tal y como comentan en esta url , hay que eliminar la siguiente fila:

extern int errno;

y cambiarla por esta otra:

#include <errno.h>

De esta forma ya compila y se puede ejecutar

$ make setup check

Con esto ya tenemos configurado el programa, ahora tenemos que configurarlo con nuestras opciones.

creas el fichero /etc/tcp.smtp y se pone lo siguiente:

1.2.3.4:allow,RELAYCLIENT=""
 127.:allow,RELAYCLIENT=""

Rellenando los valores 1.2.3.4 por la IP del servidor desde el que vamos a lanzar los envios de correo. Es decir, al servidor al que le permitimos que nos mande emails para enviar.

Para no tener problemas en un futuro, creamos este fichero /etc/dnsrewrite

$ touch /etc/dnsrewrite
$ cat /etc/tcp.smtp | tcprules /etc/tcp.smtp.cdb ~/tcp.smtp.tmp

Paramos el servicio de xinetd

$/etc/rc.d/init.d/xinetd stop

y ejecutamos el programa donde 2020 hay que poner el usuario y el grupo del usuario de qmail.

para saber el usuario y grupo de qmail

# id qmaild

uid=2020(qmaild) gid=2020(nofiles) groups=2020(nofiles)

 

$ tcpserver -x/etc/tcp.smtp.cdb -u2020 -g2020 0 smtp /var/qmail/bin/qmail-smtpd &

Una vez hecho esto, ya estariamos escuchando por el puerto 25 para ver recibir peticiones

 $ netstat -apn | egrep ^tcp | egrep LISTEN

tcp        0      0 0.0.0.0:25                  0.0.0.0:*                   LISTEN      2574/tcpserver

Una vez hecho esto, ya podemos probar a enviar un email desde el otro servidor, os dejo un codigo en php para probarlo utilizando el paquete htmlMimeMail.php:

 <? set_time_limit(0);

error_reporting(E_ALL);
include('mail/htmlMimeMail.php');

    $email = "xxxx@xxxx.com";
    $emailshow = "nombre";

    $servidorcorreo = "1.2.3.4";
    $subject = "correo de prueba - $servidorcorreo";

$fecha=date("Y-m-d");
$mail = new htmlMimeMail();
    $htmlmail = "prueba de envio";
    $mail->setSMTPParams($servidorcorreo,25);
    $mail->setHtml($htmlmail);
    $mail->setReturnPath($email);
    $mail->setFrom('"'.$emailshow.'"<'.$email.'>');
    $mail->setSubject($subject);
    $mail->setHeader('X-Mailer', 'HTML Mime mail class ');
    $mail->buildMessage(array($email));
    $result2 = $mail->send(array($email), 'smtp');

    if (!$result2) {
            print_r($mail->errors);
    } else {
            echo 'Mail sent!';
    }
  ?>

Ya solo nos quedaría grabarlo en el arranque para que si se reinicia la maquina, no tengamos que rearrancar el servicio, con lo cual, en el fichero   /etc/rc.local añadimos lo siguiente:

$  vi /etc/rc.local

añadimos lo siguiente:

 /etc/rc.d/init.d/xinetd stop
/usr/local/bin/tcpserver -x/etc/tcp.smtp.cdb -u2020 -g2020 0 smtp /var/qmail/bin/qmail-smtpd &

De esta forma .. reiniciamos la maquina para comprobar que todo funciona correctamente

$ reboot

Espero que este rollo sirva a mucha gente que se está pegando con el qmail a resolver sus dudas en español.

Posts relacionados

  • Borrar algunos correos de la cola de qmail
  • qmail ejecutar un php al recibir un email
  • Los robots de formularios están de vacaciones de semana santa
  • Como conseguir acabar mi primer medio ironman. Half Ironman Riaza 2015.
  • Empleos con la revolución industrial 4.0, hablando en la radio
Posted in: Internet, Programacion / Tagged: qmail, relay, servidor de correo, ucspi-tcp

2 Thoughts on “Como configurar un servidor de correo qmail para hacer un relay selectivo”

  1. juan on junio 15, 2010 at 8:43 pm said:

    Que tal amigo espero estes bien oye solo tengo una duda grandisima, por que nadie dice como crear un correo en Qmail manual mente sin utilizar el administrador(Plesk) desde el punto indicatovo espero puedas ayudarme saludos…

  2. David Rodriguez on junio 18, 2010 at 8:11 am said:

    Hola Juan,
    no lo he hecho nunca .. y ahora hemos cambiado las maquinas y tenemos postfix en vez de qmail … lo intentaré probar en alguna maquina local.
    Un saludo

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Post Navigation

← Previous Post
Next Post →

Categorias

  • Base de datos
  • Empresas
  • Internet
  • Mac
  • marketing
  • Otros
  • Prensa
  • Programacion
  • Redes Sociales
  • Retos deportivos
  • Seguridad
  • SEO
  • servidores
  • SPAM
  • Uncategorized
© Copyright 2021 - Blog de David Rodriguez