Cpanel & WHM
Tips sobre problemas comunes
- Problemas para acceder a Roundcube - Redirección login
- cPanel - Acceso al terminal (shell) via cPanel de usuario
- Problemas con el uso de redes mixtas en cPanel
- all hosts for 'example.es' have been failing for a long time (and retry time not reached)
- Como instalar Snapd en CentOs 7
- Instalar redis / phpredis con control de estado en cPanel
- Composer 1 y Composer 2 en la misma máquina cPanel
- Cambiar el public_html del dominio principal en cPanel
- Error con WP-CLI en el shell con cPanel - PHP Fatal error: Allowed memory size of bytes exhausted
- Database Error Connection Failed - RoundCube cPanel con error 500 o página blanca
- Webmail. Pagina en blanco o error 500.
- Análisis de procesos en PHP-FPM cPanel
- Servidor PowerDNS no arranca por error en named.conf
- Cómo añadir una entrada SPF a todos los dominios de un servidor cPanel nueva
- Problemas con las renovaciones y altas de certificados AutoSSL cPanel (powered by Sectigo)
- Lista de includes en backups especiales de WHM/cPanel
- Conocer versiones usadas en php via API
- Jetbackup
- Api
- Smartroute para destinatarios que nos tienen baneados, en cPanel con Exim
- Exim. Eliminar la cola de correo (un correo o todos)
- DKIM para el propio nombre del host o correo del servidor
- Buscando accesos raros a una cuenta de correo en los logs de cPanel
- El usuario no ve lo correos en su programa o en webmail (cPanel)
- Rutas Específicas o smarthost complejo para Exim y cPanel
Problemas para acceder a Roundcube - Redirección login
Introducción
Algunas veces RoundCube no permite a los usuarios, incluidos los administradores, el acceso a su webmail.
Síntomas
Muestra los síntomas de inicio de sesión fallidos o una redirección constante a la página de inicio de sesión si accede desde cPanel.
Corrección
Debemos posicionarnos en la carpeta de usuario
cd /home/<user>/etc/dominio
Recuperación de la copia de seguridad
Podemos restaurar a una versión anterior que hayamos obtenido de las copias de seguridad. Esta es la mejor opción ya que de esta forma no perderemos los datos que esa base de datos tuviera.
Restaurar la copia de seguridad de <correo_pop>.rcube.db en cd /home/
Reconstrucción del fichero de datos
- Cambie el nombre del archivo <correo_pop>.rcube.db a <correo_pop>.rcube.db.bak
- Cambie el nombre del fichero <correo_pop>.rcube.db.<numero_de_marca> más reciente a <correo_pop>.rcube.db
Enlaces y agradecimientos
Palabras clave
roundcube, webmail, problemas de acceso a roundcube, roundcube redirecciona vuelve al login, no puedo logearme
Aviso
Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris
Si necesitas soporte profesional puedes contratar con Castris soporte profesional.
cPanel - Acceso al terminal (shell) via cPanel de usuario
Introducción
El acceso a SSH es algo necesario o cuando menos, mucho más eficaz para un usuario de hosting, que andar a golpes con el servidor FTP. Cierto es que muchos, por no decir casi todos los proveedores de alojamiento web, no permiten el acceso vía SSH al servidor.
Muchos aducen un problema de seguridad, cuando en realidad los problemas de seguridad son más importante en otras áreas del sistema, mucho más descuidadas que permitir un acceso a la consola shell, la cual puede ser monitorizada y fiscalizada con eficacia, siempre que el administrador de los sistemas de la empresa, esté cualificado para trabajar con sistemas y no con paneles de control solamente
Acceso a terminal (shell) para usuarios de cPanel
Si tu proveedor lo ha activado, desde cPanel puedes acceder al shell de tu cuenta para hacer múltiples operaciones: Visualizar en tiempo real los logs de error Editar ficheros de configuración o ficheros que necesitan cambios Verificar o cambiar permisos de ficheros y directorios Copias de seguridad de ficheros (rsync) o mysql ultra rápidas Creación de snapshots de tu sitio antes de hacer un upgrade
Por favor, cuando leas en internet que alguien te dice que necesitas permisos 777 ó 666, como norma general cierra la pestaña del navegador y busca ayuda en otro artículo. Suele ser la información de un #copypaster. (copiar y Pegar)
Hosting con acceso a terminal o SSH
Si tu proveedor de hosting no te deja acceder vía SSH o no te da acceso al terminal, planteate un cambio. En castris te ofrecemos ambas posibilidades.
Aviso
Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris
Si necesitas soporte profesional puedes contratar con Castris soporte profesional.
Problemas con el uso de redes mixtas en cPanel
Introducción
Alguna vez por necesidades o por estrategias de red o administración de sistemas, es necesario usar redes mixtas en un mismo servidor.
En mi caso uso dos redes para los VPS de cPanel por estrategia de migración en caliente usando una IP primaria que uso exclusivamente para el host, pero no para las cuentas shared (compartidas) o con ip propia, para las que uso una red diferenciada.
Si estas dos redes tienen una diferente máscara de red, cpanel a veces se hace un lío en su gestión de ips alias, /etc/ips
asignando un gateway incorrecto, por lo que la comunicación entre servidores con el mismo concepto de red, es imposible, ya que las rutas no están bien definidas
Este artículo es única y exclusivamente a nivel de operaciones de red, para cPanel que tiene su propio sistema de ip alias, [Add a New IP Address](https://docs.cpanel.net/whm/ip-functions/add-a-new-ip-address/)
Síntomas
Un de ellos es el correo ya que los dominios de ambos servidores, tiene definidos como servidor remoto la IP shared (red B) en lugar de la IP de la interfaz de red primaria (red A)
La red A es una red /26 y la red B es una /27
Comprobamos que la red no tiene acceso aunque si lo tenemos a la interfaz primaria
$ telnet IP.RED.X.B 25
Trying 178.32.236.135...
Visualizamos la ruta o el fichero de ips /etc/ips
IP.RED.X.B:255.255.255.OCTETO:178.32.236.GATEWAY
Si observamos la Ip del gateway es incorrecta, ya que en realidad por lo que sea cpanel ha calculado el gateway para la red de la primaria, por lo que la tabla de rutas que crea el sistema de cpanel al activar (levantar) la red con su servicio ipaliases es incorrecta para la comunicación entre estas IPs.
Solución
Se trata de asignar de forma correcta en el fichero /etc/ips
la ip adecuada a nuestra red B y reiniciar la red y el sistema de alias de cPanel
Mi consejo es que estas cosas siempre las hagas en un terminal multiplexado **(screen)**
service network restart && service ipaliases restart
Enlaces
Aviso
Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris
Si necesitas soporte profesional puedes contratar con Castris soporte profesional.
all hosts for 'example.es' have been failing for a long time (and retry time not reached)
Introducción
A veces ocurren errores de comunicación muy continuados entre nuestros servidor cpanel y otro servidor, y cuando lo arreglamos, y ya estamos en disposición de enviar correos de nuestro servidor al otro, ocurre que obtenemos ese error
all hosts for 'example.tld' have been failing for a long time (and retry time not reached)
También puede ocurrir que nuestro cliente reclame que el administrador del otro servidor indique que nuestro servidor le rechaza. Y el 99% de los casos en una empresa de hosting, el administrador remoto, insistirá y golpeara el teclado en vez de analizar el problema usando un simple telnet. Recuerdale este tip
Prueba de trabajo
Primero verificaremos que la comunicación con el servidor de correo es correcta
telnet IP.XXX.XXX.XXX 25
Trying IP.XXX.XXX.XXX...
Connected to IP.XXX.XXX.XXX
Escape character is '^]'.
220-serXXXX.YYYYYYY.com ESMTP Exim 4.94.2 #2 Wed, 14 Jul 2021 11:10:24 +0200
220-We do not authorize the use of this system to transport unsolicited,
220 and/or bulk e-mail.
Pero sigue dándonos el error nuestro servidor exim
all hosts for 'example.tld' have been failing for a long time (and retry time not reached)
Solución
Debemos eliminar las entradas de la base de datos de exim para los reenvios, los rechazos y los servidor en espera
# /usr/sbin/exim_tidydb -t 0d /var/spool/exim retry > /dev/null
# /usr/sbin/exim_tidydb -t 0d /var/spool/exim reject > /dev/null
# /usr/sbin/exim_tidydb -t 0d /var/spool/exim wait-remote_smtp > /dev/null
# /scripts/restartsrv_exim
Tras estas acciones el problema debería quedar resuelto.
Enlaces
all hosts for domain.ca have been failing for a long time (and retry time not reached)
Aviso
Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris
Si necesitas soporte profesional puedes contratar con Castris soporte profesional.
Como instalar Snapd en CentOs 7
Introducción
Snapd es un sistema universal de gestión de paquetes creado por Canonical (Ubuntu), que usa un formato de archivo llamado snap que se monta como un sistema de archivos comprimidos basado en el formato squashfs, montado dinámicamente en el sistema operativo host.
Sin embargo su instalación en centos 7 ó 8, no está exenta de problemas que requieren algún tip..
Instalación
La instalación habitual de snap es sencilla, pero en CentOs se requiere la instalación del repositorio EPEL.
Si por cualquier casual estás usando un servidor cPanel, instalar el repositorio EPEL, tiene sus peculiaridad en cPanel si no quieres tener problemas posteriores, entre ellas que deberías desactivar por defecto el repositorio epel. Consultar el artículo enlazado.
[root@centos7 ~]# yum --enablerepo=epel install -y snapd
…
Instalado:
snapd.x86_64 0:2.51-1.el7
¡Listo!
Una vez instalado, el manejador de servicios systemd necesita activar el sistema de comunicación por sockets.
[root@centos7 ~]# systemctl enable --now snapd.socket
Created symlink from /etc/systemd/system/sockets.target.wants/snapd.socket to /usr/lib/systemd/system/snapd.socket.
Después para activar el soporte del snap clásico, deberemos crear el enlace simbólico entre /var/lib/snapd/snap
y /snap
[root@centos7 ~]# ln -s /var/lib/snapd/snap /snap
Otros enlaces
Especificaciones sobre root y sudo
En esta y otras muchas entradas de esta wiki, no se actúa como usuario, sobre todo cuando no se trata de cuestiones como compilar paquetes, programas, ya que mi preferencia es trabajar como root salvo cuando por cuestiones de seguridad como las anteriores descritas si lo aconsejen, por lo que las entradas no tiene el uso de sudo
Aviso
Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris
Si necesitas soporte profesional puedes contratar con Castris soporte profesional.
Instalar redis / phpredis con control de estado en cPanel
Introducción
Redis es para mi una de las mejores soluciones básicas para el caché de aplicaciones y sobre todo para la gestión de colas es Redis. Es perfecto para Wordpress, Prestashop, Laravel, Symfony, e imprescindible para Magento.
En este doc te explico en pocos pasos cómo instalar Redis para tus aplicaciones web en un entorno de cPanel CentOs.
Instalación redis en CentOs (cPanel)
Debemos instalar epel, y al ser un sistema con el intrusivo panel de control cPanel deberemos deshabilitar el repositorio, so pena de tener problemas en el futuro.
Cuando nos pregunte pecl por las opciones es recomendable usar igbinary y la compresión lzf
# yum install epel-release
# grep -q '^enabled' /etc/yum.repos.d/epel.repo && sed -i 's/^enabled.*/enabled=0/' /etc/yum.repos.d/epel.repo || echo 'enable=0' >> /etc/yum.repos.d/epel.repo
# yum install --enablerepo=epel redis
# systemctl enable redis
# systemctl start redis
# /opt/cpanel/ea-php80/root/usr/bin/pecl install igbinary igbinary-devel redis # ea-php80 para php 8.0, Deberás repetir para cada versión php instalada
/opt/cpanel/ea-php80/root/usr/bin/pecl install igbinary igbinary-devel redis
Ignoring installed package pecl/igbinary
Ignoring installed package pecl/igbinary
WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update
downloading redis-5.3.4.tgz ...
Starting to download redis-5.3.4.tgz (268,154 bytes)
........................................................done: 268,154 bytes
29 source files, building
running: phpize
Configuring for:
PHP Api Version: 20200930
Zend Module Api No: 20200930
Zend Extension Api No: 420200930
enable igbinary serializer support? [no] : yes
enable lzf compression support? [no] : yes
enable zstd compression support? [no] : no
Script de control de estado
Como norma general, Redis en un entorno fuerte con memoria abundante y de calidad (ECC) no suele tener ningún problema. En caso de no estar trabajando en un entorno HA (High Availability) mediante un cluster de redis, es más que bueno y necesario tener un monitor que controle la salud de nuestro servicio.
#!/bin/sh
active=$(redis-cli ping) # redis sin contraseña
# Si usamos protección por contraseña
# active=$(redis-cli -a +S62tFFXqTXhAQ1Y2X1PxUQNJASHSHSHFu4aS5iBZiCQfCz4wp6hrpCc62vNLlKXE3LPsJxBIgM6 ping)
hostname=$(hostname -f)
if [ "$active" != "PONG" ]; then
echo "Redis ${hostname} down" | mail -s "Redis ${hostname} down" monitor@myemail.com
systemctl restart redis
fi
Damos permisos de ejecucion 700 y añadimos al crontab de root
* * * * * /usr/local/bin/redischeck.sh > /dev/null 2>&1
Tips sobre la configuración
WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128
Editar el fichero chmod +x /etc/rc.d/rc.local
# Añadir
sysctl -w net.core.somaxconn=65535
Ejecutar
chmod +x /etc/rc.d/rc.local
WARNING overcommit_memory is set to 0!
nano /etc/sysctl.conf
vm.overcommit_memory = 1
WARNING you have Transparent Huge Pages (THP) support enabled in your kernel
echo never > /sys/kernel/mm/transparent_hugepage/enabled
Editar tambien /etc/rc.d/rc.local
echo never > /sys/kernel/mm/transparent_hugepage/enabled
Redis 6.2 con control ACL
Editado 2023-05-10
Laversion actual ya no es la 6.2. He optado por ir a la última estable.
yum install systemd-devel
cd /usr/local/src
# https://redis.io/download
wget https://download.redis.io/redis-stable.tar.gz
tar xvfz redis-stable.tar.gz
cd redis-stable
make
make test
make install
groupadd redis
adduser --system -g redis --no-create-home redis
mkdir -p /var/lib/redis
chown redis: /var/lib/redis
chmod 770 /var/lib/redis
mkdir /etc/redis
cp /usr/local/src/redis-stable/redis.conf /etc/redis/
mkdir /var/run/redis
chown redis: /var/run/redis
Editamos el ficheor de configruacion
supervised systemd
unixsocket /var/run/redis/redis.sock
unixsocketperm 770
port 0
Creamos el fichero system /etc/systemd/system/redis.service
[Unit]
Description=Redis Data Store
After=network.target
[Service]
User=redis
Group=redis
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always
[Install]
WantedBy=multi-user.target
Activamos y arrancamos
systemctl enable redis
systemctl start redis
systemctl status redis
Notas sobre Ubuntu
Los cambios a realziar para la configuracion del sistema se realizan en el fichero /etc/sysctl.conf
Aviso
Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris
Si necesitas soporte profesional puedes contratar con Castris soporte profesional.
Composer 1 y Composer 2 en la misma máquina cPanel
Introducción
Algunas veces trabajamos con proyectos que no son nuestro y que están muy obsoletos y no nos pagan por actualizarlos y para actualizar los paquetes del proyecto con composer tenemos que usar composer version 1.
La mejor y más rápida solución es tener instalados las dos versiones de composer en nuestra máquina.
Este tip es válido para cPanel aunque con otros ajustes es válido para máquinas sin cPanel
Instalar la versión de composer 1 junto a composer 2
# wget -O /opt/cpanel/composer/bin/composer1 https://getcomposer.org/composer-1.phar
--2021-11-15 11:20:22-- https://getcomposer.org/composer-1.phar
Resolviendo getcomposer.org (getcomposer.org)... 54.36.53.46, 2001:41d0:302:1100::8:104f
Conectando con getcomposer.org (getcomposer.org)[54.36.53.46]:443... conectado.
Petición HTTP enviada, esperando respuesta... 200 OK
Longitud: 1982164 (1,9M) [application/octet-stream]
Grabando a: “/opt/cpanel/composer/bin/composer1”
# chmod a+x /opt/cpanel/composer/bin/composer1
Uso composer1
$ composer1 -v
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
Composer version 1.10.23 2021-10-05 09:44:27
Usage:
command [options] [arguments]
Notas de seguridad
No incluye la verificación del hash md5 del archivo descargado, lo cual es a elección del administrador.
Aviso
Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris
Si necesitas soporte profesional puedes contratar con Castris soporte profesional.
Cambiar el public_html del dominio principal en cPanel
Introducción
Aunque todo se puede hacer vía .htaccess, no soy partidario de esto. Estoy más acostumbrado a Nginx, y por otro lado cuanto menos se complique .htaccess mejor será la respuesta FRT (First Time Response) mejor.
Así que prefiero adecuar el sitio a un formato via configuración de Apache. Pero cPanel es un panel altamente intrusivo que te obliga a respetar sus formas, más con Apache.
Modificación de los ficheros userdata del usuario y dominio
/var/cpanel/userdata/usuario/dominio.principal.tld
---
customlog:
-
format: combined
target: /etc/apache2/logs/domlogs/dominio.principal.tld
-
format: "\"%{%s}t %I .\\n%{%s}t %O .\""
target: /etc/apache2/logs/domlogs/dominio.principal.tld-bytes_log
documentroot: /home/usuario/public_html/public
group: usuario
hascgi: 0
homedir: /home/usuario
ip: 87.98.230.68
owner: root
phpopenbasedirprotect: 1
port: 80
scriptalias:
-
path: /home/usuario/public_html/public/cgi-bin
url: /cgi-bin/
serveradmin: webmaster@dominio.principal.tld
serveralias: mail.dominio.principal.tld www.dominio.principal.tld
servername: dominio.principal.tld
usecanonicalname: 'Off'
user: usuario
dominio.principal.tld_SSL
---
documentroot: /home/usuario/public_html
group: usuario
hascgi: 0
homedir: /home/usuario
ip: 87.98.230.68
ipv6: ~
owner: root
phpopenbasedirprotect: ~
port: 443
secruleengineoff: ~
serveradmin: webmaster@dominio.principal.tld
serveralias: mail.dominio.principal.tld www.dominio.principal.tld
servername: dominio.principal.tld
ssl: 1
usecanonicalname: 'Off'
user: usuario
userdirprotect: ''
Eliminar los ficheros de caché
rm -vf /var/cpanel/userdata/username/*.cache
Actualizar Apache via WHM
# /scripts/updateuserdatacache
# /scripts/rebuildhttpdconf
Modificación de PHP-FPM
Si usamos php-fpm, que es lo mejor para un hosting, hay que hacer un paso más qué es modificar el path en php-fpm para el usuario editando el fichero `/var/cpanel/userdata/USER/DOMAIN.php-fpm.yaml
php_admin_value_doc_root: { name: 'php_admin_value[doc_root]', value: /home/USER/NEW/DOCUMENT/ROOT }
Una vez modificado (imagino que habrás sustituido USER, DOMAIN y NEW/DOCUMENT/ROOT por sus valores adecuados hay que reconstruir los ficheros de php-fpm y hacer un restart de php-fpm
/scripts/php_fpm_config --rebuild
/scripts/restartsrv_apache_php_fpm
Enlaces
- How to change the document root for a cPanel account
- How to update the PHP-FPM document root for the primary domain
Aviso
Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris
Si necesitas soporte profesional puedes contratar con Castris soporte profesional.
Error con WP-CLI en el shell con cPanel - PHP Fatal error: Allowed memory size of bytes exhausted
Escenario
Intentas instalar o ejecutar con wp-cli una instalación y te das de bruces con un problema de memoria, y lo único que se les ocurre a los “expertos” de cpqanel es replicar que cambies la memoria en tu panel, cuando la cuestion es el PHP en modo cli, y no en modo PHP-FPM.
Log del error
[12-May-2022 06:07:40 UTC] PHP Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 36864 bytes) in phar:///usr/local/bin/wp/vendor/wp-cli/wp-cli/php/WP_CLI/Extractor.php on line 100
Tienes una solución.
Editar el comando
$ php -d memory_limit=512M "$(which wp)" core download --locale=es_ES
Downloading WordPress 5.9.3 (es_ES)...
md5 hash verified: b7e70ab7cd8749ae5f5a5a3c63772117
Success: WordPress downloaded.
Aviso
Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris
Si necesitas soporte profesional puedes contratar con Castris soporte profesional.
Database Error Connection Failed - RoundCube cPanel con error 500 o página blanca
A veces un sólo usuario de una cuenta cpanel tiene un problema con el acceso a su Roundcube, teniendo un error 500 y al hacer reload un mensaje con Database Error Connectio Failed
Una de las posibles causas es la corrupción del fichero .rcube.db de la cuenta de correo afectada.
Solución
Mover el fichero y dejar que Rouncube regenere el fichero.
mv /home/<user>/etc/<dominio.tld>/<cuenta_correo>.rcube.db /home/<user>/etc/<dominio.tld>/<cuenta_correo>.rcube.db.bak2
Aviso
Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como esta, sin que ello implique ningún obligación ni responsabilidad por parte de Castris
Si necesitas soporte profesional puedes contratar con Castris soporte profesional.
Webmail. Pagina en blanco o error 500.
Introducción
Muchos de los problemas derivados de webmail de cPanel vienen de la mano de corrupciones de los ficheros sqlite que tiene como uso ser la base de datos de cada cuenta.
No siempre, poero este es un buen punto de partida.
Remover el fichero dañado
- /home/<cpanel_user>/etc/
/
Análisis de procesos en PHP-FPM cPanel
Introducción
Lo de PHP-FPM a veces es mas complejo de lo que parece. Funciona bien pero da quebraderos de cabeza. El post original es muy bueno para trabajar con el.
How to review PHP-FPM processes per account
Ver procesos de un usuario
cPusername=user_cpanel
ps -f -U $cPusername |grep "[p]hp-fpm"
ps -f -U $cPusername |grep "[p]hp-fpm"
mysite 3353 15248 2 09:28 ? 00:00:00 php-fpm: pool mysite_net
mysite 26746 15248 4 09:25 ? 00:00:08 php-fpm: pool mysite_net
mysite 27163 15248 3 09:26 ? 00:00:05 php-fpm: pool mysite_net
Contarlos
ps -f -U $cPusername|grep -c "[p]hp-fpm"
3
Ver los procesos de todas las cuentas
for user in `cat /etc/trueuserdomains|awk '{print $2}'`;
do printf "User $user PHP-FPM processes:\n\n";
ps -f -U $user -u $user|grep "[p]hp-fpm";done
Contarlos
for user in `cat /etc/trueuserdomains|awk '{print $2}'`;
do printf "User $user PHP-FPM processes: ";
ps -f -U $user -u $user|grep -c "[p]hp-fpm";done
Links
Otro docuemtno muy interante es PHP-FPM Performance Tuning Basics
Aviso
Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris
Si necesitas soporte profesional puedes contratar con Castris soporte profesional.
Servidor PowerDNS no arranca por error en named.conf
Introducción
PowerDNS es una solución bastante aceptable como servidor DNS para entornos empresariales. Su uso por parte de cpanel no está exento de problemas. Uno de ellos es que se produzca una avería en el fichero /etc/named.conf
lo cual irremediablemente, dejará apagado nuestro dns y un monto de líneas en el log, confirmando el desastre.
Sep 3 01:00:11 stark pdns_server: PowerDNS Authoritative Server 4.4.1 (C) 2001-2020 PowerDNS.COM BV
Sep 3 01:00:11 stark pdns_server: Using 64-bits mode. Built using gcc 4.8.2 20140120 (Red Hat 4.8.2-16) on Oct 25 2021 16:52:08 by root@bh-centos-7.dev.cpanel.net.
Sep 3 01:00:11 stark pdns_server: PowerDNS comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it according to the terms of the GPL version 2.
Sep 3 01:00:11 stark pdns_server: [webserver] Listening for HTTP requests on 127.0.0.1:953
Sep 3 01:00:11 stark pdns_server: Creating backend connection for TCP
Sep 3 01:00:11 stark systemd: Started PowerDNS Authoritative Server.
Sep 3 01:00:11 stark pdns_server: Error parsing bind configuration: Error in bind configuration '/etc/named.conf' on line 5634: syntax error
Sep 3 01:00:11 stark pdns_server: Caught an exception instantiating a backend: Error in bind configuration '/etc/named.conf' on line 5634: syntax error
Sep 3 01:00:11 stark pdns_server: Cleaning up
Sep 3 01:00:11 stark pdns_server: TCP server is unable to launch backends - will try again when questions come in: Error in bind configuration '/etc/named.conf' on line 5634: syntax error
Sep 3 01:00:11 stark pdns_server: Only asked for 1 backend thread - operating unthreaded
Sep 3 01:00:11 stark pdns_server: Error parsing bind configuration: Error in bind configuration '/etc/named.conf' on line 5634: syntax error
Sep 3 01:00:11 stark pdns_server: Caught an exception instantiating a backend: Error in bind configuration '/etc/named.conf' on line 5634: syntax error
Sep 3 01:00:11 stark pdns_server: Cleaning up
Sep 3 01:00:11 stark pdns_server: Distributor caught fatal exception: Error in bind configuration '/etc/named.conf' on line 5634: syntax error
Sep 3 01:00:11 stark systemd: pdns.service: main process exited, code=exited, status=1/FAILURE
Sep 3 01:00:11 stark systemd: Unit pdns.service entered failed state.
Sep 3 01:00:11 stark systemd: pdns.service failed.
Solución
En el caso de nuestros servidores o los de algunos clientes, en los que usamos una estructura maestro y secundarios en distintas redes, lo necesario será usar el propio script de reparación de cPanel.
Aun así en entorno como miles de entradas DNS (zonas) es más que aconsejable hacer copias regulares (con intensidad adecuada a los cambios en su estructura) por si este script fallará, dada la sensibilidad de los servidores de nombres basados en named, con su fichero de configuración.
mv /etc/named.conf /etc/named.conf.bak
/usr/local/cpanel/scripts/rebuilddnsconfig
/scripts/restartsrv_named
Más información
DNS Functions :: WHM/cPanel PowerDNS :: Documentacion
Aviso
Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris
Si necesitas soporte profesional puedes contratar con Castris soporte profesional.
Cómo añadir una entrada SPF a todos los dominios de un servidor cPanel nueva
Introducción
Cualquiera que tenga la administración de un servidor con cPanel, habrá sufrido en algún momento la dictadura de Microsoft con su patético y cruel sistema de anti-spam, denominado SNDS (Smart Network Data Service).
La entrada de una IP de un servidor de correo en este dichoso sistema, es la antesala de un montón de problemas, comenzando por la poca ética y corresponsabilidad de Microsoft con los administradores de sistemas.
Desde hace años, la mejor salida pasa por tener preparados microservidores con un servidor de correo (recomiendo Postfix) configurados para hacer de smarthost de tal forma que en caso de alcanzar en el punto rojo con el SNDS de Microsoft, podamos sacar el correo a través de dicho smarthost, mientras luchamos contra el gigante y su penoso soporte entre pares.
Despliegue
cPanel tiene esta opción desde hace años integrada en su panel WHM, e incluye una marca (checkbox) para añadir la entrada a las zonas DNS, pero esta nunca me funcionó bien ni es la adecuada a mis necesidades.
Esta actualización es necesaria, ya que de lo contrario cualquier servidor de correo que tenga configurado meridianamente bien su sistema de correo y antispam, rechazará el correo porque las entradas DNS de los dominios, (sobre todo si está DKIM activado) no contendrán respuesta adecuada sobre la IP del smarthost.
Es imperativo añadir la IP o el hostname del servidor smarthost.
Script para añadir la entrada SPF a todos los dominios del servidor
Comando para añadir un FQDN
cat /etc/localdomains | xargs -n 1 /scripts/whoowns | sort | uniq | egrep -v '^$' | xargs -n 1 -I account sh -c 'echo Installing for account...;/usr/local/cpanel/bin/spf_installer account include:_smart.domain.tld echo Done.'
Comando para añadir una IP
cat /etc/localdomains | xargs -n 1 /scripts/whoowns | sort | uniq | egrep -v '^$' | xargs -n 1 -I account sh -c 'echo Installing for account...;
/usr/local/cpanel/bin/spf_installer account +ip4:192.88.99.21; echo Done.'
Enlaces
- Microsoft (Hotmail y otros): como defenderse de sus listas negras con JMRP y SNDS de microsoft
- Hotmail – outlook: error … since part of their network is on our block list
- How to add an SPF entry to all domains on the server
Otro tip para todos las cuentas
How to add an SPF entry to all domains on the server
Añade un hostname
cat /etc/localdomains | xargs -n 1 /scripts/whoowns | sort | uniq | egrep -v '^$' | xargs -n 1 -I account sh -c 'echo Installing for account...;
/usr/local/cpanel/bin/spf_installer account include:example.domain.tld; echo Done.'
Añade una ip
cat /etc/localdomains | xargs -n 1 /scripts/whoowns | sort | uniq | egrep -v '^$' | xargs -n 1 -I account sh -c 'echo Installing for account...;
/usr/local/cpanel/bin/spf_installer account +ip4:192.88.99.21; echo Done.'
Aviso
Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris
Si necesitas soporte profesional puedes contratar con Castris soporte profesional.
Problemas con las renovaciones y altas de certificados AutoSSL cPanel (powered by Sectigo)
Detección de problemas con certificados Free SSL de cPanel
Son sencillos, ya que ni altas de nuevos dominio o subdominios, ni renovaciones funcionan muchas de las veces, pese a que si buscamos en los logs, encontramos que el trabajo fue puesto en cola por estar en un estado “DEFECTIVO” el actual certificado (sin él, caducado, etc).
La cuestión es clara desde hace unos meses (Agosto de 2022) y ha ido a peor. Sectigo no está por la labor, y el nivel de producción de sus cola gratuitas es muy deficitario para la demanda que tiene. Como resultado miles de certificados no se renuevan en tiempo y forma, y los nuevos ya ni siquiera entran en el juego.
Solución: el cambio de proveedor
La solución más adecuada es el cambio de proveedor a Let 's Encrypt aunque tiene algunas peculiaridades como que los certificados del hostname no los genera. Pero creo que quien tiene un servidor dedicado, bien puede gastar unos pocos euros por tener su certificado de pago.
Como cambiar en WHM el proveedor de certificados gratuitos a Let’s Encrypt
Acceder como root al terminal ssh (podemos hacerlo desde WHM si está activado)
Ejecutar /usr/local/cpanel/scripts/install_lets_encrypt_autossl_provider
Volver al navegador a nuestra entrada WHM y navegar a Manage AutoSSL > AutoSSL Providers, seleccionando Let's Encrypt™
Aceptar los Términos de Servicio
Salvar
Esto ya sería suficiente. Si tienes pendientes certificados puedes ganar tiempo ejecutando la herramienta para comprobar a todos los usuarios.
Diferencias
Deberías leer el documento The Let’s Encrypt Plugin
This plugin does not generate hostname certificates for your system’s services. It only generates SSL certificates for your cPanel accounts. For more information, read our Manage AutoSSL documentation.
Aviso
Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris
Si necesitas soporte profesional puedes contratar con Castris soporte profesional.
Lista de includes en backups especiales de WHM/cPanel
Introducción
Los backups de cPanel no son precisamente lo mejor para un administrador. Esta bien para lo justo. Si tienes un sistema, propio o otro que te permita añadir o crear backups de directroios o ficheros especiales esta bienten la lista a mano. Yop me guardo estos, por si acaso.
Lista de directorios y ficheros a incluir en un backup cPanel
/etc/apache2/conf/httpd.conf
/etc/dovecot/sni.conf
/etc/exim.conf
/etc/exim.conf.local
/etc/exim.conf.localopts
/etc/fstab
/etc/group
/etc/ips
/etc/localdomains
/etc/mailips
/etc/manualmx
/etc/master.passwd
/etc/my.cnf
/etc/named.conf
/etc/namedb/named.conf
/etc/passwd
/etc/proftpd.conf
/etc/pure-ftpd.conf
/etc/rc.conf
/etc/remotedomains
/etc/reservedipreasons
/etc/reservedips
/etc/rndc.conf
/etc/secondarymx
/etc/senderverifybypasshosts
/etc/spammeripblocks
/etc/cpanel_exim_system_filter
/etc/global_spamassassin_enable
/etc/spammers
/etc/shadow
/etc/wwwacct.conf
/root
/var/cpanel/greylist/conf
/var/cpanel/greylist/greylist.sqlite
/var/cpanel/mysql/remote_profiles/profiles.json
/etc/ips.remotemail
/etc/ips.remotedns
/etc/valiases
/etc/vdomainaliases
/etc/vfilters
/etc/proftpd
/usr/local/cpanel/3rdparty/mailman
/var/spool/cron
/etc/cpanel
/etc/mail
/etc/namedb
/var/lib/rpm
/var/lib/named/chroot/var/named/master
/var/named
/var/cpanel
/var/cron/tabs
/var/spool/fcron
/var/log/bandwidth
/usr/share/ssl
/etc/pki/tls/certs
/etc/ssl
/var/ssl
/var/cpanel/users
Ojo, esta es una lista recomendada, no completa.
Aviso
Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris
Si necesitas soporte profesional puedes contratar con Castris soporte profesional.
Conocer versiones usadas en php via API
Introducción
A veces necesaitamos saber que sitios web estan usando una versión determinada de PHP. He visto algunos que pretenden que hagas estos con un find buscando en los .htaccess de todo el servidor. ¡Que barbaridad!!!
whmapi
En el shell como root, y ya esta
whmapi1 php_get_vhosts_by_version version=ea-php56
---
data:
vhosts: []
metadata:
command: php_get_vhosts_by_version
reason: OK
result: 1
version: 1
❯ whmapi1 php_get_vhosts_by_version version=ea-php55
---
data:
vhosts:
- formacion.fuentesdecarions.org
metadata:
command: php_get_vhosts_by_version
reason: OK
result: 1
version: 1
Recuerda que whmapi1
tiene la posibilidad de formatear la salida --output=[json|jsonpretty|xml|yaml]
Aviso
Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris
Si necesitas soporte profesional puedes contratar con Castris soporte profesional.
Jetbackup
Las cosas del sistema Jetbackup
Api
La API de cpanel es potente, pero su documentación aunque va mejorando, sigue siendo un poco dificil de encontrar
Añadir DMARC a los dominios con WHM Cpanel API
Introducción
Básicamente se trata de añadir un registro a la zona dns de un dominio
Ya sé que se puede hacer via WHM, pero… imagínate que tienes que hacerlo en TODOS, o una buena parte de los dominios del servidor?
Bien, ese es el caso.
El tip presentado adolece de uno de los problemas más absurdos de la API, en el tema de los DNS. No tiene un control de lo que haces, y por tanto si existe el registro que creas, crea otro. En el caso de los _dmarc es una duplicidad, y aunque no es un error estricto ya se trata de un problema. No es el alcance de este tip0, el incluir la operativa para buscar un registro en una zona dns, si existe eliminar, y después continuar con la inserción actualizada. ;-)
Operativa
El comando en el shell es whmapi1 addzonerecord
Parámetro | tipo | Descripción | Valor | Ejemplo |
---|---|---|---|---|
domain | string | Nombre de la zona dns | El nombre del dominio (sin www, por favor) | example.com |
name | string | Nombre del registro | _dmarc | _dmarc |
class | string | La clase de registro | IN | IN |
ttl | integer | Es el TTL del registro. Desde hace un tiempo para evitar problemas con el validador de zonas DNS de cPanel, debe ser el mismo en todos los registros | TTL representado en segundos | 1800 |
type | string | Tipo de registro | TXT | TXT |
txtdata | text | Al ser un TXT requiere le texto del registro DMARC entre comillas | “v=DMARC1;p=quarantine;sp=quarantine;adkim=s;aspf=s;pct=100;fo=0;rf=afrf;ri=86400;rua=mailto:dmarc@example.com;ruf=mailto:dmarc@example.com" |
Ejemplo
[root@b ~]# whmapi1 addzonerecord domain=example.com name=_dmarc class=IN ttl=1800 type=TXT txtdata="v=DMARC1;p=quarantine;sp=quarantine;adkim=s;aspf=s;pct=100;fo=0;rf=afrf;ri=86400;rua=mailto:dmarc@example.com;ruf=mailto:dmarc@example.com"
Se recomienda la lectura del artículo enlazado para entender las posibilidades
Enlaces
Dmarc, protección frente al pishing, scam, spoofing en cPanel
Aviso
Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris
Si necesitas soporte profesional puedes contratar con Castris soporte profesional.
Smartroute para destinatarios que nos tienen baneados, en cPanel con Exim
##Introducción
Algunas veces, como administradores de sistemas en servidores compartidos, nos encontramos con un destino que nos tiene baneados, bien por sistemas internos o por el uso de listas negras de dudosa reputación, como es el caso de la @policia.es que usa un sistema antispam, algo restrictivo y cuyo canales de comunicación a nivel abuse@, postmaster@ es nulo.
La mejor forma es usar un smarthost, para sacar nuestro correo por él. Pero el método habitual de cPanel, nos redirige todo el correo por el smart, y es algo que no queremos, salvo en contadas ocasiones.
Smarthost por destinatario
Debemos modificar la configuración de exim, usando el Advanced Editor
Backup
Importante como siempre, guardar un backup rápido
Advanced Editor
En la sección ROUTERSTART
policia_smarthost_router:
driver = manualroute
transport = policia_smarthost_transport
route_list = policia.es <smart_host_Fqdn_or_ip>
En la sección TRANSPORTSTART
policia_smarthost_transport:
driver = smtp
hosts_require_tls = *
Con esta configuración, que podemos extender a múltiples destinados y múltiples emisores si queremos aumentar el juego de posibilidad, todo el correo del servidor dirijido a @policia.es será enrutado al smarthost, evitando así su insufrible antispam, mientras tratamos de comunicarnos con sus técnicos.
El resto del correo saldrá por nuestro servidor SMTP.
Si el dominio tiene protección (que debería SPF, DMARC, deberás actualizar el registro SPF para que permita también el relay desde la ip del smarthost.
Enlaces interesantes
- Configure Exim to use a Smarthos
- Forward certain domain emails to Smart Host Algo antiguo pero útil
- How to send email from different domains using different smarthosts
- Help with smarthost setup for using smarthost only for certain domain recipients con varios enlaces organizados.
Aviso
Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris Si necesitas soporte profesional puedes contratar con Castris soporte profesional.
Exim. Eliminar la cola de correo (un correo o todos)
Exim eliminar la cola de correo: ¿Cómo hacerlo fácilmente?
¿Buscas cómo eliminar la cola de correo en Exim?
Exim es un agente de transferencia de correo (MTA) que puede utilizarse como alternativa a Sendmail en sistemas Unix. Es el usado por cPanel entre otros.
La función principal de un MTA es recibir mensajes de diferentes fuentes y entregarlos a sus destinos correspondientes.
Análisis rápido de la cola de correo en Exim
Un servidor de correo, recibe correos electrónicos entrantes y los reenvía a clientes/usuarios de correo.
Exim puede aceptar mensajes de hosts remotos utilizando SMTP sobre TCP/IP, así como de procesos locales.
La cola de correo en Exim
Imprimir la lista de mensjaes en cola
exim -bp
Mostrar el número de correos en cola
Para mostrar el número de correos electrónicos en la cola, utilizamos el comando:
exim -bpc
Contar emails de un usuario
Para contar los correos electrónicos de un remitente en particular, utilizamos el comando:
exim -bp|grep "<"|grep $userName|wc -l
Contar correos usando exiqgrep
exiqgrep -cr $recipientAddress
Otra alternativa con Exim para contra emails
exim -bp|grep $recipientAddress|wc -l
Eliminación de correos en la cola de Exim
A veces es necesario (spam, error de envio, ...) eliminar correos de la cola
Eliminar TODOS los correos de la cola de Exim
exim -bp|grep "<"|awk {'print $3'}|xargs exim -Mrm
o su alterntiva
exim -bp | awk '/^ *[0-9]+[mhd]/{print "exim -Mrm " $3}' | bash
En este método, el comando 'exim -bp' se utiliza para obtener el ID del mensaje de la cola de correo de Exim.
Luego, eliminamos el correo correspondiente de la cola utilizando el comando 'exim -Mrm' como argumento.
También utilizamos el comando 'exiqgrep' para eliminar la cola de correo.
exiqgrep -i | xargs exim -Mrm
Además, para eliminar un mensaje específico de la cola, utilizamos el siguiente comando:
exim -Mrm {ID-del-mensaje}
De manera similar, para eliminar todos los correos electrónicos de un usuario específico de la cola, utilizamos el siguiente comando:
Editado y corregido 16/09/2024
exiqgrep -i -f $usuario | xargs exim -Mrm
exiqgrep -i -f "$userName" | xargs -n1 exim -Mrm
También, para eliminar todos los mensajes congelados, utilizamos los siguientes comandos:
exiqgrep -z -i | xargs exim -Mrm
Con estos comandos, podemos realizar diferentes operaciones de eliminación en la cola de correo de Exim para nuestros clientes.
Conclusión
En resumen, hemos revisado cómo verificar la cola de correo utilizando comandos de Exim. Sin embargo dejame que te diga que hay plugin muy bueno para la gestiond e colas de Exim en cpanel, como puede ser ConfigServer Mail Queues - cmq
Aviso
Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris
Si necesitas soporte profesional puedes contratar con Castris soporte profesional.
DKIM para el propio nombre del host o correo del servidor
DKIM for main server hostname
Introducción
Se detecta que en determinados casos (se suponía arreglado hace uno 5 años) cPanel no crea la entrada adecuada en el registro DNS de un hostname que coincide con el dominio principal de un servidor VPS.
Si este dominio tiene DKIM activado (que debería) los email enviados por cPanel (como nobody) fallarán si el receptor tiene en u servidor habilitado el DKMI fail.
Solución
Crear o añadir al fichero /var/cpanel/users/nobody
DNS=hostname.domain.com
hostname.domain.com es claro que hay que sustituirlo por el real.
Y entonces ejecutar /usr/local/cpanel/bin/dkim_keys_install nobody
Notas
Ahora que la empresa propietaria de cPanel sigue subiendo los precios, y ya no da soporte a las licencias compradas a sus revendedores y que estos se hacen los locos, cada día es más importante tener una base de conocimiento, frente a los mil problemas que este panel tiene.
Aviso
Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris
Si necesitas soporte profesional puedes contratar con Castris soporte profesional.
Buscando accesos raros a una cuenta de correo en los logs de cPanel
Introducción
Algunas veces se hace necesario revisar los logs para investigar problemas reportados en tickets de "no me llegan los correos".
Muchas veces son filtros de correo mal implementados, pero otras veces son signos de que la cuenta está hackeada.
Una cosa que no entienden los usuarios es que un exploit que permita acceso al atacante para inyectar un mini shell o una utilidad de administración de archivos, le da al atacante acceso a ciertas cosas de su cuenta.
Asi que haremos uso intensio de grep,
awk`y otros comandos de shell.
Busqueda de accesos en el correo
{ grep -Ei "login:" /var/log/maillog | awk '{print $1 " " $2 " " $3 " " $10 " " $8 }' | sed 's/rip=//g;s/,//g' && grep -Ei "\[webmaild\]" /usr/local/cpanel/logs/session_log* | awk '{print $1 " " $2 " " $6 " " $8}' | cut -d"[" -f 2 | sort | uniq && grep -Ei "\[webmaild\]" /usr/local/cpanel/logs/login_log* | awk '{print $1 " " $2 " " $6 " " $8}' | cut -d"[" -f 2 | sort | uniq; }
2024-07-02 21:21:44 213.194.xxx.220 paqui@dfsdfsdfsdf.com
2024-07-02 21:57:51 213.194.xxx.220 info@sdfsdfsdfsdf.com
2024-07-02 22:49:56 216.147.xxx.79 reservas@sdfsefsfdd.com
2024-07-02 23:21:27 213.194.xxx.220 info@sdfsdfsdf.com
2024-07-03 03:07:18 35.173.xxx.157 ignacio@sdfsdfsdf.es
2024-07-03 05:50:35 80.30.xxx.100 educacion@sdfsdfs.sdfsdfsdfss.org
Version por cuenta especifica
cuenta="usuario@dominio.com"
{
grep -Ei "login:" /var/log/maillog | grep "$cuenta" | awk '{print $1 " " $2 " " $3 " " $10 " " $8}' | sed 's/rip=//g;s/,//g'
grep -Ei "\[webmaild\]" /usr/local/cpanel/logs/session_log* | grep "$cuenta" | awk '{print $1 " " $2 " " $6 " " $8}' | cut -d"[" -f 2 | sort | uniq
grep -Ei "\[webmaild\]" /usr/local/cpanel/logs/login_log* | grep "$cuenta" | awk '{print $1 " " $2 " " $6 " " $8}' | cut -d"[" -f 2 | sort | uniq
}
2024-06-26 08:51:11 213.194.xxx.220 usuario@dominio.com
2024-07-01 22:39:16 213.194.xxx.220 usuario@dominio.com
2024-07-02 12:06:21 31.221.xxx.87 usuario@dominio.com
2024-07-02 14:08:57 213.194.xxx.220 usuario@dominio.com
2024-07-02 14:17:08 213.194.xxx.220 usuario@dominio.com
Agradecimientos
A Ehsan Dowlatshah en How To List Email Login History? por la idea.
Aviso
Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris
Si necesitas soporte profesional puedes contratar con Castris soporte profesional.
El usuario no ve lo correos en su programa o en webmail (cPanel)
Introducción
Esto suele pasar más veces de lo deseado en cPanel, y pone muy nerviosos a los clientes.
El cliente acude a su programa y no ve ningun correo o le faltan correos en sus carpetas. Usa IMAP, por supuesto.
Se trata de una rotura de los indices de Dovecot que es el gestor IMAP usado en cPanel.
Solución cPanel
Se trat de clarear o reindexar los índices de las cuentas de correos del usuario.
cPanel pone un script para esta cuestión.
/scripts/remove_dovecot_index_files --user cpaneluser
Otra cuestión
Puede ser necesario también eliminar los ficheros dovecot-uid*
en la mayoria de los casos, auqne prefiero hacerlo sólo si falla el primero en al guna cuenta particular.
cd /home/CPANELUSER/mail/USERDOMAIN.TLD/ACCOUNT/
/scripts/remove_dovecot_index_files --user cpaneluser
/bin/rm -f ./dovecot-uid*
Explicación del script
Con la exlicación tambien obtienes posibilidades para hacer esto en otro sistema que no tenga cPanel o no tenga panel de control, pero si Dovecot
Remover los ficheros index
#dovecot.index*
#dovecot.index.cache*
#dovecot.index.log*
find "$maildir" -type f -regex '.*dovecot\.index(\.cache|\.log(\.[0-9]+)?)?' -exec rm -f {} +
Otros
En un servidor sin cPanel tambien puedes usar
doveadm index -u usuario@example.com
Aviso
Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris
Si necesitas soporte profesional puedes contratar con Castris soporte profesional.
Rutas Específicas o smarthost complejo para Exim y cPanel
Smarthosts
A veces, lidiar con Microsoft, Yahoo y toda la gama de Big Tech dedicadas al correo es una misión imposible. Son los eternos enemigos de las empresas de servicios de hosting, por muchas razones, una de ellas es la cultura de "con ellos no tengo problemas".
- Excepto cuando un correo se pierde y no hay soporte.
- Excepto cuando alguien borra los correos y no hay soporte.
- Excepto cuando tu ex (socio, pareja, ...) secuestra la cuenta de tu empresa.
- Excepto cuando tienes un problema y no hay soporte.
El caso que nos ocupa es la modificación de Exim para cPanel, siguiendo sus especificaciones para construir una red de smarthosts para clientes con problemas.
Aunque está dedicada a cPanel y sus peculiaridades, es fácilmente trasladable a Directadmin.
Configuración de Exim / Editor Avanzado
Vamos a crear una configuración doble:
- Una ruta para dominios salientes, para los que siempre enviaremos por esas rutas. Si el dominio no está en esa lista, continuará a la siguiente.
- Una ruta específica que puede estar o no activa en función de si existe el archivo que conforma el cierre del enrutado especial.
Si este último router no encuentra el archivo, Exim tratará entonces el correo como normal, es decir, ejecutará su proceso habitual.
TRANSPORTSTART
Buscaremos la sección TRANSPORTSTART.
Los nombres son ficticios y son los que uno quiera y tenga configurados, se entiende.
castris_smarthost_transport:
driver = smtp
hosts_require_tls = *
hosts_randomize = true
castris_talos_transport:
driver = smtp
hosts_require_tls = *
hosts_randomize = true
ROUTERSTART
castris_talos_router:
driver = manualroute
domains = lsearch;/etc/talos_domains.txt
transport = castris_talos_transport
condition = ${if exists{/etc/talos_routes.txt}{true}{false}}
route_list = * ${lookup{$domain}nwildlsearch{/etc/talos_routes.txt}}
hosts_randomize = true
castris_smarthost_router:
driver = manualroute
transport = castris_smarthost_transport
domains = ! +local_domains
condition = ${if exists{/etc/smartdomains.txt}{true}{false}}
route_list = * ${lookup{$domain}nwildlsearch{/etc/smartdomains.txt}}
hosts_randomize = true
Formatos
/etc/smartdomains.txt
hotmail.com: hetzner-xer01.castris.com:hetzner-xer02.castris.com:hetzner-xer04.castris.com
hotmail.es: hetzner-xer01.castris.com:hetzner-xer02.castris.com:hetzner-xer04.castris.com
amenabarobrasyproyectos.com:hetzner-xer01.castris.com:hetzner-xer08.castris.com
*: hetzner-xer07.castris.com:hetzner-xer08.castris.com:hetzner-xer05.castris.com
talos_routes.txt
gruposantander.es: hetzner-xer07.xerintel.com:hetzner-xer08.xerintel.com:hetzner-xer05.xerintel.com
yahoo.es: hetzner-xer07.xerintel.com:hetzner-xer08.xerintel.com:hetzner-xer05.xerintel.com
yahoo.com: hetzner-xer07.xerintel.com:hetzner-xer08.xerintel.com:hetzner-xer05.xerintel.com
policia.es: hetzner-xer11.castris.com:hetzner-xer06.castris.com
/etc/talos_domains.txt
gruposantander.es
yahoo.com
yahoo.es
policia.es
Explicación
-
driver = manualroute: Este controlador (
driver
) especifica que el enrutamiento se realizará manualmente utilizando una lista de rutas definida por el usuario. Esto permite un control detallado sobre cómo se enrutan los correos a diferentes destinos. -
domains = lsearch;/etc/talos_domains.txt: Esta opción indica que el router debe aplicar su lógica solo a los dominios listados en el archivo
/etc/talos_domains.txt
. El métodolsearch
busca de manera lineal en el archivo para encontrar coincidencias. -
transport = castris_talos_transport: Especifica el transporte que se utilizará para los correos que coincidan con este router. En este caso, se utiliza
castris_talos_transport
, que está definido más adelante. -
condition = ${if exists{/etc/talos_routes.txt}{true}{false}}: Esta condición evalúa si el archivo
/etc/talos_routes.txt
existe. Si el archivo existe, la condición es verdadera y el router se aplica; de lo contrario, no se aplica. -
route_list = * ${lookup{$domain}nwildlsearch{/etc/talos_routes.txt}}: Define una lista de rutas para el enrutamiento manual. Usa
nwildlsearch
para buscar de manera no estricta en el archivo/etc/talos_routes.txt
y encontrar la ruta correspondiente al dominio. -
hosts_randomize = true: Esta opción indica que los hosts en la lista de rutas deben ser seleccionados de manera aleatoria, lo que puede ayudar a distribuir la carga de manera uniforme entre múltiples servidores.
-
driver = smtp: Este controlador (
driver
) especifica que el transporte utilizará el protocolo SMTP para enviar correos a los servidores de destino. -
**hosts_require_tls = ***: Indica que todas las conexiones SMTP deben utilizar TLS para garantizar la seguridad de las comunicaciones. El asterisco (
*
) significa que esta regla se aplica a todos los hosts. -
hosts_randomize = true: Similar a la opción en el router, esta opción indica que los hosts deben ser seleccionados de manera aleatoria al enviar correos, ayudando a balancear la carga entre múltiples servidores.
Aviso
Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris
Si necesitas soporte profesional puedes contratar con Castris soporte profesional.