# Dovecot dsync



## fueber (12. Mai 2015)

Hallo,

ich habe ein Problem mit meiner Konfiguration vom Dovecot
Ich muss da ich Altlasten mit herumschleppe die Funktion Anmelden mit anderen Benutzernamen verwenden.

wenn sich der benutzer mit seiner Email Adresse anmeldet funktioniert der dsync daemon wie gewünscht. Loggt er sich aber mit den freigewählten Benutzernamen ein versucht er die veränderung mit den benutzernamen zu syncen bzw nur die quotas

May 12 07:42:09 mailbox dovecot: dsync-server(balbla113): Error: mkdir_parents(/var/vmail//blabla113) failed: Permission denied
May 12 07:42:09 mailbox dovecot: dsync-server(blabla113): Error: dict quota: Quota update failed, it's now desynced
May 12 07:42:09 mailbox dovecot: indexer-worker(blabla113): Indexed 5 messages in INBOX

kennt das jemand?

lg
Bernhard


----------



## wenkt (26. Okt. 2015)

Hallo

Ich habe das selbe Problem mit dovecot-imapd, aber leider noch keine Lösung. Auch ich nutze noch die "alten" Loginnamen.

LG
Thomas


----------



## wenkt (27. Okt. 2015)

Hier die Lösung (ISPConfig 3.0.5.4p8, Ubuntu 14.04 LTS, Dovecot 2.x):
In der Datei /etc/dovecot/dovecot.conf werden die Einträge für quota und sieve nicht angepasst.

Im Bereich plugin werden dazu der Domainpart (welcher leer ist und das // im Log erzeugt) sowie der Userpart verwendet. Richtigerweise muss da das Homeverzeichnis rein, welches den gesamten Pfad als Wert aufweist.

Hier der alte und falsche Bereich:
plugin {
  quota = dict:user::file:/var/vmail/%d/%n/.quotausage
  sieve=/var/vmail/%d/%n/.sieve
}

Und so muss das aussehen, dass es funktioniert:
plugin {
  quota = dict:user::file:%h/.quotausage
  sieve=%h/.sieve
}


Bitte in der nächsten ISPConfig-Version anpassen!

LG
Thomas


----------



## florian030 (27. Okt. 2015)

Die Einträge sind beide in Ordnung und funktionieren problemlos. Du musst einen anderen Fehler irgendwo in der Config haben.

Ich frage mich nur gerade, was quota und dsync miteinander gemeinsam haben....


----------



## wenkt (27. Okt. 2015)

Lies mal meinen Post. Bei mir tritt die Fehlermeldung bei imap auf.

Einträge alt drin: Fehlermeldungen
Einträge neubdrin: keine Fehlermeldungen

Bei dsync wird wohl auch irgendwo das falsche Muster %d/%u drin sein


----------



## florian030 (27. Okt. 2015)

Das läuft hier und auf diversen anderen Servern mit dem ganz normalen Setup von ISPConfig. Ich bin mir daher ziemlich sicher, dass Dein Problem an Deiner Config und/oder der Dovecot-Version liegt, die Du verwendest. Ich stelle Dir gerne meine Config zur Verfügung - dann kannst Du vergleichen.

Für die nächste Version muss da gar nichts angepasst werden....


----------



## wenkt (27. Okt. 2015)

Jaja.

Solange sich die Benutzer mit der vollständigen Emailadresse anmelden, funktioniert das mit "/var/vmail/%d/%u" super. Das wird bei Dir der Fall sein.
Nutzen die User jedoch einen anderen Loginnamen (z.B. namev), dann führt das Pfadmuster unweigerlich ins Falsche und erzeugt Fehlermeldungen. Darum ist hier "%h" als Wert notwendig.


----------



## florian030 (27. Okt. 2015)

Was gibt denn bei Dir ein "SELECT sieve FROM mail_user WHERE (login = '%u' OR email = '%u') AND `disable%Ls` = 'n'" ?
Nimm doch in Dovecot mal "auth_debug=yes" und starte dovecot neu. Wenn Du logins ohne %d (domain) brauchst, warum passt Du dann nicht einfach auth_username_format an?
%h ist das homedir des users. Und das ist für gewöhnich /var/vmail.


----------



## wenkt (27. Okt. 2015)

Diese Tabelle hat keine Column "sieve".

Nochmals: Der SQL-Query in dovecot-sql.conf lautet:
user_query = SELECT email as user, maildir as home, CONCAT('maildir:', maildir, '/Maildir') as mail, uid, gid, CONCAT('*:storage=', quota, 'B') AS quota_rule, CONCAT(maildir, '/.sieve') as sieve FROM mail_user WHERE (login = '%u' OR email = '%u') AND disable%Ls = 'n' AND server_id = '1'

Der wichtige Teil dort ist: maildir as home. Also ist %h gleich der Column "maildir".

Nimm nun Deinen Query und lass Dir maildir anzeigen:
SELECT maildir FROM mail_user WHERE (login = '%u' OR email = '%u') AND `disable%Ls` = 'n'

Et voila *g*. Genau das funktioniert nun auch bei "kurzen" Loginnamen.


----------



## brt (18. März 2016)

sorry, daß ich den alten thread wieder aufwärme, aber nachdem ich auch über dieses problem gestolpert bin...

Die Ursache des Problems erscheint mir auch wie ein Bug im ISPConfig. Die im OP genannten Fehler treten auf, wenn der user "vmail" keine Schreibrechte hat, dovecot versucht einen ordner namens "/var/vmail//bla1" zu erstellen um sein quotafile dort abzulegen, richtig wäre aber "/var/vmail/domain/bla1".

Die Lösung mit "quota = dict:user::file:*%h*/.quotausage" erscheint mir auch logisch und funktioniert zumindest besser als auf der "Hauptebene" einen bla1 Ordner anlegen zu lassen. Tut man dies nicht und der vmail user hat Schreibrechte im Hauptordner, dann legt dovecot einen falschen Ordner für jeden User an! Und es kommt noch schlimmer: *Wenn es zwei E-Mail-Adressen mit dem selben namen vor der Domain gibt, landet die quotadatei von info@domain1.com und info@domain2.com im selben Ordner.* Eher suboptimal würde ich sagen.


----------



## florian030 (19. März 2016)

Wenn das ein Fehler wäre, dann würde das sicherlich öfter auftreten. Ich denke, da passt eher an Deiner dovecot confiig etwas nicht so ganz. Ich habe zB 

```
plugin {
  quota = dict:user::file:/var/vmail/%d/%n/.quotausage
  sieve=/var/vmail/%d/%n/.sieve
}
protocol imap {
  mail_plugins = quota imap_quota notify replication
}

protocol pop3 {
  pop3_uidl_format = %08Xu%08Xv
  mail_plugins = quota
}

protocol lda {
  mail_plugins = sieve quota notify replication
}
```


----------



## brt (19. März 2016)

Zitat von florian030:


> Wenn das ein Fehler wäre, dann würde das sicherlich öfter auftreten. Ich denke, da passt eher an Deiner dovecot confiig etwas nicht so ganz.


Da muss ich leider widersprechen, der Fehler tritt auch auf wenn man die Dovecot Konfiguration garnicht anrührt.
Verwendest Du als Login-Namen die E-Mailadresse? Wenn ich das mache tritt das Problem zB. nicht auf, deswegen denke ich, daß der Fehler nur auftritt wenn man das ISPConfig-Feature "Abweichenden Login Namen erlauben" nutzt. Zudem, wenn der User "vmail" Schreibrechte in /var/vmail hat, erscheint auch kein Fehler in den Logfiles sondern es wird einfach ein völlig unsinniger Ordner "/var/vmail//bla1" (anstelle von /var/vmail/domain/bla1) erstellt.


----------



## wenkt (19. März 2016)

Ja, er tritt öfters auf. Aber nur, wenn kurze Loginnamen verwendet werden.

@brt: pass es so an, wie ich es beschrieben habe und merk' Dir die Änderung für neue ispconfig-Versionen. Florian scheint zu sehr von seiner Meinung überzeugt zu sein.


----------



## brt (19. März 2016)

Zitat von wenkt:


> @brt: pass es so an, wie ich es beschrieben habe und merk' Dir die Änderung für neue ispconfig-Versionen. Florian scheint zu sehr von seiner Meinung überzeugt zu sein.


Japp hab ich gemacht, danke btw. für die Lösung! Klappt wunderbar und erscheint absolut sinnvoll, wenn man sich die Mühe macht sich reinzudenken!


----------

