• Aviso Legal
  • About

Bienvenidos al Blog de David Rodriguez

Tag Archives: Qmail

Borrar algunos correos de la cola de qmail

julio 23, 2013 8:52 am / 1 Comment / David Rodriguez

Para los MTAs con Qmail instalado, a veces necesitamos poder borrar toda la cola de correo, bien por un ataque de SPAM, o bien porque se está colapsando.

Para ello, lo mejor es utilizar este script qmHandle, para facilitarnos la tarea.

Una vez que lo tenemos descomprimido, ya podemos utilizarlo y hay varios comandos que nos ayudan a realizar las tareas más comunes:

-a : trata de enviar los mensajes en cola (debe estar corriendo el qmail)
-l : lista de los mensajes en cola
-L : lista los mensajes de la cola local
-R : lista los mensajes de la cola remota
-s : muestra estadisticas de la cola de correo
-mN : muestra las cabeceras del mensaje N
-dN : borra un unico mensaje de la cola
-fsender : borra los mensajes enviados desde una usuario (debe estar parado el servicio de qmail)
-f’re’ : borra los mensajes enviados desde varios usuarios, utilizando expresiones regulares
-Stext : borra todos los mensajes que tiene text en el asunto
-h’re’ : borra todos los mensajes con las cabeceras que contiene re como expresion regular
-b’re’ : borra todos los mensajes con el cuerpo que contiene re como expresion regular
-D : borra todos los mensajes de la cola de correo

ejemplos:

– Borrar todos los mensajes de la cola de correo de qmail

qmHandle -D

– Listado de los mensajes de la cola de correo

qmHandle -l

-Listado del número de mensajes de la cola de correo de qmail

qmHandle -s

– Borrado de todos los mensajes de la cola de correo enviados desde el mail  usuario@usuario.com

qmHandle -fusuario@usuario.com


Posted in: Internet, Seguridad, servidores, SPAM / Tagged: MTA, qmail, spam, web spam

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

qmail ejecutar un php al recibir un email

mayo 22, 2009 1:30 pm / 1 Comment / David Rodriguez

Si tienes qmail instalado como MTA, y quieres realizar alguna acción cuando recibas un correo, como por ejemplo ejecutar un php para filtrar spam, controlar devoluciones de correo, redirecciones, autorespuestas, etc puedes realizar lo que nos comenta Osus en su blog.

Si os digo la verdad, a mi no me funcionaba lo que el propone. Con lo cual, tuve que hacer unas modificaciones para encontrar mi solución, la cual os pongo aquí.

1.- Modificar el archivo .qmail que te genera en la carpeta del nombre del usuario. en mi caso se encuentra en /var/qmail/mailnames/dominio.com/nombredeusuario/.qmail

2.- Añadir la siguiente linea

| php -f paginaaejecutar.php > log.txt

con esto, ejecutamos ese fichero php cuando nos llega un correo y grabamos lo que nos devuelve ese php en un fichero para poder tracear el proceso.

3.- la pagina php debe tener algo parecido a esto:

CODIGO PHP:

$email = file_get_contents(«php://stdin»);

$email = str_replace(array(«\n», «\r»), » «, $email);

print $email;
FIN CODIGO PHP

De esta forma, al llegar el correo, lo tratamos que esté en una linea, y podemos tratar el texto de ese correo.

Es impresionante las muchas cosas que se pueden hacer con qmail .. y la poca ayuda o personas que ponen sus conocimientos sobre ejemplos para realizarlas.

Muchas gracias a mi compañero Jaime, que es un monstruo y me ayuda con todos estos cabezazos contra el ordenador.

Posted in: Internet, Programacion / Tagged: php, qmail

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