[LUG.ro] Wheezy+Postfix+Dovecot+LDAP-Problema mapeo dir en IMAP/POP3

Diego H. Cancelo diego en cancelo.com.ar
Vie Ago 29 12:34:55 ART 2014


Buenas...
Estoy implementando un server de correo. Esta con Postfix 2.9.6-2 sobre
Debian Wheezy en un conteiner de OpenVZ.
Estoy utilizando Dovecot 2.1.7-7 para IMAP/POP3 y tambien como LDA.
Postfix solo transporta, el encargado de guardar y buscar en los dirs es
Dovecot.
Para la utenticacion e info de usuarios uso OpenLDAP 2.4.31-1 que esta
en otro server también con Wheezy.
Tengo un problema con el mapeo de los directorios cuando un usuario se
conecta utilizando POP3 o IMAP y quiere levantar los correos, pero
funciona bien cuando Dovecot, como LDA, almacena un correo recibido para
un usuario virtual.
Todavía no implemente ni SSL ni STARTTLS.

Estas son algunas lineas de los logs en el almacenamiento al recibir un
correo en el MTA:

relay1:/etc/dovecot# tail -f /var/log/mail.log -n0
Aug 28 17:39:08 relay1 postfix/qmgr[1758]: 762027636:
from=<wvmedel en epea1.com.ar>, size=198, nrcpt=1 (queue active)
Aug 28 17:39:08 relay1 postfix/pipe[2491]: 762027636:
to=<sspeirone en epea1.com.ar>, relay=dovecot, delay=29,
delays=29/0/0/0.09, dsn=2.0.0, status=sent (delivered via dovecot service)

relay1:/etc/dovecot# tail -f /var/log/dovecot* -n0
==> /var/log/dovecot-deliver.log <==
2014-08-28 17:39:08 lda: Debug: auth input: sspeirone en epea1.com.ar
home=/home/usersldap/sspeirone uid=10003 gid=10002
2014-08-28 17:39:08 lda(sspeirone en epea1.com.ar): Debug: Effective
uid=10003, gid=10002, home=/home/usersldap/sspeirone
2014-08-28 17:39:08 lda(sspeirone en epea1.com.ar): Debug: Home dir not
found: /home/usersldap/sspeirone
2014-08-28 17:39:08 lda(sspeirone en epea1.com.ar): Debug: Namespace inbox:
type=private, prefix=, sep=, inbox=yes, hidden=no, list=yes,
subscriptions=yes location=maildir:/home/vmail/epea1.com.ar/sspeirone
2014-08-28 17:39:08 lda(sspeirone en epea1.com.ar): Debug: maildir++:
root=/home/vmail/epea1.com.ar/sspeirone, index=, control=,
inbox=/home/vmail/epea1.com.ar/sspeirone, alt=
2014-08-28 17:39:08 lda(sspeirone en epea1.com.ar): Debug: none: root=,
index=, control=, inbox=, alt=
2014-08-28 17:39:08 lda(sspeirone en epea1.com.ar): Debug: Destination
address: sspeirone en epea1.com.ar (source: user en hostname)
2014-08-28 17:39:08 lda(sspeirone en epea1.com.ar): Info:
msgid=unspecified: saved mail to INBOX : Subject: prueba

Estas son algunas lineas de los logs al intentar levantar los correos
con IMAP:

==> /var/log/dovecot.log <==
2014-08-28 17:41:33 auth: Debug:
ldap(sspeirone en epea1.com.ar,192.168.0.3,<9vfmj7YBVwDAqAAD>): pass
search: base=dc=epea1,dc=com,dc=ar scope=subtree
filter=(&(objectClass=posixAccount)(mail=sspeirone en epea1.com.ar))
fields=uid,userPassword
2014-08-28 17:41:33 auth: Debug:
auth(sspeirone en epea1.com.ar,192.168.0.3,<9vfmj7YBVwDAqAAD>): username
changed sspeirone en epea1.com.ar -> sspeirone
2014-08-28 17:41:33 auth: Debug:
ldap(sspeirone,192.168.0.3,<9vfmj7YBVwDAqAAD>): result: uid=sspeirone
userPassword={SSHA}t0USBwWFQwcixFXUjkydz43acPyoj7Wm
2014-08-28 17:41:33 auth: Debug: client out: OK 1       user=sspeirone
2014-08-28 17:41:33 auth: Debug: master in: REQUEST     391249921
2503    1       3d10fbc60262b893df64dc7e667065e1
2014-08-28 17:41:33 auth: Debug:
ldap(sspeirone,192.168.0.3,<9vfmj7YBVwDAqAAD>): user search:
base=dc=epea1,dc=com,dc=ar scope=subtree
filter=(&(objectClass=posixAccount)(uid=sspeirone))
fields=homeDirectory,uidNumber,gidNumber
2014-08-28 17:41:33 auth: Debug:
ldap(sspeirone,192.168.0.3,<9vfmj7YBVwDAqAAD>): result: uidNumber=10003
gidNumber=10002 homeDirectory=/home/usersldap/sspeirone
2014-08-28 17:41:33 auth: Debug: master out: USER       391249921
sspeirone       home=/home/usersldap/sspeirone  uid=10003        gid=10002
2014-08-28 17:41:33 imap-login: Info: Login: user=<sspeirone>,
method=PLAIN, rip=192.168.0.3, lip=192.168.0.247, mpid=2504, secured,
session=<9vfmj7YBVwDAqAAD>
2014-08-28 17:41:33 imap(sspeirone): Debug: Effective uid=10003,
gid=10002, home=/home/usersldap/sspeirone
2014-08-28 17:41:33 imap(sspeirone): Debug: Home dir not found:
/home/usersldap/sspeirone
2014-08-28 17:41:33 imap(sspeirone): Debug: Namespace inbox:
type=private, prefix=, sep=, inbox=yes, hidden=no, list=yes,
subscriptions=yes location=maildir:/home/vmail//sspeirone
         			^^^^^^^^^^^^^^^^^^^^^^^^
