Instalar imapsync en debian 11

Seguimos con temas de correo. Una de las herramientas que uso para migrar buzones de un servidor a otro es imapsync. Vamos a verlo como lo instalamos.

He usado este manual de clouding.io. Al ejecutar el proceso he descubierto una cosa que me ha encantado! normalmente para concatenar comandos de terminal uso &&, he visto que también es posible usar ;!!! me ha gustado esta! :D

Vamos a ver como lo instalamos

Dependencias

root@imapsync:~# apt update && apt install -y libtest-simple-perl libtest-requires-perl libtest-mock-guard-perl libtest-fatal-perl libpar-packer-perl libnet-ssleay-perl libio-compress-perl libdigest-hmac-perl libcrypt-ssleay-perl libssl-dev libauthen-ntlm-perl libclass-load-perl libcgi-pm-perl libcrypt-openssl-rsa-perl libdata-uniqid-perl libencode-imaputf7-perl libfile-copy-recursive-perl libfile-tail-perl libio-socket-inet6-perl libio-socket-ssl-perl libio-tee-perl libhtml-parser-perl libjson-webtoken-perl libmail-imapclient-perl libparse-recdescent-perl libmodule-scandeps-perl libreadonly-perl libregexp-common-perl libsys-meminfo-perl libterm-readkey-perl libtest-mockobject-perl libtest-pod-perl libunicode-string-perl liburi-perl libwww-perl libtest-nowarnings-perl libtest-deep-perl libtest-warn-perl make cpanminus git rcs gcc libproc-processtable-perl

Otra dependencia que me he encontrado que ha pedido instalar (donde he descubierto lo del ;)

root@imapsync:~# apt-get install apt-file; apt-file update

Configurar módulos

Ahora vamos a configurar algunos módulos que serán necesarios para hacer funcionar imapsync

root@imapsync:~# cpanm Crypt::OpenSSL::RSA Crypt::OpenSSL::Random --force
root@imapsync:~# cpanm Mail::IMAPClient JSON::WebToken Test::MockObject Dist::CheckConflicts
root@imapsync:~# cpanm Unicode::String Data::Uniqid --force
root@imapsync:~# cpanm Mail::IMAPClient IO::Socket::SSL

Instalar imapsync

Ahora para instalarlo, vamos a clonar el repositorio e instalaremos el programa

root@imapsync:~# cd /opt && git clone https://github.com/imapsync/imapsync.git
root@imapsync:~# cd imapsync && make install

Si todo está correcto, copiamos el binario en el directorio de binarios

root@imapsync:~# cp imapsync /usr/bin/imapsync

Para comprobar que el programa se ha instalado correctamente usamos:

root@imapsync:~# imapsync --testslive

Usar imapsync

Cuando migramos un servidor de correo, tenemos el servidor antiguo …

Roundcube: cambiar color skin elastic

Hoy he instalado un roundcube y para hacérmelo más fácil he seguido éste post que hice hace un par de añitos (Gracias Blackhold del pasado por este post!).

Con la versión instalada hoy no me funcionaba el tema larry, así que me he quedado con el tema que viene por defecto, elastic. Al poner el logo, el azul de larry quedaba horrorosamente feo, así que he avanzado un poquito más con la personalización de roundcube. Buscando he llegado a este hilo del foro de roundcube. Decían de modificar el fichero styles.less y compilar los css (¿mande?)

Os lo cuento:

Para cambiar el color del botón de login he tenido que modificar el fichero skins/elastic/styles/styles.less y añadir lo siguiente

#login-form button.mainaction {
  background-color: #8a77b0;
  border-color: #123456;

  &:hover {
    background-color: #123456;
  }
}

Para cambiar el color global, por defecto azul claro, el otro fichero que es necesario modificar es skins/elastic/styles/colors.less y definir en @color-main el color que nos interese, en mi caso:

@color-main:                #8a77b0;

A continuación, para generar el css es necesario instalar el paquete “node-less”:

# apt -y install node-less

Y finalmente ejecutar lo siguiente para aplicar los cambios en los ficheros .less

lessc styles.less styles.min.css

Y ahora ya tienes el roundcube con el color que se adecue a tu empresa o la de tu cliente :)…

Saltando bloqueos de los ISP: HAProxy y autossh

¡Este último mes podríamos decir que he estado muy entretenida! Hace ya casi dos años, un cliente vino a mi harto de que los proveedores de hosting le cerrasen el servidor, durante todo este tiempo de maravilla, hasta que hace un mes y medio Movistar y Vodafone bloquearon el dominio. Ahí es cuando el cliente me contactó de nuevo para realizar un análisis y un informe pericial. El motivo es que el cliente no está realizando ningún acto delictivo que lleve a los proveedores de hosting e ISP a bloquear el servicio, aún así, lo hacen, estamos delante de un caso de Internet Blackout, bloqueo interesado de un servicio en concreto para que los usuarios no puedan acceder a él. ¿Algo ha tenido que ver el recién finalizado y polémico Mundial de Fútbol en Qatar?.

