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 [email protected] 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 = [email protected] Address testing: uid=0 gid=93 euid=0 egid=93 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Testing [email protected] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Considering [email protected] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> routing [email protected] --------> 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 [email protected] --------> 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 [email protected] --------> 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 [email protected] 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: [email protected] transport: local_delivery [email protected] 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: localuser: |
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.