• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Maildir, postfix, dovecot

padersuse

Hacker
Ich habe unter Postfix in der Datei /etc/postfix/main.cf in der Zeile
Code:
home_mailbox = ~/Maildir
die Maildir-Einstellung gewählt.
In der Datei /etc/dovecot/conf.d/10-mail.conf habe ich in der Zeile
Code:
mail_location = maildir:~/Maildir
auch die Maildir-Einstellung gewählt. Für Mailadressen, die von Postfix nicht aufgelöst werden können, habe ich die Datei /etc/dovecot/users angelegt, z.B. mit einem Eintrag für blubb@example.com mit dem Zielverzeichnis /srv/vmail/example.com/blubb. Damit blubb@example.com überhaupt über den Befehl
Code:
doveadm user
aufgelöst werden kann, habe ich noch die Datei /etc/dovecot/conf.d/auth-passwdfile.conf.ext aktiviert, indem ich in der Datei /etc/dovecot/conf.d/10-auth.conf das Kommentarzeichen für die Datei auth-passwdfile.conf.ext herausgenommen. Widerspricht die Maildir-Einstellung unter /etc/dovecot/conf.d/10-mail.conf dem abweichenden Zielverzeichnis für blubb@example.com (/srv/vmail/example.com/blubb) ?
Eigentlich hätte ich gern alle Mails für blubb im Verzeichnis /srv/vmail/example.com/blubb
 
Ein mailing_system ist eine komplexe Angelegenheit.
Deine kargen Informationen reichen für eine Hilfestellung nicht aus.
Ich kann nur vermuten.
Dovecot: du versuchst irgendwas mit ~/Maildir. Was erwartest du dir von Dovecot?
So wie es aussieht, brauchst du Dovecot nicht.
padersuse schrieb:
... Für Mailadressen, die von Postfix nicht aufgelöst werden können, habe ich die Datei /etc/dovecot/users angelegt, ..
Eigentlich hätte ich gern alle Mails für blubb im Verzeichnis /srv/vmail/example.com/blubb
Dovecot ist niemals zuständig für irgendwelche Entscheidungen wie: was wenn nicht oder wohin wenn doch.
Dieses mail relaying/filtering und mapping macht nur postfix.

Gruß
Gräfin Klara
 
OP
P

padersuse

Hacker
Hallo Gräfin Klara,

über Postfix und dovecot können sich User auf meinem lokalen Server, die in der/etc/passwd angelegt sind, bereits gegenseitig Mails senden. Es ist geplant, über getmail regelmäßig die Mails von strato abzuholen. Dabei sollen auch Mails für Mailadressen abgeholt werden, die dem lokalen System so nicht bekannt sind, das geht z. B. über die Datei /etc/dovecot/users. Dort kann auch ein Zielverzeichnis für den User "blubb@example.com", angegeben werden. Dieses Verzeichnis soll dann aber nicht das Maildir - Verzeichnis im Verzeichnis /home/blubb sein, sondern /srv/vmail/example.com/blubb. Unter Dovecot und Postfix kann ich eine Maildir-Einstellung wählen, die aber dann wohl im Home-Verzeichnis der User liegt. Gerne würde ich alle Mails für die User aber im Verzeichnis /srv/vmail/example.com/blubb und /srv/vmail/andere.site/bla speichern, also auch lokale Mails, um dann z.B. über Kmail darauf zuzugreifen. An der Maildir-Einstellung kann ich dann wohl nicht festhalten und welche Einstellungen wähle ich dann. Oder ist es besser, für lokale Mails die Maildir-Einstellung in Postfix zu wählen, aber in Dovecot diese Einstellung aussen vor zu lassen ? Mailserver einzurichten, ist sehr komplex, hoffe mein Anliegen deutlich gemacht zu haben. Ich kann also unter Dovecot in der Datei /etc/dovecot/users ein anderes Zielverzeichnis wählen für Mailadressen, die dem lokalen Server nicht bekannt sind, gleichzeitig kann ich unter /etc/dovecot/conf.d/10-mail.conf eine Maildir-Einstellung wählen, die ich aber eigentlich nicht will, weil ich alle Mails eben unter /srv/vmail/verschiedene.sites/ user abspeichern möchte
Gruß Padersuse
 
Du verstehst den Aufbau eines mailingsystems nicht und bringst deshalb keine Klarheit in dein Vorhaben.
Gehen wir ein paar deiner Sätze durch.

padersuse schrieb:
über Postfix und dovecot können sich User auf meinem lokalen Server, die in der/etc/passwd angelegt sind, bereits gegenseitig Mails senden.
Dovecot hat mit dem Senden von mails nichts zu tun. Ausschließlich postfix empfängt mails vom user.
Dass die user in /etc/passwd angelegt sind, ist die falsche Herangehensweise.
Beim Senden user -> postfix erfolgt die Authentifizierung des users an postfix über password (verschlüsselt oder plain) oder SSL/TLS.
Das System /etc/passwd hat damit nichts zu tun.

padersuse schrieb:
Es ist geplant, über getmail regelmäßig die Mails von strato abzuholen. Dabei sollen auch Mails für Mailadressen abgeholt werden, die dem lokalen System so nicht bekannt sind, das geht z. B. über die Datei /etc/dovecot/users.
getmail holt ab und übergibt an postfix. Auch hier ist Dovecot nicht beteiligt.
Nehmen wir folgendes an:
Einer deiner user kommt zu dir und sagt, das System soll seine mails vom strato abholen.
Damit werden alle Daten wie password und seine email adresse zum Abholen in getmail eingetragen.
getmail holt dann regelmäßig ab und übergibt an postfix.
D.h., dass diese Daten dem System sehr wohl bekannt sind und postfix wird diese mails entsprechend verteilen.

Nun gibt es aber auch user, die nicht zu dir kommen und die mails selbstständig von irgendeinem mailserver abholen.
Das läßt sich ja in z.B. kmail einstellen.
Es ist wichtig zu verstehen, dass diese mails mit dem System nichts zu tun haben. Die gehen an diesem vorbei.
D.h. es gibt keine Maildaten, die dem lokalen System nicht bekannt sind.

padersuse schrieb:
... die aber dann wohl im Home-Verzeichnis der User liegt.
Nur jene mails, die selbstständig vom user am mailingsystem vorbei abgeholt werden, liegen dort.
Alle anderen, die vom system verwaltet werden. liegen am mail_server an zentraler Stelle.

padersuse schrieb:
Gerne würde ich alle Mails für die User aber im Verzeichnis /srv/vmail/example.com/blubb und /srv/vmail/andere.site/bla speichern, also auch lokale Mails, um dann z.B. über Kmail darauf zuzugreifen.
Ja, das ist diese beschriebene "zentraler Stelle" am mail_server, an der die mails vom user abgeholt werden.
Aber wie die dort liegen. damit hast du dich noch gar nicht beschäftigt.
Das kann sein:
1. In einem bestimmten directory am server als files in einem Fileformat wie mbox, mdir oder MH. Dafür brauchst du kein Dovecot.
oder
2. In einem bestimmten directory am server im Format pop3. Dafür brauchst du Dovecot
oder
3. Von Dovecot verwaltet in einem bestimmten directory am server im Format imap.
Wobei imap für deinen Fall wohl die beste Lösung ist.

In allen Fällen kann z.b. kmail oder thunderbird die mails vom server abholen.

Man kann 3 Arten von mails unterscheiden,
1. mails vom system. z.B. root@example.lan
2. mails von user zu user, z.B. clarissa@example.lan nach padersuse@example.lan
3. mails, die von getmail abgeholt wurden, z.B. padersuse@gmx.de wird von postfix gemapped nach padersuse@example.lan

Das wird von postfix auch so zugeteilt, dovecot hat damit nichts zu tun und soll damit auch nichts zu tun haben.

An deiner Stelle würde ich mit dem wichtigsten beginnen, nämlich die Kommunikation zwischen
getmail <-> postfix und dovevot <-> postfix (sofern du dovecot noch brauchst)
Siehe dazu lmtp. z.B. postfix/main.cf - mailbox_transport = lmtp:unix:private/dovecot-lmtp

Genug für heute
Gräfin Klara
 
Noch ein Schaltplan zum besseren Verständnis:
Code:
          +---------+        +---------+      +---------+
          | getmail |        | postfix |      | dovecot |
  #>------>         >-------->         |      |         |
          |         |        |         |      |         |
          |         |        |         |      |         |       +-------+
          +---------+        |         >------|         >-------| Kmail |
                             |         |      |         |       |       |
  #>-----------A------------->         |      +---------+       |       |
                             |         |                        |       |
  #<-----------B-------------<         <------------------------<       | 
                             |         |                        |       |
                             +---------+                        |       |
                                                                |       |
  #<>----------C-----------------------------------------------<>       |
                                                                |       |
                                                                +-------+
(c) Gräfin Klara
# soll das Internet sein

getmail holt mails ab und sendet an postfix - postfix verteilt und sendet an dovecot - der user holt mit kmail von dovecot ab.
Senden von kmail geht direkt an postfix - postfix entscheidet zwischen internem oder externem mail
Wenn intern padersuse@example.lan, dann sendet postfix nach dovecot
wenn extern padersuse@gmx.de, dann sendet postfix über B an mail.gmx,de.
Der user kann kmail so konfigurieren, dass er direkt mit extern über C mails sendet oder abholt. Das geht am System vorbei.
Aus dem Internet kann postfix über A mails empfangen (nicht abholen), mappen und an dovecot weitergeben
aber das wirst du nicht benötigen.

Wie du sehen kannst, ist die Aufgabenstellung streng geregelt.
 
OP
P

padersuse

Hacker
Hallo Gräfin Klara,
vielen Dank für die umfangreiche Antwort. Ich möchte um Verständnis bitten, dass ich ein Hobby-Linux-Anwender bin und mich für die Zusammenhänge interessiere, die man gern auch erklären darf.
Mein Mailserver soll für zunächst 2 User Mails von Strato abholen und auf diesem im Maildir-Format ablegen . Die beiden User sollen von Windows 10-Rechnern mit Thunderbird auf meinen internen Imap-Server zugreifen können. Thunderbird muss sich, so glaube ich, authentifizieren an meinem Email-Server über SASL. Postfix selbst ist, so lese ich im Buch Linux-Server, (Deimeke, Kania, Van Soest, Heinlein, Miesen), 5. Auflage, nicht in der Lage, die Authentifizierung durchzuführen und kann sich hier des Programmes Dovecot bedienen. Liege ich da falsch ?
Gruß Padersuse
 

spoensche

Moderator
Teammitglied
Du kannst den Postfix die SASL Authentication über Dovecot SASL durchführen.

Zu deinem Maildir:

- Ein Server Dienst, z.B. Postfix, Dovecot, darf nicht auf /home/user zugreifen, weil der Serverdienst unter einer anderen Benutzerkennung ausgeführt wird. Andernfalls kann im Falle der Fälle, ein Angreifer mit der Benutzerkennung des Dienstes Zugriff auf private Daten erhalten, wenn die Zugriffsrechte in /home/user nicht korrekt gesetzt sind (ist schnell passiert und fällt nicht so ohne weiteres auf).

- Besser ist ein eigenständiges globales Verzeichnis für die Mailablage, weil so nur die e-Mails eingesehen werden können, aber keinerlei private Daten der Benutzer.

Wo klemmt es den jetzt? Die einzige Frage in deinen Posts war die mit dem SASL.
 
OP
P

padersuse

Hacker
Hallo Spönsche,
wenn ich von einem zentralen Ort für meine Mails ausgehe, z.B. /srv/vmail/example.com/blubb/ , kann dann Postfix auch für den lokalen User blubb, der aber lokal am Rechner die Mailadresse blubb@ example.net hat, dort die Mails ablegen ?
Wie stelle ich Postfix bzw. Dovecot so ein, dass die Mails für blubb in eigenen Dateien abspeichert werden, aber eben nicht im Home-Verzeichnis, sondern eben unter /srv/vmail/example.com/blubb/ und für einen anderen User unter /srv/vmail/example.com/anderer_user/
Vielleicht bringe ich bei dem Maildir Begriff auch was durcheinander, aber bisher war für mich die Vorstellung damit verknüpft, dass die Mails in separaten Dateien und im Home-Verzeichnis abgelegt werden

Gruß
Padersuse
 
padersuse schrieb:
..Mein Mailserver soll für zunächst 2 User Mails von Strato abholen und auf diesem im Maildir-Format ablegen . Die beiden User sollen von Windows 10-Rechnern mit Thunderbird auf meinen internen Imap-Server zugreifen können.
Nun klärt sich die Situation langsam auf. Du willst dovecot als imap server, das ist eine gute Wahl.

Zu den Irritationen:
Maildir, /etc/passwd, ~/home
Diese Begriffe streichst du aus deinen Überlegungen. Vergiss sie. Sie führen dich in die falsche Richtung. Du brauchst das nicht!

imap:
dovecot empfängt ALLE mails von postfix und speichert diese in einem speziellen Fileformat in einem directory deiner Wahl am mailserver.
Sie werden NUR dort gespeichert und liegen da schön sortiert nach @email adressen.
Von dort werden sie von Thunderbird oder Kmail gelesen und angezeigt. (nicht abgeholt)
Das funktioniert ähnlich einem Filemanager, der den Inhalt eines Netzlaufwerkes anzeigt.

padersuse schrieb:
Thunderbird muss sich, so glaube ich, authentifizieren an meinem Email-Server über SASL. Postfix selbst ist, so lese ich im Buch Linux-Server, (Deimeke, Kania, Van Soest, Heinlein, Miesen), 5. Auflage, nicht in der Lage, die Authentifizierung durchzuführen und kann sich hier des Programmes Dovecot bedienen. Liege ich da falsch ?
Ja, das ist falsch.
Thunderbird muß sich an 2 Stellen authentifizieren bzw. anmelden.
Beim Senden an postfix, beim Lesen an dovecot - siehe meine Graphik oben.
Ich empfehle dir, dein System vorab so zu konfigurieren, dass an beiden Stellen nur die einfachste Methode der Anmeldung notwendig ist.
Das kann sein plain password, also unverschlüsselt oder noch besser, gar keine Authentifizierung.
Bei postfix erreichst du das im main.cf mit
smtpd_sasl_auth_enable = no
smtpd_use_tls = no

Du solltest, wie oben beschrieben, mit der Kommunikation zwischen getmail <-> postfix und dovevot <-> postfix beginnen.
Es gibt dafür die unterschiedlichsten Tipps, Beschreibungen und Anleitungen. Ich empfehle dir LMTP.
LMTP ist ein Austauschverfahren, (Protokoll), das dafür geschaffen wurde.
Erst wenn das funktioniert und damit die einzelnen Komponenten des Systems zusammenarbeiten,
kannst du mit der Zuteilung, dem mapping und routing der mails fortfahren.

Und wenn das alles funktioniert, (das braucht seine Zeit), erst dann beschäftigt du dich mit der Authentifizierung.
Die Authentifizierung ist der allerletzte Schritt. Es ist ein eigenes Thema, abseits des Mailverkehrs und füllt Bücherregale.

Gruß
Gräfin Klara
 

spoensche

Moderator
Teammitglied
padersuse schrieb:
Hallo Spönsche,
wenn ich von einem zentralen Ort für meine Mails ausgehe, z.B. /srv/vmail/example.com/blubb/ , kann dann Postfix auch für den lokalen User blubb, der aber lokal am Rechner die Mailadresse blubb@ example.net hat, dort die Mails ablegen ?
Wie stelle ich Postfix bzw. Dovecot so ein, dass die Mails für blubb in eigenen Dateien abspeichert werden, aber eben nicht im Home-Verzeichnis, sondern eben unter /srv/vmail/example.com/blubb/ und für einen anderen User unter /srv/vmail/example.com/anderer_user/
Vielleicht bringe ich bei dem Maildir Begriff auch was durcheinander, aber bisher war für mich die Vorstellung damit verknüpft, dass die Mails in separaten Dateien und im Home-Verzeichnis

Du musst in der dovecot Konfiguration (10-mail.conf) den Speicherort für die Mails angeben. Der Speicherort kann mit Formatierungszeichen (%d = domain name, %u, Benutzer) so festgelegt werden, wie du es haben möchtest.

Soll dein Mailserver nur eine Domain oder mehrere verwalten (z.B. example.com, zuhause.de)?
 
OP
P

padersuse

