[Dovecot] Dovecot 2 + Director: IMAP+GSSAPI and LMTP-proxying

Jahnke-Zumbusch, Dirk dirk.jahnke-zumbusch at desy.de
Wed Jun 1 12:25:40 EEST 2011


Hi all,


I have a setup of some nodes running Dovecot 2.0.13 and Postfix 2.5.6
with storage in NFS and authentication happening with PAM. 

Poking around in the wiki, I tried out different possibilities but now
I am stuck -- and are hoping for your (enlightening) comments and tips.

My planned setup for IMAP and LMTP is like this:


IMAP
====

1. A loadbalancer directs new sessions to a Dovecot-Director instance;
   this extra amount of traffic routing is mostly done for automatic 
   handling in case of a failing Director node; this works fine, the
   same IP will end always on the same backend, but user-based Directory
   proxying seems more appropriate, especially taking the NFS-setup and
   the delivery process into account

2. Then the  Director decides where to direct the user's session; this 
   works fine when I let the backend servers do the authentication work

3. The backend Dovecot server will happily provide the user's e-mail


For now my section for the passdb in the Director instance is

passdb {
  driver = static
  args = proxy=y nopassword=y
}

So the backend will do the authentication of the session. But this setup
inhibits using Kerberos, as the TGT is not forwarded to the backend
server.

I would very much like to provide GSSAPI/Kerberos authentication, which
already works fine with the backend servers being directly connected by
mail clients. The backend servers are using the PAM driver.

I could not figure out, how to setup the passdb entry for the director
instance to use PAM (this way enabling GSSAPI/Kerberos) and also giving
back the necessary "proxy=y" to make director proxying the IMAP session.

Is this setup feasible at all?



LMTP
====

1. Postfix accepts incoming e-mail and decides, which e-mail will go
   the LMTP-way to be deliverd into a Dovecot mailbox with something
   like

   virtual_transport = lmtp:inet:DOVECOT-DIRECTORS-IP:LMTP-PORT-ABC

2. the Dovecot Director instance accepts the LMTP connections and
   will proxy this to the appropriate==user's current backend server


For now Postfix delivers e-mails using LMTP to the _backend_ w/o 
proxying and everything like SIEVE-filtering works fine:

virtual_transport = lmtp:inet:DOVECOT-BACKENDS-IP:LMTP-PORT-XYZ


But when I use the Director's IP/Port combination for LMTP, I see
an error "554 5.4.6 <the at addr.ess> Proxying loops to itself".

Where may I specify the port number of the backend server's
LMTP-port? I suspect that the missing port number implies that
the receiving LMTP-backend server uses the same port and so
this would lead to a loop, hence the loop error?!

I browsed the Wiki and the archives but still cannot find the
information I am looking for.


Any hints on that? 


Cheers,
Dirk


And here's the director.conf (via doveconf -n):

# 2.0.13: /dovecot/code/etc/dovecot-director/director.conf
# OS: SunOS 5.10 sun4v
auth_debug = yes
auth_verbose = yes
base_dir = /var/run/director/
debug_log_path = /var/adm/dovecot-director.debug
director_mail_servers = <LOCAL-BACKEND-IP>
director_servers = <PUBLIC-DIRECTOR-IP>
lmtp_proxy = yes
login_greeting = Dovecot Director ready.
mail_debug = yes
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope
encoded-character vacation subaddress comparator-i;ascii-numeric
relational regex imap4flags copy include variables body enotify
environment mailbox date

passdb {
  args = proxy=y nopassword=y
  driver = static
}

protocols = imap lmtp

service auth-worker {
  user = root
}

service auth {
  client_limit = 6000
  unix_listener auth-userdb {
    mode = 0644
    user = vmail
  }
}

service director {
  fifo_listener login/proxy-notify {
    mode = 0666
  }
  inet_listener {
    port = 9090
  }
  unix_listener director-userdb {
    mode = 0600
  }
  unix_listener login/director {
    mode = 0666
  }
}

service imap-login {
  executable = imap-login director
  inet_listener imap {
    port = 10143
  }
  inet_listener imaps {
    port = 10993
    ssl = yes
  }
  process_min_avail = 1
}

service imap {
  process_limit = 1024
}

service lmtp {
  inet_listener lmtp {
    address = <LOCAL-DIRECTOR-IP>
    port = 24242
  }
}

ssl_cert = </dovecot/code/dovecot-homedir/dovecot.crt
ssl_key = </dovecot/code/dovecot-homedir/dovecot.key

syslog_facility = local0

protocol lmtp {
  auth_socket_path = director-userdb
}




--
Dirk Jahnke-Zumbusch              Deutsches Elektronen-Synchrotron DESY
IT Information Fabrics              Member of the Helmholtz Association
D-22603 Hamburg                        Notkestrasse 85  / 22607 Hamburg
T: +49-40-899.81760   F: +49-40-899.41760  dirk.jahnke-zumbusch at desy.de




More information about the dovecot mailing list