La sección directors
sirve para que exim acepte los mails. Si un director no puede entregar
el mensaje, lo intenta con el siguiente de la lista. De este modo, como
con cyrus tenemos usuarios de correo que no lo son del sistema, debemos
añadir un nuevo director antes de real_local, que es el director
para usuarios locales:
cyrus_user:
driver = smartuser
#Dudo que este driver sea el correcto, pero con este no rechaza
ningún mensaje
transport = cyrus_delivery
El problema es que al usar smartuser
como driver, los mails cuyo destinatario no corresponda con ninguna
cuenta del servidor imap serán desechados. Esta chapucilla se
arregla
poniendo antes del director cyrus_user,
el director system_aliases,
para que primero compruebe los aliases y si no encuentra ninguno, lo
entregue directamente a cyrus (lo correcto sería chequear los
mailboxes de cyrus en busca del usuario, y en caso de no existir pasar
al siguiente director)
system_aliases:
driver = aliasfile
file_transport = address_file
pipe_transport = address_pipe
file = /etc/aliases
search_type = lsearch
user = nobody
group = audio
En la sección transports
debemos modificar los correspondientes a address_file, local_delivery, y
añadimos cyrus_delivery:
(De todos modos local_delivery es inútil ya que nunca se llega a
usar el director correspondiente)
cyrus_delivery:
driver = pipe
command = "/usr/sbin/cyrdeliver ${local_part}"
return_path_add
return_output
prefix = ""
user = cyrus
local_delivery:
driver = pipe
command =
"/usr/sbin/cyrdeliver ${local_part}"
return_path_add
return_output
prefix = ""
user = cyrus
address_file:
driver = pipe
command =
"/usr/sbin/cyrdeliver ${local_part}"
return_path_add
return_output
prefix = ""
user = cyrus