Correo electrónico · 6 min read · Sep 08, 2025
Recuperando Correos Electrónicos Desde Servidores Remotos Con fetchmail en Debian

Fetchmail es un programa para recuperar correos electrónicos de servidores remotos. Imagina que tienes cinco cuentas de correo en cinco servidores diferentes. Por supuesto, no quieres conectarte a cada uno de ellos para obtener tus correos. Aquí es donde entra en juego fetchmail. Si tienes una cuenta de usuario en un servidor Linux, puedes hacer que fetchmail descargue correos de servidores remotos y los coloque en un solo buzón (el de tu usuario de Linux), desde donde puedes recuperarlos con tu cliente de correo (por ejemplo, Thunderbird u Outlook).
O imagina que tienes una cuenta de correo en un proveedor que no realiza filtrado de spam y virus. En ese caso, podrías usar fetchmail para descargar los correos a tu propio servidor y pasarlos a través de filtros de spam y virus (por ejemplo, SpamAssassin y ClamAV) antes de descargarlos con tu cliente de correo.
1 Nota Preliminar
Necesitas un servidor Linux con un usuario del sistema que pueda recibir correos, lo que significa que debe estar instalado un MTA como Postfix o Sendmail en el sistema. De lo contrario, fetchmail no funcionará, porque intenta pasar los correos descargados a un MTA (Postfix, Sendmail, …), y el MTA entrega los correos al buzón del usuario (puedes configurar el sistema para incluir el escaneo de spam y virus en este proceso, por ejemplo, con amavisd-new o procmail, pero esto no se cubre en este tutorial).
Utilizo un sistema Debian en este tutorial donde existen dos usuarios llamados falko y till.
2 Instalar fetchmail
Para instalar fetchmail, todo lo que tenemos que hacer es ejecutar
apt install fetchmail3 Configurar fetchmail
Hay dos formas de configurar fetchmail. Podemos hacer que se ejecute como un demonio con un archivo de configuración global, o podemos crear un trabajo cron para ejecutar fetchmail junto con archivos de configuración por usuario. Describiré ambos métodos aquí.
3.1 Ejecutar fetchmail Como Un Demonio Con Un Archivo De Configuración Global
Para hacer que fetchmail se ejecute como un demonio, debemos editar /etc/default/fetchmail y establecer START_DAEMON en yes:
nano /etc/default/fetchmail# Este archivo se utilizará para declarar algunas variables para fetchmail
#
# Descomenta lo siguiente si no deseas mensajes de registro localizados
# export LC_ALL=C
# Declara aquí si queremos iniciar fetchmail. 'yes' o 'no'
START_DAEMON=yesA continuación, debemos crear el archivo de configuración /etc/fetchmailrc porque el demonio fetchmail no se iniciará si este archivo no existe. En este archivo podemos especificar cómo debe comportarse el demonio fetchmail, así como los detalles que fetchmail necesita saber para recuperar correos de cuentas de correo extranjeras.
Supongamos que falko tiene dos cuentas de correo de las que queremos recuperar correos:
- Primera cuenta: servidor pop.someprovider.tld, protocolo POP3, nombre de usuario [email protected] (sí, el nombre de usuario es una dirección de correo electrónico en este caso), contraseña secreta.
- Segunda cuenta: servidor mail.otherprovider.tld, protocolo POP3, nombre de usuario ftimme, contraseña verysecurepassword.
till tiene una cuenta de correo:
- Servidor mailin.tillsprovider.tld, protocolo POP3, nombre de usuario tbrehm, contraseña iwonttellyou.
Así que nuestro archivo /etc/fetchmailrc podría verse así:
nano /etc/fetchmailrc# /etc/fetchmailrc para modo demonio a nivel del sistema
# Este archivo debe tener permisos chmod 0600, propietario fetchmail
set daemon 300 # Pool cada 5 minutos
set syslog # registrar a través de la instalación syslog
set postmaster root
set no bouncemail # evitar pérdida en errores 4xx
# por otro lado, los errores 5xx se vuelven
# más peligrosos...
##########################################################################
# Hosts a agrupar
##########################################################################
# Predeterminados ===============================================================
# Establecer antispam en -1, ya que es mucho más seguro usar eso junto con
# no bouncemail
defaults:
timeout 300
antispam -1
batchlimit 100
poll pop.someprovider.tld protocol POP3 user "[email protected]" there with password "secret" is falko here
poll mail.otherprovider.tld protocol POP3 user "ftimme" there with password "verysecurepassword" is falko here fetchall
poll mailin.tillsprovider.tld protocol POP3 user "tbrehm" there with password "iwonttellyou" is till here keepAl principio del archivo tenemos algunas opciones globales como set daemon 300 (lo que significa que fetchmail debe recuperar correos cada 300 segundos) que controlan la operación del programa. Los significados de las opciones anteriores son los siguientes:
- set daemon: Establecer un intervalo de sondeo en segundo plano en segundos.
- set syslog: Hacer el registro de errores a través de syslog.
- set postmaster: Dar el nombre del destinatario de correo de último recurso (predeterminado: usuario que ejecuta fetchmail, “postmaster” si es ejecutado por el usuario root).
- set no bouncemail: Dirigir el correo de error al postmaster local (según la opción global “postmaster” anterior).
Luego tenemos las opciones de servidor y usuario. Estas van juntas en las líneas que comienzan con poll; si hay opciones que son las mismas para cada línea de sondeo, también podemos especificarlas antes de las líneas de sondeo en una sección que comienza con defaults: (como timeout, antispam y batchlimit en nuestro ejemplo).
- timeout: Tiempo de inactividad del servidor en segundos (predeterminado 300).
- antispam: Especificar qué devoluciones de SMTP se interpretan como bloqueos de política de spam.
- batchlimit: Especificar el número máximo de mensajes que se enviarán a un oyente SMTP antes de que la conexión se cierre y se reconstruya deliberadamente (predeterminado 0, lo que significa sin límite).
Las líneas de sondeo son autoexplicativas; como ves, fetchmail recupera correos de ambas cuentas de correo externas de falko y los coloca en una cuenta.
Notarás que las líneas de sondeo tienen diferentes finales (por ejemplo, nofetchall (predeterminado), fetchall, keep, nokeep). Los significados son los siguientes:
- nofetchall: Recuperar solo mensajes nuevos (predeterminado). Si no se especifica nada más (por ejemplo, fetchall, keep), esto significa nofetchall.
- fetchall: Recuperar todos los mensajes, ya sean vistos o no.
- keep: No eliminar mensajes vistos del servidor.
- nokeep: Eliminar mensajes vistos del servidor.
Para aprender más sobre todas las configuraciones disponibles, echa un vistazo a
man fetchmail/etc/fetchmailrc debe tener permisos 600 y debe ser propiedad del usuario fetchmail, así que hacemos lo siguiente:
chmod 600 /etc/fetchmailrc
chown fetchmail /etc/fetchmailrcFinalmente, podemos iniciar fetchmail:
/etc/init.d/fetchmail startFetchmail ahora debería descargar correos y colocarlos en los buzones de falko y till (usando el MTA). Repetirá esto cada set daemon segundos.
3.2 Usar Archivos De Configuración Por Usuario Y Ejecutar fetchmail A Través De Cron
En lugar de usar un archivo de configuración global como se mostró en el capítulo 3.1, podemos usar archivos de configuración por usuario. Estos deben tener el nombre .fetchmailrc y deben estar ubicados en el directorio personal del usuario.
Queremos crear tal archivo para el usuario falko ahora. ¡Asegúrate de estar conectado como falko, no como root! Luego hacemos esto:
cd ~/
vi .fetchmailrcset postmaster falko
set bouncemail
poll pop.someprovider.tld protocol POP3 user "[email protected]" there with password "secret"
poll mail.otherprovider.tld protocol POP3 user "ftimme" there with password "verysecurepassword" fetchallEl archivo se ve muy similar al archivo /etc/fetchmailrc del capítulo 3.1, sin embargo, notarás que no uso la frase is falko here (como .fetchmailrc está en el directorio personal de falko, fetchmail sabe que los correos deben ser entregados a falko). Por supuesto, aún puedes usar is falko here, así que el archivo también podría verse así:
set postmaster falko
set bouncemail
poll pop.someprovider.tld protocol POP3 user "[email protected]" there with password "secret" is falko here
poll mail.otherprovider.tld protocol POP3 user "ftimme" there with password "verysecurepassword" is falko here fetchallPara aprender más sobre todas las configuraciones disponibles, echa un vistazo a
man fetchmail.fetchmailrc debe tener permisos 600, para que solo falko pueda leer/escribir en él:
chmod 600 ~/.fetchmailrcEso es todo. Ahora falko puede iniciar el proceso de recuperación ejecutando
fetchmailo
fetchmail -vque muestra lo que está sucediendo.
Por supuesto, falko no quiere iniciar la recuperación manualmente cada pocos minutos, así que creamos un trabajo cron para él. Aún como el usuario falko, ejecutamos
crontab -ey creamos un trabajo cron como este (que iniciaría fetchmail cada cinco minutos):
*/5 * * * * /usr/bin/fetchmail &> /dev/null4 Enlaces
- Debian: http://www.debian.org
- Fetchmail: http://fetchmail.berlios.de
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.