[Postfixbuch-users] Alias Problem mit Virtuellen Usern

Kai Fürstenberg kai_postfix at fuerstenberg.ws
Fr Mär 28 00:42:53 CET 2008


Chris Cohen schrieb:
> 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)

Argl, jetzt wird's langsam klar. Du willst sozusagen eine Wildcard im 
Domain-Teil haben.

Über Virtual klappt das leider nicht. Allerdings über local. Im Prinzip, 
wie du es bereits am Anfang hattest.

Du musst alle vorhandenen domains/hosts in mydestination eingetragen:
mydestination = example.org h1.example.org h2.example.org h3.example.org

Wichtig ist zudem, dass du in den local_recipient_maps einen Eintrag auf 
sich selbst zeigen lässt:
alias1 | user1
user1 | user1

Ansonsten wäre mal ein komplettes Log, also von connect bis disconnect 
hilfreich. Das letzte aus einem älteren Post war nicht vollständig.
Wenn ich richtig gesehen habe, hast du die Adresse root at amy... nach root 
(Systemuser) umgeleitet. Hat root eine Mailbox im Dovecot? Dein Dovecot 
sagt jedenfalls nein.

-- 
Kai



Mehr Informationen über die Mailingliste Postfixbuch-users