Dovecot user vmail vs. dovecot

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Antworten
scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Dovecot user vmail vs. dovecot

Beitrag von scientific » 07.10.2017 09:29:52

Hi.

Ich plage mich grad wieder einmal mit meinem dovecot herum.

In den allermeisten Howtos findet man user und group "vmail" als Besitzer und Gruppen für dovecot-relevante Dateien, Dirs und Sockets.
Auch bei Anleitungen für debianbasierende Distros.

Jedoch wird dieser User bei einer Installation von debians dovecot nicht angelegt, sondern ein user dovecot.

Ich versuche nämlich wieder einmal ACLs und Shared Folders einzurichten und scheitere wahrscheinlich genau an dem, dass die Dateirechte nicht passen.

Macht das Debian tatsächlich anders, oder muss man den tatsächlich erst anlegen?
Läuft dovecot prinzipiell als root, oder doch als user dovecot oder vmail? Und werden nur Prozesse zum Abruf von Emails als der angemeldete User?

Lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Benutzeravatar
novalix
Beiträge: 1908
Registriert: 05.10.2005 12:32:57
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: elberfeld

Re: Dovecot user vmail vs. dovecot

Beitrag von novalix » 07.10.2017 12:54:19

Hola,
der User "vmail" ist kein Systemuser, der von irgendeinem Programm bei der Installation angelegt wird.* Das ein User dieses Namens immer wieder auftaucht ist so etwas wie eine Gebrauchskonvention für Setups, die mit virtual maps arbeiten, also die Mailuserverwaltung von der Unixuserverwaltung abstrahieren.
In solchen Setups müssen der User und die Gruppe "vmail" (oder eben ein anderer Name, der Dir gefällt) händisch angelegt werden.

* Es kann sein, dass solch ein User von Verwaltungssoftware im Installationsskipt erstellt wird. Ich kenne aber keine. MTAs sind per default aber üblicherweise auf das Mapping mit Unixusern geeicht.
Das Wem, Wieviel, Wann, Wozu und Wie zu bestimmen ist aber nicht jedermannns Sache und ist nicht leicht.
Darum ist das Richtige selten, lobenswert und schön.

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Dovecot user vmail vs. dovecot

Beitrag von scientific » 08.10.2017 17:41:19

Vielen Dank.
Jetzt ist mir das auch mal klar geworden. Und auf einmal tun sich Todos auf, die genau dieses Thema behandeln.

Ich hab jetzt von den Unix-Usern in dovecot auch auf vmail umgestellt.

Ich nutze Maildir mit Layout=fs und dem separator /

Jetzt tut sich ein neues Problem auf. Es werden in Thunderbird Unterverzeichnisse der Imap-Folder-Struktur nur bis Ebene 1 angezeigt.
Im Dialog zum Abonnieren sehe ich also die Verzeichnisse unter INBOX/ und eine Ebene darunter. Ich habe aber wesentlich mehr Ebenen...

Un Roundcube werden alle Ebenen zum Abonnieren angeboten.

Code: Alles auswählen

 doveadm mailbox list - u $USER
zeigt ebenfalls alle Ebenen an.
Ich kann mit

Code: Alles auswählen

 doveadm mailbox subscribe -u scientific $(doveadm mailbox list -u scientific) 
alle Folder abonnieren. Dann werden sie in TB auch als abonniert angezeigt. Jedoch in der Folderpane sind sie nur bis Ebene 1 teilw. bis eine Ebene weiter zu sehen.

Ich habdie tb-workarounds in dovecot gemäß den Empfehlungen von dovecot beim Einsatz von TB und Layout=fs aktiviert.

Shared Folders werden auch nur aus der obersten Ebene angezeigt...
Im Log gibts keine Fehlermeldungen über fehlende Files oder Rechte!

Ideen? Mir sind sie ausgegangen...

Lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Dovecot user vmail vs. dovecot

Beitrag von scientific » 10.10.2017 22:55:01

Thunderbird scheint mit dovecot nicht gut zusammenzuarbeiten. Zumindest unter der Voraussetzung dass man das LAYOUT auf fs setzt und der Separator "/" ist.

Code: Alles auswählen

doveadm mailbox list -u scientific
listet auch die Shared Mailboxes auf, jedoch in Thunderbird scheinen sie nicht oder nur fehlerhaft auf und verschwinden wieder, oder sie aktualisieren sich nicht.
Auch im Abonnier-Dialog sind gelegentlich nicht alle Subfolder sichtbar, und in der Folderpane ebenso.

