Reenvío Unseen

Además de la funcionalidad básica de reenvío (alias), a veces se requiere que el correo se reenvíe a otra dirección pero que permanezca una copia en la bandeja de entrada de alguna cuenta. La opción disponible en Exim4 es unseen, pero en Debian no hay configuración preestablecida para ello.

Para habilitarlo se hará lo siguiente:

  • Crear un router en /etc/exim4/conf.d/router/ con la prioridad adecuada.

  • Crear una tabla mysql adicional para almacenar los reenvíos con la opción unseen.

Siguiendo el esquema de Macro-servidor de este manual primero se creará la tabla mediante:

Tabla MySQL para reenvíos Unseen
CREATE TABLE `mod_exim4_unseen` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`email` varchar(255) NOT NULL DEFAULT '',
`destination` text NOT NULL,
PRIMARY KEY (`id`),
KEY `idx_email` (`email`)
);

El siguiente paso es la creación del router en la posición adecuada. En mi caso la prioridad la establezco tras los alias y antes de los usuarios virtuales. En la siguiente captura está marcado el fichero y la posición de mi configuración

Listado de routers en /etc/exim4/conf.d/router/
ls -l /etc/exim4/conf.d/router/

-rw-r----- 1 root root  514 ago 24  2020 00_exim4-config_header
-rw-r----- 1 root root  646 ago 24  2020 100_exim4-config_domain_literal
-rw-r----- 1 root root  556 ago 24  2020 150_exim4-config_hubbed_hosts
-rw-r----- 1 root root 3221 may  4  2021 200_exim4-config_primary
-rw-r----- 1 root root  296 ago 24  2020 270_exim4-config_virtual_aliases_mypanel
-rw-r----- 1 root root  305 ago 24  2020 271_exim4-config_virtual_unseen_mypanel
-rw-r----- 1 root root  261 ago 24  2020 275_exim4-config_virtual_local_user_mypanel
-rw-r----- 1 root root  607 ago 24  2020 300_exim4-config_real_local
-rw-r----- 1 root root 1594 ago 24  2020 400_exim4-config_system_aliases
-rw-r----- 1 root root  878 ago 24  2020 500_exim4-config_hubuser
-rw-r----- 1 root root 2109 may  4  2021 600_exim4-config_userforward
-rw-r----- 1 root root  408 may  4  2021 700_exim4-config_procmail
-rw-r----- 1 root root  328 may  4  2021 800_exim4-config_maildrop
-rw-r----- 1 root root  900 mar 26  2025 850_exim4-config_lowuid
-rw-r----- 1 root root  402 ago 24  2020 900_exim4-config_local_user
-rw-r----- 1 root root  472 ago 24  2020 mmm_mail4root

El contenido del router es el mostrado, pero incluye una definición de consulta SQL que hay que añadir en la configuración general usada en este manual /etc/exim4/conf.d/main/00_exim4-config_custom

virtual_unseen:
  debug_print = "R: virtual_unseen for $local_part@$domain"
  driver = redirect
  domains = +local_domains
  allow_fail
  allow_defer
  data = ${lookup mysql{MYSQL_V_UNSEEN}}
  file_transport = address_file
  directory_transport = address_directory
  unseen

El último paso es añadir la definición de la consulta MYSQL_V_UNSEEN en el fichero /etc/exim4/conf.d/main/00_exim4-config_custom:

Fichero /etc/exim4/conf.d/main/00_exim4-config_custom
MYSQL_V_UNSEEN = SELECT destination FROM mod_exim4_unseen WHERE email='${quote_mysql:$local_part@$domain}'