Exim Configuration userforward defer (-30): transport “address_directory” not found in userforward router

Durante la instalacion de un servidor de correo con exim luego de hacer las pruebas necesarias, se comprobo que todo estaba funcionando correctamente.

Unos dias mas tarde el cliente se volvio a comunicar solicitando servicios adicionales en su correo.- Ahora se requiere que los que los usuarios de correo tuvieran reenvio de correos, listas de correo y el mensaje automatico de de vacaciones.

Al hacer los cambios solicitados para habilitar dichas funciones en el servidor de correo, este empezo a desplegar este error;

userforward defer (-30): transport “address_directory” not found in userforward router

Error in setting up pipe, file, or autoreply

Una serie de pruebas recomendadas para comprobar el enrutamiento de los correos, podemos ejecutar el comando exim -d -bt.
Este comando envia un correo utilizando el MTA exim, y nos muestra con lujo de detalle toda la ruta, transportes, dns y todos los archivos de configuraciones que utiliza para poder mandar un correo.

[root@mail01 Maildir]# exim -d -bt usuario@dominiolocal.com
Exim version 4.63 uid=0 gid=0 pid=22937 D=fbb95cfd
Berkeley DB: Sleepycat Software: Berkeley DB 4.3.29: (September 12, 2006)
Support for: crypteq iconv() IPv6 PAM Perl TCPwrappers OpenSSL Content_Scanning Old_Demime
Lookups: lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmnz dnsdb dsearch ldap ldapdn ldapm mysql nis nis0 nisplus passwd pgsql sqlite
Authenticators: cram_md5 cyrus_sasl plaintext spa
Routers: accept dnslookup ipliteral manualroute queryprogram redirect
Transports: appendfile/maildir/mailstore/mbx autoreply lmtp pipe smtp
Fixed never_users: 0
Size of off_t: 4
changed uid/gid: forcing real = effective
  uid=0 gid=0 pid=22937
  auxiliary group list: 
seeking password data for user "root": cache not available
getpwnam() succeeded uid=0 gid=0
configuration file is /etc/exim/exim.conf
log selectors = 00000ffc 00089001
trusted user
admin user
seeking password data for user "exim": cache not available
getpwnam() succeeded uid=93 gid=93
originator: uid=0 gid=0 login=root name=root
sender address = root@mail.dominiolocal.com
Address testing: uid=0 gid=93 euid=0 egid=93
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Testing usuario@dominiolocal.com
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Considering usuario@dominiolocal.com
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
routing usuario@dominiolocal.com
--------> uservacation router < --------
local_part=usuario domain=dominiolocal.com
checking require_files
file check: $home/.vacation.msg
expanded file: /.vacation.msg
stat() yielded -1
errno = 2
uservacation router skipped: file check
--------> dnslookup router < --------
local_part=usuario domain=dominiolocal.com
checking domains
dominiolocal.com in "dominiolocal.com : dns.dominiolocal.com"? yes (matched "dominiolocal.com")
dominiolocal.com in "! +local_domains"? no (matched "! +local_domains")
dnslookup router skipped: domains mismatch
--------> system_aliases router < --------
local_part=usuario domain=dominiolocal.com
calling system_aliases router
rda_interpret (string): ${lookup{$local_part}lsearch{/etc/aliases}}
search_open: lsearch "/etc/aliases"
search_find: file="/etc/aliases"
  key="usuario" partial=-1 affix=NULL starflags=0
LRU list:
  :/etc/aliases
  End
internal_search_find: file="/etc/aliases"
  type=lsearch key="usuario"
file lookup required for usuario
  in /etc/aliases
lookup failed
expanded:
file is not a filter file
parse_forward_list:
system_aliases router declined for usuario@dominiolocal.com
--------> userforward router < --------
local_part=usuario domain=dominiolocal.com
checking for local user
seeking password data for user "usuario": cache not available
getpwnam() succeeded uid=1027 gid=1324
calling userforward router
rda_interpret (file): $home/.forward
expanded: /home/usuario/.forward
stat(/home/usuario/.)=0
/home/usuario/.forward does not exist
userforward router declined for usuario@dominiolocal.com
--------> procmail router < --------
local_part=usuario domain=dominiolocal.com
checking for local user
seeking password data for user "usuario": using cached result
getpwnam() succeeded uid=1027 gid=1324
checking require_files
seeking password data for user "usuario": using cached result
getpwnam() succeeded uid=1027 gid=1324
check subsequent files for access by usuario
file check: +${home}/.procmailrc
expanded file: /home/usuario/.procmailrc
stat() yielded -1
errno = 2
procmail router skipped: file check
--------> localuser router < --------
local_part=usuario domain=dominiolocal.com
checking for local user
seeking password data for user "usuario": using cached result
getpwnam() succeeded uid=1027 gid=1324
calling localuser router
localuser router called for usuario@dominiolocal.com
  domain = dominiolocal.com
set transport local_delivery
queued for local_delivery transport: local_part = usuario
domain = dominiolocal.com
  errors_to=NULL
  domain_data=NULL localpart_data=NULL
routed by localuser router
  envelope to: usuario@dominiolocal.com
  transport: local_delivery
usuario@dominiolocal.com
  router = localuser, transport = local_delivery
search_tidyup called
>>>>>>>>>>>>>>>> Exim pid=22937 terminating with rc=0 >>>>>>>>>>>>>>>>

En el texto de la consola anterior muestra el enrutamiento de exim funcionando correctamente. Cuando mostraba el error Exim Configuration userforward defer (-30): transport “address_directory” not found in userforward router fue debido a un error en configuracion de exim y en los permisos del archivo .forward en el home del usuario.

Una configuracion tipica del archivo /etc/exim/exim.conf para poder responder con mensajes automaticos a los correos recibidos, tiene que tener las siguientes opciones habilitadas.

archivo: /etc/exim/exim.conf

 

userforward:
driver = redirect
check_local_user
# local_part_suffix = +* : -*
# local_part_suffix_optional
file = $home/.forward
allow_filter
no_verify
no_expn
check_ancestor
file_transport = address_file
pipe_transport = address_pipe
reply_transport = address_reply
directory_transport = address_directory

localuser:
driver = accept
check_local_user
# local_part_suffix = +* : -*
# local_part_suffix_optional
transport = local_delivery
cannot_route_message = Unknown user


El recuadro anterior es un extracto del archivo de configuracion del exim. Deben de buscar los encabezados userforward y localuser para agregar lo que haga falta.

Comentario, Preguntas o agradecimientos?

%d bloggers like this: