[Postfixbuch-users] Alias Problem mit Virtuellen Usern

Chris Cohen kildau-ml at gmx.de
Do Mär 27 21:45:57 CET 2008


On Thursday 27 March 2008 21:27:22 Kai Fürstenberg wrote:
> Chris Cohen schrieb:
> > On Thursday 27 March 2008 16:40:33 Kai Fürstenberg wrote:
> >> Chris Cohen schrieb am 27.03.2008 15:49:
> >>> On Thursday 27 March 2008 14:42:53 Kai Fürstenberg wrote:
> >>>> Chris Cohen schrieb am 27.03.2008 13:49:
> >>>>> On Thursday 27 March 2008 10:42:39 Kai Fürstenberg wrote:
> >>>>>> Hallo Chris,
> >>>>>>
> >>>>>> Chris Cohen schrieb am 26.03.2008 13:26:
> >>>>>>> ich formuliere mein Frage einfach nochmal neu, vllt. ist
> >>>>>>> sie ja untergegangen.
> >>>>>>>
> >>>>>>> Ich habe eine interne Domain und 7 User, die (sowieso schon
> >>>>>>> für andere Dinge) in einer MySQL-Tabelle stehen. Da die
> >>>>>>> User keine Systemaccounts haben, lasse ich
> >>>>>>> local_recipient_maps MySQL befragen. Auch Dovecot
> >>>>>>> authentifiziert vernünftig gegen die Tabelle und auch
> >>>>>>> Dovecots deliver (möchte ich wegen Sieve nutzen)
> >>>>>>> funktioniert (für die User). Mailbox_command kann ich ja
> >>>>>>> scheinbar nicht nutzen, da die User nicht lokal vorhanden
> >>>>>>> waren. Also bin ich nach
> >>>>>>> http://wiki.dovecot.org/LDA/Postfix vorgegangen und habe
> >>>>>>> local_transport auf dovecot gesetzt. Alles funktioniert
> >>>>>>> auch wunderbar für die 7 Benutzer in der Tabelle. Nun wird
> >>>>>>> aber logischerweise local_recipient_maps nicht mehr befragt
> >>>>>>> und auch meine Alias tabelle wird ignoriert.
> >>>>>>>
> >>>>>>> Ich bin noch ziemlich jungfräulich im Mailserver bereich
> >>>>>>> ;), wie würdet ihr einen solchen Setup lösen?
> >>>>>>
> >>>>>> Da die User keine Systemuser sind, solltest du vielleicht auf
> >>>>>> *virtual* switchen. Also virtual_mailbox_maps,
> >>>>>> virtual_transport, usw. Dann der Dovecot-Anleitung für
> >>>>>> Virtuelle User folgen.
> >>>>>
> >>>>> Klingt Einleuchtend. Ich habe mir jetzt das VIRTUAL_README
> >>>>> durchgelesen, werde aber nicht so ganz schlau. (Ich habe mich
> >>>>> in meinem ersten Posting nicht ganz korrekt ausgedrückt,
> >>>>> mydestination stand bei mir auf $mydomain und einem lookup auf
> >>>>> eine Tabelle mit Hostnamen in meinem LAN, sodaß
> >>>>> user1 at example.org und
> >>>>> user1 at host1.example.org in der gleichen Mailbox landeten.
> >>>>> Kannst du mir einen Tip geben, wie ich das mit virtual lösen
> >>>>> kann?
> >>>
> >>> Erstmal Danke für deine ausführliche Antwort.
> >>>
> >>>> my_destination=localhost, localhost.localdomain
> >>>> virtual_mailbox_domains=example.org
> >>>> virtual_mailbox_maps=mysql:/...
> >>>> virtual_transport=dovecot
> >>>
> >>> Genau so hatte ich es auch verstanden, wobei ich dann in der
> >>> MySQL-Tabelle jeweils nur die "left-hand side" of "@domain.tld"
> >>> hatte/habe. Die Mail wurde mit:
> >>>
> >>> Mar 27 15:27:29 amy postfix/smtpd[4456]: NOQUEUE: reject: RCPT
> >>> from unknown[10.1.32.13]: 550 5.1.1
> >>> <mrkofee at daisy.unixhosts.org>: Recipient address rejected: User
> >>> unknown in virtual mailbox table; from=<>
> >>> to=<mrkofee at daisy.unixhosts.org> proto=ESMTP
> >>> helo=<zoidberg.unixhosts.org>
> >>>
> >>> abgelehnt.
> >>>
> >>>> Normalerweise gibt man in virtual_mailbox_maps den
> >>>> Mbox/Maildir-Pfad des Users an. Diesen benutzt virtual dann als
> >>>> Speicherort (relativ zu virtual_mailbox_base).
> >>>>
> >>>> virtual_mailbox_maps wird aber auch für
> >>>> smtpd_reject_unlisted_recipient verwendet um unzustellbare Mails
> >>>> direkt abzuweisen.
> >>>>
> >>>> Wenn ich die Doku jetzt richtig verstehe (ich selbst benutze
> >>>> virtual als Transport), dient in dieser Konfiguration
> >>>> virtual_mailbox_maps nur noch als Liste der möglichen Empfänger.
> >>>> Die Zustellung erfolgt ja über dovecot.
> >>>>
> >>>> Dovecot seinerseits ist jetzt für die Einlieferung zuständig.
> >>>> Also muss hier auch die Unterscheidung zwischen 'example.org'
> >>>> und 'host1.example.org' vorgenommen werden, wobei
> >>>> host1.example.org dann natürlich auch in den
> >>>> virtual_mailbox_domains auftauchen muss.
> >>>
> >>> (Oh Gott, wie formuliere ich das am Einfachsten)
> >>> Kommentiere ich nun virtual_mailbox_maps aus, werden mails an
> >>> nicht existierende User korrekterweise abgehlehnt. Mails an die 6
> >>> User in der Tabelle werden angenommen wie sich das gehört. Ich
> >>> frage mich aber wieder (wie schon bei local), warum?
> >>>
> >>> Mar 27 15:43:36 amy postfix/smtpd[4607]: connect from
> >>> unknown[10.1.32.13]
> >>> Mar 27 15:43:36 amy postfix/smtpd[4607]: D029478399:
> >>> client=unknown[10.1.32.13]
> >>> Mar 27 15:43:36 amy postfix/cleanup[4610]: D029478399:
> >>> message-id=<20080327144336.ABF534C444 at zoidberg.unixhosts.org>
> >>> Mar 27 15:43:36 amy postfix/qmgr[4596]: D029478399:
> >>> from=<mrkofee at daisy.unixhosts.org>, size=791, nrcpt=1 (queue
> >>> active) Mar 27 15:43:36 amy postfix/smtpd[4607]: disconnect from
> >>> unknown[10.1.32.13]
> >>> Mar 27 15:43:36 amy dovecot: auth(default): master in:
> >>> USER^I1^Imrkofee^Iservice=deliver
> >>> Mar 27 15:43:36 amy dovecot: auth-worker(default): sql(mrkofee):
> >>> query: SELECT password FROM users WHERE username = 'mrkofee';
> >>> Mar 27 15:43:36 amy dovecot: auth(default): password(mrkofee):
> >>> Credentials: {CRYPT}{PLAIN-MD5}ebb12eb47da2af187241a0d74fc3d14f
> >>> Mar 27 15:43:36 amy dovecot: auth(default): master out:
> >>> USER^I1^Imrkofee^Iuid=5000^Igid=5000^Ihome=/var/mail/mrkofee
> >>> Mar 27 15:43:36 amy postfix/pipe[4611]: D029478399:
> >>> to=<mrkofee at daisy.unixhosts.org>, relay=dovecot, delay=0.05,
> >>> delays=0.03/0.01/0/0.02, dsn=2.0.0, status=sent (delivered via
> >>> dovecot service)
> >>> Mar 27 15:43:36 amy postfix/qmgr[4596]: D029478399: removed
> >>>
> >>> Wenn ich das richtig verstehe, befragt Postfix dovecot, ob der
> >>> User existiert? (Es scheint so zu sein, denn virtual_alias_maps
> >>> werden wieder, wie schon bei local, ignoriert.) Wieso macht
> >>> Postfix das? Und was mich am meisten interesessiert, wie bringe
> >>> ich Postfix nun dazu mit dovecot als Transportmittel meine Aliase
> >>> zu beachten?
> >>>
> >>>>> (Btw. wann kommt das neue Postfix-Buch raus? Wäre jetzt
> >>>>> sicherlich hilfreich...)
> >>>>
> >>>> Das aktuelle ist doch hervorragend...
> >>>
> >>> Kann ich nicht beurteilen, denn ich besitze es nicht. Nach den
> >>> Problemen die ich momentan habe hätte ich dann halt das neuste
> >>> gekauft, aber laut Amazon muss ich da noch bis Juni warten.
> >>
> >> Also wenn ich dich jetzt richtig verstehe, willst du externe
> >> Mail-Adressen auf "lokale" umschreiben (wobei die nicht wirklich
> >> lokal sind), sozusagen mehrere E-Mail-Adressen auf eine mappen,
> >> oder einfach nur umleiten?
> >
> > Nein, nein ;)
> > Ich möchte eigentlich einen ganz "einfachen Setup":
> > Domains: example.org
> > Hosts: host1.example.org, host2.example.org
> > Auf allen Rechnern die gleichen Usernamen.
> > Die einzelnen Hosts haben nur ssmtp installiert und relayen direkt
> > an den Postfix-Server.
> > user1 at host1.example.org soll in der gleichen Mailbox wie
> > user1 at host2.example.org oder user1 at example.org landen. Das scheint
> > auch nicht mein Problem zu sein. Mein Problem ist, dass, sobald ich
> > local_transport oder virtual_transport setze, meine alias_maps
> > (bzw. virtual_alias_maps) und local_:recipient_maps (bzw jetzt
> > virtual_mailbox_maps) ignoriert werden. Die Alias_maps benötige ich
> > eigentlich nur für so blöde dinge wie root, www-data, hostmaster ->
> > myuser.
> >
> > Mit Systemusern und local als Transport sah das bei mir so aus:
> > mydestination = ... $mydomain, host1.$mydomain, $host2.mydomain,
> > ... local_recipient_maps = unix:passwd.byname $alias_maps
> > alias_maps = hash:/etc/aliases
> >
> > Jetzt sind aber 5 User dazugekommen, für die ich nicht alle
> > Accounts auf meinem Mailserver erstellen möchte (Ja, ich weiß dass
> > ich den Usern keine Login-Shell geben müsste, aber ich fand die
> > Idee mit der Datenbank schöner. Zumal die eh schon für andere Dinge
> > bestand.)
> >
> > Hoffentlich habe ich mich jetzt deutlich ausgedrückt ;)
>
> Du hast also die "normalen" virtuellen user, und die funktionieren
> auch soweit. Jetzt willst du aber die Mails für root, hostmaster,
> etc. (also die lokalen Systembenutzer) lokal zustellen lassen?
>