En la fecha del bloqueo del dominio del cliente, mi propuesta al identificar que el bloqueo se estaba realizando a nivel de dominio (que no de DNS, ya que estos si resolvían), le propuse al cliente de registrar otro dominio. La solución funcionó durante 2 semanas más hasta que Movistar y Vodafone bloquearon la dirección IP, como tal, la solución de añadir mas dominios apuntando al servidor, ya no era útil. Por mas INRI, el bloqueo se extendió a más ISP, aislando casi por completo el servidor de Internet (y no sólo en España, otros países de Europa y LatinoAmérica se vieron afectados), pero no todos lo bloquearon!

A partir de aquí se empezó a …

Crear USB Windows 11 con Debian 11

Primero, me da verguenza tener que instalar un windows, pero para un trabajo lo necesito.
Segundo, no dispongo de ningún otro windows para crear el instalable por USB de Windows 11.
Conclusión: Problemas

Así que vamos a ver que he hecho, que tenemos que tener en cuenta y que problemas me he encontrado.

Para crear un USB para instalar Windows, es necesario que este esté en formato FAT32, si algo sabes de sistemas de archivo, el tamaño máximo para los ficheros de FAT32 es de 4Gb, pero en la ISO de Windows 11, hay un ficherito de marras llamado install.wim que pesa exactamente 4.8Gb.

Mi primera opción ha sido usar el comando dd para tostar la ISO al pincho USB. Nada. Lo he probado primero sobre /dev/sdb y nada, lo segundo sobre /dev/sdb1 y tampoco.

La segunda ha sido usar unetbootin y tampoco. He probado de formatear el pincho USB en fat32, en exFAT y NTFS y nada. El problema es que el fichero install.wim no se pasa completamente al pesar mas de 4Gb.

Así que la solución ha pasado por usb el paquete de ubuntu mkusb.

Para ello añadiremos los sources de ubuntu

# vi /etc/apt/sources.list
deb http://ppa.launchpad.net/mkusb/ppa/ubuntu focal main

# apt-key adv --keyserver keyserver.ubuntu.com --recv 54B8C8AC
# apt update
# apt -y install mkusb sudo
$ sudo mkusb

En debian el root no está configurado para cargar aplicaciones gráficas, para ejecutar un comando como root, será necesario usar el comando sudo.

Seguiremos las instrucciones tal como indica esta …

Nextcloud: definir quota de usuario por CLI con occ

En uno de los nextcloud que administro, tras unos meses de uso el usuario evidentemente quiere mas espacio. En su momento les definí 1Tb cuando la capacidad total del disco es de 2Tb. Ni idea de porqué lo hice así, hoy me he encontrado de nuevo el porqué, y es que no ha habido forma humana para definir en el interfaz web una quota de usuario de 1,5Tb, ni poniendo 1500Gb, ni con espacio, ni sin ni la madre que lo parió. Así que otra forma de hacerlo es mediante el uso del comando occ.

La forma de definir una quota al usuario entonces sería:

root@***cloud:~# su - www-data -s /bin/bash
www-data@***cloud:~$ cd html/nextcloud
www-data@***cloud:~/html/nextcloud$ chmod +x occ
www-data@***cloud:~/html/nextcloud$ ./occ user:setting admin files quota 1500GB

Para ver si se ha aplicado la quota correctamente

www-data@***cloud:~/html/nextcloud$ ./occ user:info admin
  - user_id: admin
  - display_name: admin
  - email: 
  - cloud_id: admin@cloud.***.***
  - enabled: true
  - groups:
    - admin
  - quota: 1500GB
  - storage:
    - free: 589345344031
    - used: 1021267391969
    - total: 1610612736000
    - relative: 63.41
    - quota: 1610612736000
  - last_seen: 2022-09-15T08:59:09+00:00
  - user_directory: /var/www/nextclouddata/admin
  - backend: Database

Fuente: help.nextcloud.com

Archivar los mails del sistema con chewmail

Al ir actualizando los sistemas a veces te encuentras que paquetes que solías usar han dejado de estar mantenidos y ya no aparecen en los repositorios, es posible que incluso al ejecutar el apt-autoremove se rompan cosas, así que mucho cuidado al ejecutarlo.

El caso que me lleva a hacer este post es con el comando archivemail, que tiene como dependencia python2.x, y en la versión 11.4 de debian el paquete ya no está o vete a saber que ha pasado (juraría que en 11.1 si estaba). Sea lo que sea, archivemail no está en los repositorios y toca buscar alternativa, chewmail.