2014-08-28 17:41:33 imap(sspeirone): Debug: maildir++:
root=/home/vmail//sspeirone, index=, control=,
inbox=/home/vmail//sspeirone, alt=
2014-08-28 17:41:33 imap(sspeirone): Debug: Namespace :
/home/vmail//sspeirone doesn't exist yet, using default permissions
2014-08-28 17:41:33 imap(sspeirone): Debug: Namespace : Using
permissions from /home/vmail//sspeirone: mode=0700 gid=-1

Como se ve en estas ultimas lineas (subrayado con ^^^^) busca el correo
en /home/vmail//USUARIO cuando tendría que ser en
/home/vmail/DOMINIO/USUARIO
He buscado mucho y no logro dar con el parámetro de config para
solucionar esto.
Dovecot como LDA funciona bien por lo que estuve mirando las config de
IMAP/POP pero no logra dar en la tecla.

Esto son fragmentos relevantes en mis archivos de config

POSTFIX:

main cf
home_mailbox = Maildir/
# Uso de Dovecot como LDA (Local Delivery Agent).
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
mailbox_command = /usr/local/lib/dovecot/deliver
#LDAP config
virtual_mailbox_base = /home/vmail/
virtual_uid_maps = static:5000  #vmail
virtual_gid_maps = static:5000  #vmail
virtual_alias_maps =
proxy:ldap:/etc/postfix/ldap/ldap-virtual_forwardings.cf
virtual_mailbox_domains =
proxy:ldap:/etc/postfix/ldap/ldap-virtual_domains.cf
virtual_mailbox_maps =
proxy:ldap:/etc/postfix/ldap/ldap-virtual_mailboxes.cf

master.cf
# Dovecot LDA (para que sea dovecot quien haga el delivery de los correos)
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=nobody:mail argv=/usr/local/lib/dovecot/deliver -d
${recipient}

DOVECOT:

/etc/dovecot/dovecot-ldap.conf.ext
hosts = 192.168.0.244
dn = cn=admin,dc=epea1,dc=com,dc=ar
dnpass =  ********
ldap_version = 3
base = dc=epea1,dc=com,dc=ar
user_filter = (&(objectClass=posixAccount)(uid=%n))
pass_filter = (&(objectClass=posixAccount)(mail=%u))

/etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = no
auth_mechanisms = plain login
!include auth-ldap.conf.ext

/etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:/home/vmail/%d/%n
mail_privileged_group = vmai

/etc/dovecot/conf.d/10-master.conf
service imap-login {
  inet_listener imap {
    port = 143
    #port = 0
  }
  inet_listener imaps {
    port = 993
    ssl = yes
  }
}
service pop3-login {
  inet_listener pop3 {
    port = 110
    #port = 0
  }
  inet_listener pop3s {
    port = 995
    ssl = yes
  }
}
service auth {
  unix_listener auth-userdb {
    mode = 0666
    user = vmail
    group = vmail
  }
}

/etc/dovecot/conf.d/15-lda.conf
postmaster_address = diego en epea1.com.ar
lda_mailbox_autocreate = yes
lda_mailbox_autosubscribe = yes
protocol lda {
  log_path = /var/log/dovecot-deliver.log
}

/etc/dovecot/conf.d/auth-ldap.conf.ext
passdb {
  driver = ldap
  args = /etc/dovecot/dovecot-ldap.conf.ext
}
userdb {
  driver = ldap
  args = /etc/dovecot/dovecot-ldap.conf.ext
}

Bueno... si alguien me puede tirar una onda por donde buscar/seguir se
lo agradecere mucho.
Muchas gracias por leerme.

-- 
Saludos.
Diego.

=======================================================
"Diego H. Cancelo" diego[at]cancelo[dot]com[dot]ar
*GNU/Linux User # 491743* | Huella digital:
03CA 8BAC 823A 80A1 D2FD  E74F 50AB 79D7 8F1A 0DF7
GnuPG: 2048D/8F1A0DF7 | Clave GPG: solicitar por mail
http://www.bootsector.com.ar | http://www.lugro.org.ar
Referente Técnico Escolar-EPEA N°1-Las Ovejas-Neuquén
=======================================================
Usá Software Libre.


Más información sobre la lista de distribución Lugro