# rm-rf.es | Administración de sistemas

Bitácora personal de un SysAdmin Gnu/Linux, Windows, BSD...

Creación de cuenta no-reply en Postfix

En el caso de necesitar una cuenta de correo que se utiliza para enviar emails, pero no se desea recibir correo en ella (es decir, mandar todo el correo que reciba esta cuenta a /dev/null) en un servidor de correo Postfix, hemos de realizar los siguientes pasos (gracias Web Patrika, esto es una adaptación de su artículo):

Lo primero que hay que hacer es identificar la línea del fichero principal de configuración de postfix que hace referencia a los aliases, abrimos el fichero /etc/postfix/main.cf y confirmamos que no se encuentra comentada:

vim /etc/postfix/main.cf
alias_maps = hash:/etc/aliases

Como vemos, los mapeos de alias se hacen en el fichero /etc/aliases, vamos a añadir uno que rediriga todos los correos a /dev/null, para ello, añadimos la siguiente línea en el fichero /etc/aliases:

vim /etc/aliases
devnull: /dev/null

Posteriormente, ya podemos crear la cuenta de correo en nuestro sistema Postfix, cada uno lo hará según haya sido configurado (usuarios virtuales, a través de MySQL, etc). En mi caso, al ser un sistema Postfix con MySQL, creo la cuenta de correo en la tabla MySQL correspondiente, y después creo otro registro, esta vez en la tabla de alias y la redirigo al alias mapeado anteriormente, devnull:

no-reply@dominio.com -> devnull

Finalmente, refrescamos postfix alias y postfix cache y la cuenta debería funcionar correctamente, podremos enviar correos desde esa cuenta, pero cualquier correo que se reciba se desechará automáticamente:

newaliases
postfix reload

Deshabilitar VRFY en Postfix

Una petición VRFY consulta al un determinado servidor de correo si una dirección de correo existe o no. Básicamente cuando conectamos vía telnet al puerto de un servidor de correo podemos lanzarle una petición y ver si en dicho servidor existe una cuenta de correo.

Si queremos, por seguridad deshabilitar esta opción en postfix, añadiremos la siguiente línea al fichero de configuración, normalmente /etc/postfix/main.cf

disable_vrfy_command = yes

De este modo evitamos que por telnet, cualquiera con el comando VRFY pueda verificar si una dirección de correo/usuario existe.

Ejemplo:

# telnet test.com 25
Trying 65.233.23.33...
Connected to test.com (65.233.23.33).
Escape character is '^]'.
220 test2.com ESMTP SMTP Ready; Sun, 19 Ene 2009 14:32:19 GMT
vrfy alex@test.com
252 2.5.2 Cannot VRFY user; try RCPT to attempt delivery (or try finger)
expn root
502 5.7.0 Sorry, we do not allow this operation
quit
221 2.0.0 test2.com closing connection
Connection closed by foreign host.

Gracias Jacob y David ;)

Postfix: Aumentar el límite de tamaño de mensajes/archivos adjuntos

Para aumentar el límite de tamaño de un mensaje en Postfix, o lo que es lo mismo, permitir ficheros adjuntos más pesados en un correo electrónico, debemos modificar el parámetro message_size_limit del fichero principal de configuración de Postfix, normalmente ubicado en /etc/postfix/main.cf:

vim /etc/postfix/main.cf
message_size_limit = 15240000

FAQ de Postfix

POSTFIX

Un enlace de utilidad para los marcadores de un administrador del MTA Postfix. Se trata de la base de datos de preguntas frecuentes (FAQ) relacionadas con Postfix, sus configuraciones, errores típicos, optimización, etc

- Enlace Preguntas Frecuentes (FAQ) Postfix

Goldfish: Autoresponder para PostFix

Goldfish es un sencillo sistema de autoresponder para servidores de correo Postfix + MySQL escrito en PHP. Se trata únicamente de un fichero PHP que trabaja conjuntamente con una simple base de datos que almacena los autoresponder. Se ejecuta a través de un cronjob.

La instalación es sencilla, asumimos que tenemos instalado lo siguiente:

Lo primero que haremos será crear la base de datos de autoresponder y crear la siguiente tabla:

