Dovecot Director und managesieve

Thomas Bäumer thomas at ctrl-c.de
Mi Feb 12 17:46:17 CET 2020


Hallo zusammen,


ich arbeite mich so durch das Dovecot Buch und bin langsam an dem Punkt, 
wie der bzw. die neuen Mailserver so aussehen sollen.

Der Director funktioniert soweit, LMTP und IMAP gehen da ordnungsgemäß 
durch und werden an das Backend weitergeleitet:

# doveadm auth test vorname.nachname at domain.tld
Password:
passdb: vorname.nachname at domain.tld auth succeeded
extra fields:
   user=vorname.nachname at domain.tld
   proxy


# doveadm director status
mail server ip tag vhosts state state changed users 

172.aa.bb.17       100    up    -             0


# doveadm director status vorname.nachname at domain.tld
Current: 172.aa.bb.17 (expires 2020-02-12 16:29:49)
Hashed: 172.aa.bb.17
Initial config: 172.aa.bb.17


Aber managesieve (mit rainloop v1.14.0 oder Roundcube 1.4.2) schlägt fehl:


Feb 12 16:16:13 imap dovecot: managesieve-login: Error: proxy: host not 
given: user=<vorname.nachname at domain.tld>, method=PLAIN, 
rip=2a00:...:249:6820, lip=2a00:...:993, TLS, 
session=<afCOSmOemOAqAOGAyv4AEMxn5I4kn2gg>


Dann bin ich nochmal einen Schritt zurück habe aus dem Director wieder 
einen einfachen Proxy gemacht. Also in 10-director.conf alles wieder 
kommentiert und passdb Attribute angepasst:

# doveadm auth test vorname.nachname at domain.tld
Password:
passdb: vorname.nachname at domain.tld auth succeeded
extra fields:
   user=vorname.nachname at domain.tld
   proxy
   host=172.aa.bb.17

Und damit klappt sieve dann:

Feb 12 15:41:07 imap dovecot: managesieve-login: 
proxy(vorname.nachname at domain.tld): started proxying to 
172.aa.bb.17:4190: user=<vorname.nachname at domain.tld>, method=PLAIN, 
rip=2a00:...:249:6820, lip=2a00:...:993, TLS, 
session=<iAoHzWKeXNwqAOGAyv4AEMxn5I4kn2gg>


Offenbar fehlt irgendwas in der Director-config, damit auch managesieve 
funktioniert. Aber ich weiß nicht was.

Kann da vielleicht jemand helfen?

Anbei noch die debug logs und meine config vom dem Director.


Danke und Gruss
   Thomas
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : dovecot_proxy.log
Dateityp    : text/x-log
Dateigröße  : 2281 bytes
Beschreibung: nicht verfügbar
URL         : <https://listen.jpberlin.de/pipermail/dovecot/attachments/20200212/1fa8e9a0/attachment.log>
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : dovecot_dir.log
Dateityp    : text/x-log
Dateigröße  : 2378 bytes
Beschreibung: nicht verfügbar
URL         : <https://listen.jpberlin.de/pipermail/dovecot/attachments/20200212/1fa8e9a0/attachment-0001.log>
-------------- nächster Teil --------------
# 2.3.9.2 (cf2918cac): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.5.9 (db4e9a2f)
# OS: Linux 4.15.0-76-generic x86_64 Ubuntu 18.04.4 LTS 
# Hostname: ddir01.domain.tld
auth_debug = yes
auth_master_user_separator = *
auth_mechanisms = plain login
auth_verbose = yes
director_mail_servers = 172.aa.bb.17
director_servers = 89.xxx.yyy.zzz:9090 172.aaa.bbb.ccc:9090
lmtp_proxy = yes
mail_attachment_dir = /var/vmail/mail_attachments
mail_attachment_hash = %{sha256}
mail_debug = yes
mail_location = mdbox:%h/mdbox
mail_plugins = zlib acl quota
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 index ihave duplicate mime foreverypart extracttext
namespace {
  list = children
  location = mdbox:%%h/mdbox
  prefix = shared/%%u/
  separator = /
  subscriptions = yes
  type = shared
}
namespace {
  location = maildir:/var/vmail/public:INDEXPVT=%h/mdbox/public
  prefix = Public/
  separator = /
  subscriptions = yes
  type = public
}
namespace inbox {
  hidden = no
  inbox = yes
  list = yes
  location = 
  mailbox Drafts {
    auto = subscribe
    special_use = \Drafts
  }
  mailbox Junk {
    auto = subscribe
    special_use = \Junk
  }
  mailbox Sent {
    auto = subscribe
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
  mailbox Trash {
    auto = subscribe
    special_use = \Trash
  }
  prefix = INBOX/
  separator = /
  subscriptions = yes
  type = private
}
passdb {
  args = /etc/dovecot/master-users
  driver = passwd-file
  master = yes
  result_success = continue
}
passdb {
  args = /etc/dovecot/dovecot-ldap.conf.ext
  driver = ldap
}
plugin {
  acl = vfile
  acl_shared_dict = file:/var/vmail/shared-mailboxes.db
  acl_user = %u
  master_user = %u
  quota = dict:User quota::file:%h/dovecot-quota
  quota_grace = 10%%
  quota_rule = *:storage=1G
  quota_status_nouser = DUNNO
  quota_status_overquota = 552 5.2.2 Mailbox is full / Mailbox ist voll
  quota_status_success = DUNNO
  sieve = file:%h/sieve;active=%h/sieve.active
  sieve_max_actions = 32
  sieve_max_redirects = 4
  sieve_max_script_size = 1M
  zlib_save = gz
  zlib_save_level = 6
}
protocols = " imap lmtp sieve"
service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
  }
  unix_listener auth-userdb {
    user = dovecot
  }
}
service director {
  inet_listener {
    port = 9090
  }
  unix_listener login/director {
    mode = 0666
  }
}
service imap-login {
  executable = imap-login director
}
service lmtp {
  inet_listener lmtp {
    port = 24
  }
}
service managesieve-login {
  inet_listener sieve {
    port = 4190
  }
}
service quota-status {
  client_limit = 1
  executable = quota-status -p postfix
  inet_listener {
    port = 12340
  }
}
ssl = required
ssl_cert = </etc/ssl/private/cert.domain.tld
ssl_cipher_list = ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
ssl_key = # hidden, use -P to show it
ssl_options = no_compression no_ticket
ssl_prefer_server_ciphers = yes
userdb {
  driver = prefetch
}
userdb {
  args = /etc/dovecot/dovecot-ldap.conf.ext
  driver = ldap
}
verbose_proctitle = yes
protocol lmtp {
  auth_socket_path = director-userdb
  mail_plugins = zlib acl quota sieve
  postmaster_address = postmaster at domain.tld
}
protocol imap {
  mail_plugins = zlib acl quota imap_zlib imap_acl imap_quota
}



Mehr Informationen über die Mailingliste Dovecot