Äh Nö :( Gott lässt sich das blöde beschreiben, ich versuchs mal so:

virtualuser at example.org -> dovecot deliver -> /var/mail/virtualuser
virtualuser at h1.example.org -> dovecot deliver -> /var/mail/virtualuser
virtualalias at example.org -> dovecot deliver -> /var/mail/virtualuser
virtualalias at h1.example.org -> dovecot deliver -> /var/mail/virtualuser

Ich möchte, ebenfalls mit virtual, Aliase nutzen können. Ich möchte aber 
nicht nach Domains differenzieren. alias1 at example.org ist also der 
gleiche wie alias1 at host1.example.org und soll dann an user1 mit virtual 
zugestellt werden, welches ebenfalls nicht nach Domains unterscheiden 
soll. (alias1@* -> user1@*)

Ernsthaft: Ist mein Setup echt so strange? Sollte ich das vielleicht 
besser anders Lösen? (Auf dem Papier sah das eigentlich ganz brauchbar 
aus.)
Wenn das wirklich so strange ist, könnte ich dem ssmtp auf den einzelnen 
Hosts auch einfach sagen, dass er die Domain umschreiben soll. Dann 
ginge es tatchlich nur noch um Virtuelle User. (Ich hätte aber z.B. 
meine Logfiles lieber in der Form from: logwatch at host1.example.org to 
user1 at host1.example.org relayed von ssmtp an meinen zentralen 
Mailserver)

-- 
Viele Grüße
Chris




Mehr Informationen über die Mailingliste Postfixbuch-users