CREATE TABLE `autoresponder` (
`email` varchar(255) NOT NULL default '',
`from` date NOT NULL default '0000-00-00',
`to` date NOT NULL default '0000-00-00',
`message` text NOT NULL,
`enabled` tinyint(4) NOT NULL default '0',
`subject` varchar(255) NOT NULL default '',
PRIMARY KEY (`email`),
FULLTEXT KEY `message` (`message`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Posteriormente asignaremos un nuevo usuario mysql que gestionará esta base de datos:

mysql -u root -p (your password)
mysql> GRANT SELECT ON `database`.`autoresponder` TO `goldfish` IDENTIFIED BY PASSWORD('myPassword');
mysql> exit;

Será recomendable asignar también permisos de select a este usuario en la base de datos donde se encuentran las cuentas de correo (bd de postfix).

Ahora ya podemos descargar la última versión estable de GoldFish, y ubicamos el php donde deseemos, asegurad que no tiene permiso de lectura para “otros” pues guardará datos de conexión mysql.

/home/goldfish/autoresponder.php

Ahora editamos el fichero y repasamos las distintas configuraciones:

Aquí le especificamos el intervalo de tiempo en el que se ejecuta el cron (por defecto está Ok):

/* General */
$conf['cycle'] = 5 * 60;

si quisieramos guardar log, lo activamos poniendolo a true:

/* Logging */
$conf['log_file_path'] = "/var/log/goldfish";
$conf['write_log'] = true;

Especificamos los datos de conexión a la base de datos de autoresponder:

/* Database information */
$conf['mysql_host'] = "localhost";
$conf['mysql_user'] = "user";
$conf['mysql_password'] = "";
$conf['mysql_database'] = "postfix";

Finalmente la configuración relacionada con las consultas SQL:

Esta consulta tiene que devolver la ruta (`path`) de la cuenta de correo “%m”, probadlo en mysql o desde phpmyadmin, quizás debáis cambiar la ruta a vuestros buzones, en este caso /home/vmail:

$conf['q_mailbox_path'] = "SELECT CONCAT('/home/', home,'/mail/',SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') AS `path` FROM `users` WHERE `email` = '%m'";

Esta consulta devuelve los valores siguientes de la tabla autoresponder`from`, `to`, `email`, `message` where `enabled` = 2:

$conf['q_forwardings'] = "SELECT * FROM `autoresponder` WHERE `enabled` = 1";

Esta consulta desactivará los autoresponder cuya fecha de validez haya pasado:

$conf['q_disable_forwarding'] = "UPDATE `autoresponder` SET `enabled` = 0 WHERE `to` < CURDATE();";

Esta consulta activará los autoresponder cuya fecha así lo requiera:

$conf['q_enable_forwarding'] = "UPDATE `autoresponder` SET `enabled` = 1 WHERE `from` = CURDATE();";

Esta consulta sacará el mensaje del autoresponder para la cuenta %m:

$conf['q_messages'] = "SELECT `message` FROM `autoresponder` WHERE `email` = '%m'";

Y esta consulta el asunto para la cuenta %m:

$conf['q_subject'] = "SELECT `subject` FROM `autoresponder` WHERE `email` = '%m'";

Finalmente añadiremos el cronjob (ejemplo):

*/5 * * * * vmail php /home/goldfish/autoresponder.php

Y ahora solo queda añadir registros a la tabla “autoresponder”, cada uno será un contestador automático, simplemente rellenad los campos asunto, mensaje, dirección email, etc…

Actualización de seguridad para servidor de correo Postfix

Ha salido a la luz una actualización de seguridad para el MTA Postfix para evitar vulnerabilidades de riesgo moderado. Esta vulnerabilidad podría permitir, en determinadas configuraciones añadir datos a ficheros aleatorios como root.

El modo de actualizar es el siguiente:

Debian / Ubuntu Linux

# apt-get update
# apt-get upgrade

RHEL / CentOS Linux

# yum update

RHEL <= 4.x

# up2date -u

Más información en Unix Craft.

Postfix + MailScanner: You must upgrade your perl IO module to at least…

Hoy actualizando un sistema CentOS me he encontrado con una serie de problemas de transacciones/dependencias con ciertos módulos de Perl:

conflicts between attempted installs of perl-5.8.8-10.el5_2.3 and perl…

Me he visto en la obligación de desinstalarlos, lógicamente, luego me he encontrado con algún problemilla, concretamente con MailScanner, el error era el siguiente:

# ./MailScanner start
Starting MailScanner daemons:
         incoming postfix:                                 [  OK  ]
         outgoing postfix:                                 [  OK  ]
         MailScanner:      

**** ERROR: You must upgrade your perl IO module to at least
**** ERROR: version 1.2301 or MailScanner will not work!

                                                           [  OK  ]

El error no puede ser más descriptivo, simplemente he reinstalado el módulo perl IO vía cpan y solucionado, Postfix + MailScanner funcionando perfectamente:

# cpan

cpan> install IO

Comandos básicos en Postfix para manejar la cola de correo

Postfix

Postfix

Para aquellos que se estén iniciando en el mundo del MTA Postfix, ahí van unos comandos útiles para el manejo de la cola de correo:

postsuper -d numero (eliminar el mensaje)
postsuper -d ALL (eliminar todos los mensajes)
postsuper -r Number (Encolar de nuevo el mensaje)
postsuper -r ALL (Encolar de nuevo todos los mensajes)
postqueue -p (Mostrar la cola de correo por pantalla)
postqueue -f (Hacer un flush de la cola de correo, intentar enviar todos los correos)

Próximamente más ;)