Nun gut, ich habe jetzt lange herumexperimentiert, habe auf $ als Separator umgestellt und habe jetzt endlich eine Konfiguration, die auch mit Thunderbird inklusive ACL und Shared Mailboxes klappt.
Die Shared Mailboxes werden allerdings in Outlook und K9Mail (Android) nicht angezeigt, und in Outlook wie auch K9Mail kommen Posteingang, Draft, Trash und Sent als "INBOX/Sent" (und entsprechend die anderen) vor.

Die Sieve-Skripte müssen ebenfalls an den Separator angepasst werden!!!

Code: Alles auswählen

if header :matches "subject" "TESTEMAIL *"
    {  fileinto :create "INBOX$TESTORDNER"; stop; }

Code: Alles auswählen

# dovecot -n
# 2.2.27 (c0f36b0): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.4.16 (fed8554)
# OS: Linux 4.12.0-1-amd64 x86_64 Debian 9.1 btrfs
auth_debug = yes
auth_mechanisms = plain login
auth_socket_path = /var/run/dovecot/auth-userdb
auth_verbose = yes
first_valid_uid = 1000
imap_client_workarounds = tb-extra-mailbox-sep
lda_mailbox_autocreate = yes
lda_mailbox_autosubscribe = yes
mail_debug = yes
mail_location = maildir:/var/mail/%u/Maildir:LAYOUT=fs
mail_plugins = zlib quota acl
mail_privileged_group = vmail
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 {
  hidden = no
  ignore_on_failure = no
  inbox = no
  list = children
  location = maildir:%%h/Maildir:LAYOUT=fs:INDEX=~/shared/%%u:INDEXPVT=%h/shared/%%u
  prefix = shared$%%u$
  separator = $
  subscriptions = yes
  type = shared
}
namespace inbox {
  hidden = no
  inbox = yes
  location = 
  mailbox Archiv {
    special_use = \Archive
  }
  mailbox Archive {
    auto = subscribe
    special_use = \Archive
  }
  mailbox Archives {
    special_use = \Archive
  }
  mailbox "Deleted Messages" {
    special_use = \Trash
  }
  mailbox Drafts {
    auto = subscribe
    special_use = \Drafts
  }
  mailbox Entwürfe {
    special_use = \Drafts
  }
  mailbox "Gelöschte Elemente" {
    special_use = \Trash
  }
  mailbox "Gelöschte Objekte" {
    special_use = \Trash
  }
  mailbox Gesendet {
    special_use = \Sent
  }
  mailbox "Gesendete Elemente" {
    special_use = \Sent
  }
  mailbox "Gesendete Objekte" {
    special_use = \Sent
  }
  mailbox Junk {
    auto = subscribe
    special_use = \Junk
  }
  mailbox Papierkorb {
    special_use = \Trash
  }
  mailbox Sent {
    auto = subscribe
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
  mailbox Spam {
    special_use = \Junk
  }
  mailbox Trash {
    auto = subscribe
    special_use = \Trash
  }
  mailbox virtual/All {
    comment = All my messages
    special_use = \All
  }
  mailbox virtual/Flagged {
    comment = All my flagged messages
    special_use = \Flagged
  }
  prefix = INBOX$
  separator = $
  subscriptions = yes
}
passdb {
  args = scheme=CRYPT username_format=%u /etc/dovecot/users
  driver = passwd-file
}
plugin {
  acl = vfile:/etc/dovecot/dovecot-acl
  acl_shared_dict = file:/var/mail/shared-mailboxes
  setting_name = sieve, managedsieve
  sieve = file:/var/spool/dovecot/sieve/%n;active=/var/spool/dovecot/sieve/%n/%n.sieve
}
postmaster_address = postmaster@localhost
protocols = " imap lmtp sieve sieve"
service auth {
  unix_listener auth-client {
    group = vmail
    mode = 0666
    user = dovecot
  }
}
service lmtp {
  user = Debian-exim
}
ssl = required
ssl_cert = </etc/dovecot/dovecot.crt
ssl_key =  # hidden, use -P to show it
userdb {
  args = username_format=%u /etc/dovecot/users
  driver = passwd-file
}
verbose_proctitle = yes
protocol lmtp {
  mail_plugins = zlib quota acl sieve acl
}
protocol lda {
  mail_plugins = zlib quota acl sieve acl
}
protocol imap {
  mail_max_userip_connections = 10
  mail_plugins = zlib quota acl acl imap_quota imap_acl
}
Für tiefergehende Subfolderstrukturen sei noch gesagt, dass ALLE oberen Folder zumindest die ACL "l" (kleines L) für "Lesen des Ordners" haben müssen, sonst kann auf die tieferen Ordner nicht gesehen werden und diese in der Folge nicht angezeigt werden.
Spannend ist auch, dass es eine gewisse Zeit nach dem setzen der ACL dauert, bis die Folder in Thunderbird auch tatsächlich im Namensraum shared angezeigt werden... Das finde ich äußerst verwunderlich..

Noch zu sagen wäre, ich arbeite ohne Domains, daher gibts auch keine Sortierung nach Domains, und ich kanns auch nicht testen.

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Dovecot user vmail vs. dovecot

Beitrag von scientific » 11.10.2017 10:04:01

Ich habs grad auf Outlook getestet... Auch hier werden die Ordner mit dem Trennzeichen "$" anstandslos angezeigt, sogar die Shared Folder!

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Dovecot user vmail vs. dovecot

Beitrag von scientific » 11.10.2017 17:39:37

Hier noch einmal eine verbesserte Config, welche auch Public-Folder zusätzlich noch unterstützt.

Code: Alles auswählen

# dovecot -n
# 2.2.27 (c0f36b0): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.4.16 (fed8554)
# OS: Linux 4.12.0-0.bpo.1-amd64 x86_64 Debian 9.1 btrfs
auth_debug = yes
auth_mechanisms = plain login
auth_socket_path = /var/run/dovecot/auth-userdb
auth_verbose = yes
first_valid_uid = 1000
imap_client_workarounds = tb-extra-mailbox-sep
lda_mailbox_autocreate = yes
lda_mailbox_autosubscribe = yes
mail_debug = yes
mail_location = maildir:/var/mail/%u/Maildir:LAYOUT=fs
mail_plugins = zlib quota acl
mail_privileged_group = vmail
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 {
  hidden = no
  ignore_on_failure = no
  inbox = no
  list = children
  location = maildir:%%h/Maildir:LAYOUT=fs:INDEX=~/shared/%%u:INDEXPVT=%h/shared/%%u
  prefix = shared$%%u$
  separator = $
  subscriptions = no
  type = shared
}
namespace {
  list = children
  location = maildir:/var/mail/public/:LAYOUT=fs:INDEXPVT=%h/public
  prefix = Roseggergasse$
  separator = $
  subscriptions = no
  type = public
}
namespace inbox {
  hidden = no
  inbox = yes
  location =
  mailbox Archiv {
    special_use = \Archive
  }
  mailbox Archive {
    auto = subscribe
    special_use = \Archive
  }
  mailbox Archives {
    special_use = \Archive
  }
  mailbox "Deleted Messages" {
    special_use = \Trash
  }
  mailbox Drafts {
    auto = subscribe
    special_use = \Drafts
  }
  mailbox Entwürfe {
    special_use = \Drafts
  }
  mailbox "Gelöschte Elemente" {
    special_use = \Trash
  }
  mailbox "Gelöschte Objekte" {
    special_use = \Trash
  }
  mailbox Gesendet {
    special_use = \Sent
  }
  mailbox "Gesendete Elemente" {
    special_use = \Sent
  }
  mailbox "Gesendete Objekte" {
    special_use = \Sent
  }
  mailbox Junk {
    auto = subscribe
    special_use = \Junk
  }
  mailbox Papierkorb {
    special_use = \Trash
  }
  mailbox Sent {
    auto = subscribe
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
  mailbox Spam {
    special_use = \Junk
  }
  mailbox Trash {
    auto = subscribe
    special_use = \Trash
  }
  mailbox virtual/All {
    comment = All my messages
    special_use = \All
  }
  mailbox virtual/Flagged {
    comment = All my flagged messages
    special_use = \Flagged
  }
  prefix = INBOX$
  separator = $
  subscriptions = no
}
namespace subscriptions {
  hidden = yes
  list = no
  location =
  prefix =
  subscriptions = yes
}
passdb {
  args = scheme=CRYPT username_format=%u /etc/dovecot/users
  driver = passwd-file
}
plugin {
  acl = vfile:/etc/dovecot/dovecot-acl
  acl_anyone = allow
  acl_shared_dict = file:/var/mail/shared-mailboxes
  setting_name = sieve, managedsieve
  sieve = file:/var/spool/dovecot/sieve/%n;active=/var/spool/dovecot/sieve/%n/%n.sieve
}
postmaster_address = postmaster@localhost
protocols = " imap lmtp sieve sieve"
service auth {
  unix_listener auth-client {
    group = vmail
    mode = 0666
    user = dovecot
  }
}
service lmtp {
  user = Debian-exim
}
ssl = required
ssl_cert = </etc/dovecot/dovecot.crt
ssl_key =  # hidden, use -P to show it
userdb {
  args = username_format=%u /etc/dovecot/users
  driver = passwd-file
}
verbose_proctitle = yes
protocol lmtp {
  mail_plugins = zlib quota acl sieve acl
}
protocol lda {
  mail_plugins = zlib quota acl sieve acl
}
protocol imap {
  mail_max_userip_connections = 10
  mail_plugins = zlib quota acl acl imap_quota imap_acl
}
lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Antworten