Hacker
Ich habe für meinen lokalen Server eine Domain definiert, der dann z.B.den Namen hat "germlin1.domain.site". Über getmail möchte ich aber auch offizielle emails abholen, die namentlich erstmal mit meiner lokalen Domain nichts zu tun haben. Einen lmtp socket habe ich schon in der Datei
Code:
/etc/dovecot/conf.d/10-master.cf
in der Sektion
Code:
service lmtp {
aktiviert und der funktioniert auch. Wenn ich lokal als root einem User eine mail schicke, landet diese leider nicht in dem besprochenen Verzeichnis /srv/vmail/examle.com/blubb/ sondern in /var/spool/mail oder wenn ich das Maildir -Format wähle, unter/home/user/Maildir/. Wenn ich das richtig verstanden habe, ist postfix für die Zustellung von mails an lokale User zuständig, wenn eine lokale Domain definiert ist und die user sich in der /etc/passwd Datei wiederfinden lassen. Wenn ich nicht mit virtuellen Adressen arbeiten möchte, kann ich Dovecot hinzuziehen und auch externe Emailadressen auflösen über die Datei /etc/dovecot/users. Wie stelle ich in Postfix und Dovecot das Maildir Format und den Pfad richtig ein, damit lokale und externe Mails in einem zentralen Verzeichnis landen ?
Es ist schon länger her, aber ich meine, dass ohne Authentifizierung über SASL ich mit Thunderbird auf einem Windows-Rechner auf meinen IMAP-Server nicht zugreifen kann, aber vielleicht irre ich.
 
padersuse schrieb:
.. Einen lmtp socket habe ich schon .. aktiviert und der funktioniert auch.
Woher weißt du das? Ich kann auf Grund deiner Beschreibung das so nicht erkennen.

padersuse schrieb:
Wenn ich lokal als root einem User eine mail schicke, landet ..in /var/spool/mail
Das ist das "mbox" Verfahren

padersuse schrieb:
oder wenn ich das Maildir -Format wähle, unter/home/user/Maildir/.
Das ist das "maildir" Verfahren und ist für deinen Fall ungeeignet.

Ich dacht du willst das "imap" Verfahren?
Entscheide dich für eines, sonst kommen wir hier nicht weiter.

Gruß
Gräfin Klara
 
OP
P

padersuse

Hacker
Entschuldigung,
ich hatte die Maildir Einstellung in der main.cf zwischendurch rausgenommen und nur in der main.cf
Code:
mail_spool_directory = /var/spool/mail
aktiviert, meine Frage bleibt aber, wo ich für die mails für lokale User und Fremdmails die Einstellung so vornehme, dass auch lokale mails an zentraler Stelle landen, mit der Einstellung in der main.cf
Code:
home_mailbox = Maildir/
schaffe ich das nicht und mit der Funktion
Code:
mail_spool_directory
kann ich nur Verzeichnisse allgemein definieren, aber nicht für die lokalen User. Unter Dovecot müsste ich das über die Datei /etc/dovecot/users schaffen, da ich mich mit getmail noch nicht beschäftigt habe, muss ich das noch überprüfen.
Code:
/etc/dovecot/users
: blubb@example.com:{plain}opensuse15:10000:10000::/srv/vmail/example.com/blubb::
 
padersuse schrieb:
.., meine Frage bleibt aber, wo ich für die mails für lokale User und Fremdmails die Einstellung so vornehme, dass auch lokale mails an zentraler Stelle landen, mit der Einstellung in der main.cf
Das funktioniert so nicht.
Ich stelle nocheinmal die obige Frage: maildir, mbox, imap?
 
OP
P

padersuse

Hacker
Hallo Gräfin Klara,
ich möchte einen imap Server betreiben, der über einen pop befehl die Mails abholt und im maildir Format ablegt. Ich habe bereits einen solchen Server (opensuse 13.3) so laufen, hier werden die mails im Home-Verzeichnis eines Users abgelegt. Möchte aber in Zukunft die Mails an einer zentralen Stelle für verschiedene User ablegen (lokale User und für "Fremduser", also z.b. mitarbeiter@example.com und mitarbeiterin@example.com). Diese beiden Mailadressen sollen lokalen Usern zugeordnet werden.
 

marce

Guru
Das eine hat mit dem anderen nichts zu tun.

Was aber gehen sollte (zumindest tut das hier problemlos): Konfiguriere dovecot so, daß es auf den Ordner zugreift, in dem postfix die Mails ablegt. Damit sollte dann IMAP-Zugriff auf die Mails möglich sein. Das tat hier bei mir im großen und ganzen ootb.
 
padersuse schrieb:
ich möchte einen imap Server betreiben, der über einen pop befehl die Mails abholt und im maildir Format ablegt.
Jetzt muß ich passen. Mit solchen Konfigurationen habe ich keine Erfahrung.
Das liegt schon im Bereich der extremen Computerwissenschaften.

Tut mir Leid
Gräfin Klara
 
OP
P

padersuse

Hacker
An Marce,

wo werden denn bei Dir im Server die Mails, also auch der lokalen User abgelegt ?

Gruß Padersuse
 

marce

Guru
Code:
/var/spool/mail/

... und in dovecot ist konfiguriert
Code:
mail_location = mbox:~/mail:INBOX=/var/spool/mail/%u
 
Oben