• Aviso Legal
  • About

Bienvenidos al Blog de David Rodriguez

Tag Archives: Ucspi-tcp

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.

Posted in: Internet, Programacion / Tagged: qmail, relay, servidor de correo, ucspi-tcp

Categorias

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