Para instalarlo

# apt -y install chewmail

Luego en el fichero /etc/crontab tendremos que modificar la línea de la siguiente forma:

# clean mails
#59 23    * * *  root            archivemail -d 7 --delete /var/spool/mail/root
59 23    * * *  root            chewmail --days 7 -o root-old root && rm root-old

Me he peleado un rato con el uso del comando y es obligatorio indicarle el destino de los correos electrónicos archivados (-o root-old), hay una opción que es –delete-immediately pero ni caso, así que concateno al comando el borrar el fichero de mails archivados y listo.…

Desplegando un servidor web con alta capacidad

Aquí estoy lamiéndome las heridas de esta noche pasada. Hace unas semanas un cliente me contactó para preparar para alta capacidad una página web que administra. La página web sirve para hacer las inscripciones a una carrera de motos y el día de las inscripciones aquello se pone a fuego.

Tras un presupuesto super ajustado, el cliente opta por la opción más económica. El resultado? pues tras varios “yaque” (instálame un servidor de correo “yaqueestás”), prisas y cambios a último momento, un aumento considerable del tráfico respeto el año pasado y vete a saber que más, el servidor ha estado super saturado y no ha podido servir todas las peticiones necesarias en tiempo y forma; al menos lo importante, que son las inscripciones, se hicieron y con un bajo porcentaje de fallo.

La aplicación está hecha con zendframework2, ergo php5.6, con configuraciones a fuego en el código de la configuración del servidor, correo, etc. Además la web se encontraba en un servidor CentOS 7.0 (del 2014), con unas configuraciones crípticas, no, lo siguiente. ¿Lo de respetar los directorios según LHFS?, ¡¿pa’qué?!.

Para no tener que tocar la configuración del servidor que estaba funcionando, decidí desplegar la página web en otro servidor en mi humilde infraestructura y realizar primero ahí las pruebas.

El entorno de pruebas
Se montó una maquina virtual lxc con debian 11, con 8Gb de RAM y 2 CPU Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz, en mi humilde infraestructura tengo un cuello de botella pendiente de …

Configurar mutt

Mutt es un cliente de correo electrónico de consola, muy útil por ejemplo para ver los mails que envía el sistema. Es muy básico, pero es de gran utilidad para entender un poco más tus sistemas.

En mi caso me encuentro que necesito analizar un script que se ejecuta cada minuto y para ello necesito ver en el listado de mails la hora y que se me pongan los mails nuevos arriba en lugar de abajo.

Para ello voy a modificar (o crear si no está) el fichero ~/.muttrc con este contenido

#set date_format="%d %b %R"   # 06 May 07:55
set date_format="%F %T"       # 2021-05-06 09:20:03
set index_format="%4C %Z %D %-15.15L (%4l) %s"
set sort_aux = last-date-received
set sort = reverse-threads

Aquí el manual de mutt.…

Proxmox: redireccionar puerto con iptables y preservar la ip

Hace un par de años hice éste post sobre como redireccionar puertos a los contenedores que se encuentran dentro de un proxmox. Esta solución me fué de maravilla hasta que me di cuenta que el servidor nginx que estaba escuchando en los puertos 80 y 443 en lugar de guardar la IP del cliente que se conectaba, aparecía la IP del proxmox, cosa que creaba algunos problemas a la hora de bloquear intentos de acceso, ya que bloqueabas el acceso a todo el mundo… vamos… un pequeño problemilla de nada :P

Hace unos meses me propuse encontrar la solución pero hasta ahora no me ha sido urgente solucionarlo, ya que tengo que configurar otro proxmox con una ip compartida entre varios contenedores, cada uno de ellos con sus servicios y la cosa era mirar como afinaba esto… así que tras unos 4 días de estar rascando, aquí os traigo la solución :)

iptables -A PREROUTING -t nat -i vmbr0 -d 163.172.109.193 -p tcp --dport 443 -j DNAT --to-destination 192.168.1.2:443
iptables -A FORWARD -p tcp -d 192.168.1.2 --dport 443 -j ACCEPT
iptables -A FORWARD -i vmbr1 -j ACCEPT
iptables -A FORWARD -i vmbr0 -o vmbr1 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i vmbr1 -o vmbr0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -o vmbr0 -j MASQUERADE

– La primera regla de PREROUTING, los paquetes entran por la interfaz vmbr0 des de la ip 163.172.109.193, que es la ip pública del servidor. Mandamos todo el …

Thinkpad no suspende con debian 11

Toda la instalación de debian 11 en mi thinkpad yoga 260, perfecta, solo un problema que ya me encontré el otro día con una thinkpad T460 que le vendí a un cliente; tras suspender el portátil al cerrar la tapa, este no vuelve a levantar una vez abierta de nuevo y se tiene que tirar de botonazo.