Virtual Users | Verständnisfrage
Hallo.
Ich hätte noch eine Verständnisfrage zu Virtual Users.
In main.cf habe ich folgende Optionen gesetzt: virtual_mailbox_base = /var/spool/virtual_mailboxes smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination, check_policy_service inet:127.0.0.1:60000
In /etc/postfix/virtual_mailboxes_recipients habe ich folgenden Eintrag: kontakt.sievetest@mxtest.example.de ppim_kontakt
Für diesen User habe ich auch einen Eintrag in /etc/dovecot/users: kontakt.sievetest@mxtest.example.de:{SHA512-CRYPT}$6$2gekürzt.:::::::
Nehme ich den Eintrag in der /etc/postfix/virtual_mailboxes_recipients für kontakt.sievetest@mxtest.example.de raus, ist Mail an kontakt.sievetest@mxtest.example.de nicht mehr zustellbar mit folgender Fehlermeldung: Recipient address rejected: User unknown in virtual mailbox table. Das ist wohl auf reject_unauth_destination zurück zu führen, wie ich denke.
Überhaupt auf die Idee gekommen, diesen Eintrag zu entfernen bin ich, weil unter /var/spool/virtual_mailboxes/ kein Verzeichnis ppim_kontakt/ vorhanden ist, sondern lediglich unter dem Home-Verzeichnis der Virtual User, die ich in Dovecot definiert habe, nämlich unter /home/vmail/kontakt.sievetest@mxtest.example.de/Maildir/ (Dort landet die Mail auch).
Dazu hätte ich 2 Fragen: 1) Ist meine Konfiguration in /etc/postfix/virtual_mailboxes_recipients überhaupt richtig und falls ja, warum gibt man dort dann ein Verzeichnis an, welches nicht genutzt wird?
2) Gibt es eine Möglichkeit auf die unter Dovecot definierten Mailboxen/UserDB zu prüfen sodass man sich die doppelten Einträge sparen kann?
Oder habe ich das komplett falsch verstanden?
Danke, Steffi
Hallo Steffi,
* Stefanie Leisestreichler stefanie.leisestreichler@peter-speer.de:
Ich hätte noch eine Verständnisfrage zu Virtual Users.
In main.cf habe ich folgende Optionen gesetzt: virtual_mailbox_base = /var/spool/virtual_mailboxes smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination, check_policy_service inet:127.0.0.1:60000
In /etc/postfix/virtual_mailboxes_recipients habe ich folgenden Eintrag: kontakt.sievetest@mxtest.example.de ppim_kontakt
Für diesen User habe ich auch einen Eintrag in /etc/dovecot/users: kontakt.sievetest@mxtest.example.de:{SHA512-CRYPT}$6$2gekürzt.:::::::
Nehme ich den Eintrag in der /etc/postfix/virtual_mailboxes_recipients für kontakt.sievetest@mxtest.example.de raus, ist Mail an kontakt.sievetest@mxtest.example.de nicht mehr zustellbar mit folgender Fehlermeldung: Recipient address rejected: User unknown in virtual mailbox table. Das ist wohl auf reject_unauth_destination zurück zu führen, wie ich denke.
Überhaupt auf die Idee gekommen, diesen Eintrag zu entfernen bin ich, weil unter /var/spool/virtual_mailboxes/ kein Verzeichnis ppim_kontakt/ vorhanden ist, sondern lediglich unter dem Home-Verzeichnis der Virtual User, die ich in Dovecot definiert habe, nämlich unter /home/vmail/kontakt.sievetest@mxtest.example.de/Maildir/ (Dort landet die Mail auch).
Dazu hätte ich 2 Fragen:
- Ist meine Konfiguration in /etc/postfix/virtual_mailboxes_recipients
überhaupt richtig und falls ja, warum gibt man dort dann ein Verzeichnis an, welches nicht genutzt wird?
- Gibt es eine Möglichkeit auf die unter Dovecot definierten
Mailboxen/UserDB zu prüfen sodass man sich die doppelten Einträge sparen kann?
Oder habe ich das komplett falsch verstanden?
Du willst die Mail mit Postfix (nach Prüfung) annehmen und dann soll Dovecot sie erhalten und an den Account ausliefernm, ja?
In diesem Fall kannst Du Dir das Setup vereinfachen:
- Postfix routet und filtert, aber es verwaltet keine Mailboxen mehr - Postfix betrachtet die Empfängerdomain als relay_domain - Postfix übergibt alle Nachrichten an diese relay_domain an dovecot - Dovecot betreibt einen LMTP-Server und nimmt die Nachrichten an - Dovecot wendet serverseitige SIEVE-Filter an (optional) - Dovecot legt die Nachrichten in Mailboxen ab
Konfiguriere Dir Dovecot dazu so, dass es einen LMTP-Server auf 127.0.0.1:24 startet. Dann trage in Postfix die Empfängerdomain in $relay_domains ein.
Damit Postfix Nachrichten für die Empfängerdomain zu dovecot routet braucht Postfix eine $transport_maps:
empfaengerdomain lmtp:127.0.0.1:24
Jetzt kannst Du Nachrichten an Mailboxen in dovecot senden.
Möglicherweise hast Du jetzt aber ein Zustellproblem, denn Deine Mailbox in Dovecot heißt kontakt.sievetest@mxtest.example.de und Du willst auch Nachrichten von contact.sievetest@mxtest.example.de in diese Mailbox routen.
Das löst Du mit einer Alias-Tabelle. Es muss eine $virtual_alias_maps-Tabelle sein, weil Postfix diese *vor* den transport_maps auswertet und dann mit dem richtigen Ziel in der transport_maps weitersucht. Das sähe dann im Beispiel so aus:
contact.sievetest@mxtest.example.de kontakt.sievetest@mxtest.example.de
Grüße
p@rick
Am 21.02.19 um 15:32 schrieb Patrick Ben Koetter:
Du willst die Mail mit Postfix (nach Prüfung) annehmen und dann soll Dovecot sie erhalten und an den Account ausliefernm, ja?
In diesem Fall kannst Du Dir das Setup vereinfachen:
- Postfix routet und filtert, aber es verwaltet keine Mailboxen mehr
- Postfix betrachtet die Empfängerdomain als relay_domain
- Postfix übergibt alle Nachrichten an diese relay_domain an dovecot
- Dovecot betreibt einen LMTP-Server und nimmt die Nachrichten an
- Dovecot wendet serverseitige SIEVE-Filter an (optional)
- Dovecot legt die Nachrichten in Mailboxen ab
Konfiguriere Dir Dovecot dazu so, dass es einen LMTP-Server auf 127.0.0.1:24 startet. Dann trage in Postfix die Empfängerdomain in $relay_domains ein.
Damit Postfix Nachrichten für die Empfängerdomain zu dovecot routet braucht Postfix eine $transport_maps:
empfaengerdomain lmtp:127.0.0.1:24
Jetzt kannst Du Nachrichten an Mailboxen in dovecot senden.
Möglicherweise hast Du jetzt aber ein Zustellproblem, denn Deine Mailbox in Dovecot heißtkontakt.sievetest@mxtest.example.de und Du willst auch Nachrichten voncontact.sievetest@mxtest.example.de in diese Mailbox routen.
Das löst Du mit einer Alias-Tabelle. Es muss eine $virtual_alias_maps-Tabelle sein, weil Postfix diese*vor* den transport_maps auswertet und dann mit dem richtigen Ziel in der transport_maps weitersucht. Das sähe dann im Beispiel so aus:
contact.sievetest@mxtest.example.de kontakt.sievetest@mxtest.example.de
Wow. Genau so werde ich es machen! 1000 Dank.
Steffi
Am 21.02.19 um 15:32 schrieb Patrick Ben Koetter:
Konfiguriere Dir Dovecot dazu so, dass es einen LMTP-Server auf 127.0.0.1:24 startet. Dann trage in Postfix die Empfängerdomain in $relay_domains ein.
Damit Postfix Nachrichten für die Empfängerdomain zu dovecot routet braucht Postfix eine $transport_maps:
empfaengerdomain lmtp:127.0.0.1:24
Ich hatte bereits das dovecot lmtp in meiner Konfiguration genutzt, allerdings über einen unix socket.
Diesen habe ich anstelle des von Dir vorgeschlagenen TCP/IP Sockets hierfür genutzt. Das scheint zu funktionieren. Spricht etwas dagegen den unix socket zu verwenden?
Ich habe all das hier auskommentiert, was nach meinem Verständnis dann nicht mehr notwendig ist und nur noch die folgenden Einstellungen behalten:
# Virtual Mailbox Domains #virtual_uid_maps = static:2222 #virtual_gid_maps = static:2222 #virtual_mailbox_domains = mxtest.example.de, example.de #virtual_mailbox_base = /var/spool/virtual_mailboxes #virtual_mailbox_maps = hash:/etc/postfix/virtual_mailboxes_recipients virtual_alias_maps = hash:/etc/postfix/virtual_mailboxes_aliases # Use Dovecot LMTP Service to deliver Mails to Dovecot ###### #virtual_transport = lmtp:unix:private/dovecot-lmtp # Definition, wie Postfix die Mail für bestimmte Domains befördern soll: # Diese Definition soll für example.de ziehen: transport_maps = hash:/etc/postfix/transport # Hier kommen die Domains, die so behandelt werden sollen: relay_domains = mxtest.example.de, example.de
In der /etc/postfix/transport habe ich entsprechend folgendes stehen: mxtest.example.de lmtp:unix:private/dovecot-lmtp
Ist das so auch OK?
Danke, Steffi
* Stefanie Leisestreichler stefanie.leisestreichler@peter-speer.de:
Am 21.02.19 um 15:32 schrieb Patrick Ben Koetter:
Konfiguriere Dir Dovecot dazu so, dass es einen LMTP-Server auf 127.0.0.1:24 startet. Dann trage in Postfix die Empfängerdomain in $relay_domains ein.
Damit Postfix Nachrichten für die Empfängerdomain zu dovecot routet braucht Postfix eine $transport_maps:
empfaengerdomain lmtp:127.0.0.1:24
Ich hatte bereits das dovecot lmtp in meiner Konfiguration genutzt, allerdings über einen unix socket.
Diesen habe ich anstelle des von Dir vorgeschlagenen TCP/IP Sockets hierfür genutzt. Das scheint zu funktionieren. Spricht etwas dagegen den unix socket zu verwenden?
Es spricht sogar viele dafür. In der Transport map muss dann folgendes stehen:
domain lmtp:unix:/pfad/zu/socket
Wenn Postfix chrooted läuft, sollte dovecot den socket in das chroot von Postfix legen. Sonst 'sieht' Postfix den nicht.
Ich habe all das hier auskommentiert, was nach meinem Verständnis dann nicht mehr notwendig ist und nur noch die folgenden Einstellungen behalten:
# Virtual Mailbox Domains #virtual_uid_maps = static:2222 #virtual_gid_maps = static:2222 #virtual_mailbox_domains = mxtest.example.de, example.de #virtual_mailbox_base = /var/spool/virtual_mailboxes #virtual_mailbox_maps = hash:/etc/postfix/virtual_mailboxes_recipients virtual_alias_maps = hash:/etc/postfix/virtual_mailboxes_aliases # Use Dovecot LMTP Service to deliver Mails to Dovecot ###### #virtual_transport = lmtp:unix:private/dovecot-lmtp # Definition, wie Postfix die Mail für bestimmte Domains befördern soll: # Diese Definition soll für example.de ziehen: transport_maps = hash:/etc/postfix/transport # Hier kommen die Domains, die so behandelt werden sollen: relay_domains = mxtest.example.de, example.de
In der /etc/postfix/transport habe ich entsprechend folgendes stehen: mxtest.example.de lmtp:unix:private/dovecot-lmtp
Ist das so auch OK?
Sieht gut aus.
p@rick
Am 21.02.19 um 19:28 schrieb Patrick Ben Koetter:
# Virtual Mailbox Domains #virtual_uid_maps = static:2222 #virtual_gid_maps = static:2222 #virtual_mailbox_domains = mxtest.example.de, example.de #virtual_mailbox_base = /var/spool/virtual_mailboxes
^^ Die unter /var/spool/virtual_mailboxes angelegten Verzeichnisse lösche ich somit.
Ebenso die unter /var/mail/$user angelegten Verzeichnisse der Virtuellen User beabsichtige ich zu löschen.
#virtual_mailbox_maps = hash:/etc/postfix/virtual_mailboxes_recipients virtual_alias_maps = hash:/etc/postfix/virtual_mailboxes_aliases # Use Dovecot LMTP Service to deliver Mails to Dovecot ###### #virtual_transport = lmtp:unix:private/dovecot-lmtp # Definition, wie Postfix die Mail für bestimmte Domains befördern soll: # Diese Definition soll für example.de ziehen: transport_maps = hash:/etc/postfix/transport # Hier kommen die Domains, die so behandelt werden sollen: relay_domains = mxtest.example.de, example.de
In der /etc/postfix/transport habe ich entsprechend folgendes stehen: mxtest.example.de lmtp:unix:private/dovecot-lmtp
Ist das so auch OK?
Sieht gut aus.
Perfekt. Dann bleibt das jetzt so und ich dokumentiere das entsprechend.
Jetzt ist das auch für mein Verständnis irgendwie runder geworden.
Noch nicht ganz verstanden habe ich jedoch in Verbindung mit den Virtual Users, dass ich mit der "alten" Konfiguration in der virtual_mailbox_maps Mailaccounts auf User mappen musste, deren Verzeichnisse unter /var/spool/virtual_mailboxes/$user oder /var/mail/$user nie - im Gegensatz zu den lokalen Usern - irgendwelche Inhalte hatten. Ohne diese Definitionen funktionierte jedoch die Zustellung an die Virtuellen User, die per dovecot definiert waren, nicht. Ich frage mich, warum das in dieser Konstellation nur so umsetzbar war und an welcher Stelle im Workflow das scheiterte, wenn die Definition nicht vorhanden war.
participants (2)
-
Patrick Ben Koetter
-
Stefanie Leisestreichler