Jun 16

Tal vez en alguna ocasión, habeis querido cambiar la ip un servidor ( por ejemplo en una migración de una máquina a otro proveedor ) y os encontráis con que no teneis la posibilidad de cambiar la configuración IP para todos los dominios en plesk, si no que lo tenéis que hacer de 1 en 1 , claro para 20 dominios no es tanto trabajo , pero ¿ Qué pasa cuando son 250 ?

Primero deberis aseguraros que todos los clientes que tengais tienen metida la nueva IP en su pool de ip’s, si no os dará error. Yo en mi caso tengo ahora los dominios en /var/www/vhosts ( Que el ruta por defecto para las webs a partir de plesk 8 , Si la vuestra fuese otra tendrías que adaptar el comando .

ls /var/www/vhosts -1 | awk ‘{print “/usr/local/psa/bin/domain –update “$1″ -ip DIRECCION_IP_NUEVA”}’ | sh

Tal vez haya algunos dominios que no querais cambiar por lo que sea, podríais en vez de ejecutarlos directamente meter los comando a un archivo para luego eliminar los que no querais mover de la siguiente manera:

ls /var/www/vhosts -1 | awk ‘{print “/usr/local/psa/bin/domain –update “$1″ -ip DIRECCION_IP_NUEVA”}’ > /tmp/cambia_ip_bulk.sh

Y después de eliminar los dominios que no quereis cambiar, hacer lo siguiente:

sh /tmp/cambia_ip_bulk.sh

Si algún dominio diese fallo os saldría un error y luego podreis mirarlo a mano. Asi como hay 2 líneas que os darán fallo seguro pero no pasa, se trata de los directorios chrot, y default, como no son dominios habiles no pasa nada por ese error que recibireis.

como último asegurarnos que todos los cambios se hacen efectivos:

/usr/local/psa/admin/bin/websrvmng -av

De esta forma podreis hacer un bulk update de ip’s para los dominios en plesk, en cuestión de unos minutos. Espero que os sirva de ayuda.

Jan 14

Siguiendo la racha de recuperar datos para el panel de control Plesk, esta vez le toca el turno a las bases de datos, para ello habría que ejecutar la siguiente consulta SQL:

SELECT
data_bases.name AS db_name,
db_users.login AS db_user,
accounts.password AS db_password,
domains.name,
data_bases.`type`
FROM
db_users
INNER JOIN data_bases ON (db_users.db_id = data_bases.id)
INNER JOIN accounts ON (db_users.account_id = accounts.id)
INNER JOIN domains ON (data_bases.dom_id = domains.id)
WHERE domains.name='DOMINIO.COM'

Jan 10

Si alguna vez perdemos la clave del administrador del Plesk, tanto en Windows como en Linux, no tenemos por que preocuparnos, puesto que teniendo acceso a la máquina podemos recuperarla.

Para windows:

C:\Archivos de Programa\SWsoft\Plesk\admin\bin\plesksrvclient.exe -get
La ruta de este ejecutable puede cambiar dependiendo del Idioma y donde esté instalado el Plesk.

También podriamos cambiar la clave directamente con el siguiente comando:
C:\Archivos de Programa\SWsoft\Plesk\admin\bin\plesksrvclient -set true

Para Linux
#more /etc/psa/.psa.password

Dec 27

El usuario lo podemos ver desde el panel de control pero no la contraseña, para ello y tal como hicieramos para sacar las contraseñas de los emails, podemos sacarlo de la base de datos “psa” .


SELECT
domains.name,
domains.`status` AS estado_dominio,
domains.id,
accounts.password AS password_ftp,
`sys_users`.login AS password_user
FROM
domains
LEFT JOIN `hosting` ON (domains.id = `hosting`.dom_id)
LEFT JOIN `sys_users` ON (`hosting`.sys_user_id = `sys_users`.id)
INNER JOIN accounts ON (`sys_users`.account_id = accounts.id)
WHERE
(domains.name = 'dominio.com')

Esto nos devolverá el nombre de usuario para el ftp, así como la contraseña de este mismo.

Dec 20

Por si alguien no lo sabía, absolutamente todos los datos del plesk se guardan en la base de datos psa , normalmente bajo MySQL, aunque en ocasiones lo he visto en un base de datos access por ejemplo en un windows.

Por defecto todas las contraseñas se guardan en formato plano, es decir sin encriptar, aunque cabe la posibilidad de guardarlas encriptadas, si es tu caso, esto no te va a servir para nada.

Para sacar las contraseñas de las cuentas de un dominio tan solo tendremos que ejecutar la siguiente consulta, una vez hayamos seleccionado la tabla “psa”:

SELECT
domains.name AS nombre_dominio,
accounts.password AS password_cuenta,
`mail`.mail_name AS nombre_cuenta
FROM
domains
INNER JOIN `mail` ON (domains.id = `mail`.dom_id)
INNER JOIN accounts ON (`mail`.account_id = accounts.id)
WHERE domains.name = 'NOMBRE_DEL_DOMINIO'

Espero que le sirva a alguien, sobre todo por que los clientes suelen perder con bastante facilidad las contraseñas de sus cuentas, y esto es más cómodo que volver a reescribirlas todas.

Nov 20

Siempre he hechado de menos en Plesk y Qmail la posibilidad de que envie los correos clasificados como Spam a una carpeta especifica, por que el hecho de marcar los correos para que se borren siempre me ha resultado una medida excesiva, pero casi necesaria si tu buzon se llena de ciento o miles de correos marcados como spam al dia.

Para ello haremos uso de Safecat : http://jeenyus.net/~budney/linux/software/safecat.html
Lo instalaremos de la siguiente manera:
cd /usr/local/src/
wget http://jeenyus.net/~budney/linux/software/safecat/safecat-1.13.tar.gz
tar xvf safecat-1.13.tar.gz
cd safecat-1.13
make
make setup check

Una vez hecho esto verificaremos donde tenemos instalado el procmail con:
which procmail y apuntaremos la ruta que nos salga.

Crearemos ahora una carpeta desde nuestro webmail o bien por IMAP , que se llame Spam. Una vez realizado tenemos que crear un par de ficheros de configuracion:

Continue reading »

Nov 20

A la hora de realizar una migracion de correos, siempre nos encontramos con la posibilidad que mientras se actualizan las DNS , los correos pueden ir llegando indistintamente al servidor viejo como al nuevo al que estemos llevando el dominio.

Por ello la mejor forma de migrarlo es utilizar el asistente de migracion de Plesk si la plataforma a la que lo estemos llevando lo soporte, y a parte en el momento que estemos haciendo esto, redirigir todos los correos que lleguen para ese dominio en la maquina vieja a la nueva.

El supuesto seria el siguiente, tenemos un maquina A ( IP: AA.AA.AA.AA ) que es donde tenemos actualmente el dominio ( dominio.com ) , y lo queremos trasladar a una maquina llamemosle B ( BB.BB.BB.BB ) . Entonces deberiamos crear un el siguiente fichero:

nano -w /var/qmail/control/smtproutes
Y ponemos dentro lo siguiente:
dominio.com:BB.BB.BB.BB

Depues de esto abriremos el fichero de virtualdomains, para que no entregue los correos en local
nano -w /var/qmail/control/virtualdomains

Buscaremos el nombre de nuestro dominio y pondremos una almohadilla por delante:
#dominio.com:1

Una vez hecho esto, reiniciaremos todo el plesk con:
/etc/init.d/psa stopall
/etc/init.d/psa start

Para comprobar que los correos se estan redirigiendo bien, haremos lo siguiente en el servidor viejo:
tail -f /usr/local/psa/var/log/maillog | grep dominio.com ( esto puede cambiar dependiendo de donde tengas los logs del correo )

Si al enviar un correo a tu dominio sale una linea que ponga remote, entonces lo estara enviando al servidor nuevo, como por ejemplo:
Nov 20 13:33:26 localhost qmail: 1195562006.577355 starting delivery 136: msg 262147 to remote miemail@dominio.com
Y de esta forma no perderas ningun correo y la migracion es inmediata.

Oct 18

Hace ya un par de meses salió una versión de QmHandle, que para quien no lo sepa, es una utilidad programada en Perl, para manejar la cola de correo de Qmail.

En realidad la versión fué publicada el 20 de julio, pero más vale tarde que nunca, puesto que incorpora bastante mejoras, que nos ayudarán en el mantenimiento de nuestros servidores de correo.

Hasta ahora solo se podían borrar correos, que tuviesen cierta cadena de texto en el asunto, con el flag -Scadena , a partir de ahora se pueden utilizar expresiones regulares en las diferentes partes del email , cuerpo y cabecera, pongo un resumen de los nuevos comandos:

Borrar mensajes por el From: del mensaje: -fsender
Borrar mensajes por el From que cumplan una expresión regular REGEXP : -f’REGEXP’
Borrar mensajes que cumplan la expresión regular ( sin diferenciar mayúsculas y minusculas ) : -h’REGEXP’
Borrar mensajes que cumplan la expresión regular en cuerpo ( sin diferenciar mayúsculas y minusculas ) : -b’REGEXP’
Borrar mensajes que cumplan la expresión regular ( diferenciando mayúsculas y minusculas ) : -H’REGEXP’
Borrar mensajes que cumplan la expresión regular en cuerpo ( sin diferenciar mayúsculas y minusculas ) : -B’REGEXP’
Borrar todos los mensajes que vayan para usuarios que cumplan la expresión regular ( util por ejemplo cuando hay miles de correos de Spam por ejemplo a cuentas de AOL : -t’REGEXP’

Otra cosa que se ha añadido es que a la hora de mostrar las stats de la cola de correo con el flag -s , ahora también muestra la cantidad de bounces que hay.

Pódeis descargarlo en la siguiente dirección:
http://ovh.dl.sourceforge.net/sourceforge/qmhandle/qmhandle-1.3.2.tar.gz

Jul 30

Para este acometido utilizaremos mod-cband. Y de allí bajaremos la versión más moderna, en nuestro caso, mod-cband-0.9.7.5.tgz.

wget http://cband.linux.pl/download/mod-cband-0.9.7.5.tgz

Ahora lo descompriremos y entramos al directorio.
tar -xvzf mod-cband-0.9.7.5.tgz
cd cd mod-cband-0.9.7.5

Ahora ya solo nos queda compilarlo
./configure
make
make install

Una vez hecho ya tenemos el módulo compilado y listo para que lo añadamos a la configuración de nuestro apache.
En mi caso la librerías las tengo en /usr/lib/httpd/modules/mod_cband.so , al hacer el make install os dirá de todas formas donde lo ha instalado.

nano -w /etc/httpd/conf/httpd.conf

y añadimos en la sección de modulos:
LoadModule cband_module /usr/lib/httpd/modules/mod_cband.so

Ya tenemos instalado el módulo, solo nos quedará configurarlo, para ello podemos leer la documentación oficial en : http://cband.linux.pl/documentation , o si no esperad a que hagamos la seguna entrega con algunos ejemplos.

Apr 03

Este es un trauma por el que ha pasado todo administrador de sistemas, a quien no le ha pasado el tener un cliente que tiene un formulario web mal programado y desde el cual te injectan miles y miles de correos diarios, que hacen que pierdas el tiempo y tus clientes de acosen y se vayan por los continuos retrasos.

Es más si el servidor es compartido y tiene muchas webs, el problema se complica más todavia. En plesk además con la versión que trae de Qmail, sin parchearla no es posible, limitar el número de correos por email, cosa que tal vez nos pueda sacar de un apuro pero provocarnos otros problemas.

Después de miles de pruebas, encontré una solución que funciona, y no he vuelto a tener problemas de ese tipo. Gracias al proyecto hardened-php , tenemos un modulo llamado suhosin , que nos puede ayudar con esta tarea.

Hay dos formas de hacerlo funcionar, o bien parcheando el php o bien como modulo en el php, y esta última es la que vamos a utilizar. Para ellos vamos a necesitar la utilizar phpize, que viene con el paquete devel de las distribuciones.

Por ejemplo para una debian Sarge tendríamos que hacer:

apt-get install php4-devel

Vamos a la web y descargamos la última versión disponible: link

Lo descomprimimos y entramos al directorio.
tar -xvzf suhosin-0.9.18.tgz
cd suhosin-0.9.18

Ahora ya podemos compilar e instalar la extensión.

phpize
./configure
make
make install

Después de esto solo nos queda configurar el php para que haga uso de la extensión:
nano -w /etc/php4/apache2/php.ini ( en el caso de debian )
nano -w /etc/php.ini ( en el caso de RedHat y Fedora )

Y en la sección de Extensiones dinámicas pondremos:
extension=suhosin.so
suhosin.mail.protect = 2

Para comprobar si está bien instalado, haremos:
php -i -c /etc/php4/apache2/php.ini | grep suhosin.mail.protect ( En debian )
php -i -c /etc/php.ini | grep suhosin.mail.protect ( En fedora )

Si sale:
suhosin.mail.protect => 2 => 2

Entonces ya tenemos todo funcionando y podremos reiniciar el apache para que se apliquen los cambios.

Comentar que la extensión tiene 3 niveles de protección explicados aquí . Así como opciones para poder hacer logs.

La extensión tiene muchas más utilidades pero nosotros vamos a utilizar de moment solo esa, teneís un listado completo en:
http://www.hardened-php.net/suhosin/a_feature_list.html

Espero que a alguien le sirva esto de ayuda.