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.
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 = "[email protected]"; $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.
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…
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