[Postfixbuch-users] Postfix mit partieller mysql
Andreas Meyer
anmeyer at anup.de
Di Sep 17 13:19:10 CEST 2013
Peer Heinlein <p.heinlein at heinlein-support.de> wrote:
> a) Setze Dovecot sauber auf. Dovecot muß die User kennen und erkennen,
> ein "doveadm auth test" und ein "doveadm auth user" muß saubere
> Ergebnisse liefern. Mit Home-Verzeichnis und überall der User-ID und
> Group-ID 10000 (alias vmail).
>
> b) Öffne in Dovecot den LMTP-Socket.
>
> c) Trage bei Postfix in die main.cf ein:
>
> relay_domains=hash:/etc/postfix/relay_domains
> transport_maps=hash:/etc/postfix/transport_maps, $relay_domains
>
> und dann ergänzt Du in den restrictions noch an passender Stelle das
> "reject_unverified_recipient", siehe Restrictions-Kapitel im Postfix-Buch.
>
> In /etc/poistfix/relay_domains trägst Du dann ein
>
> example.com lmtp:[127.0.0.1]
>
> postmap nicht vergessen und FERTIG IST DAS.
Ich möchte hier nochmal zurückkommen. Die oben beschriebene Methode
hat den Nachteil, dass eine Domain, die dann nicht in virtual_mailbox_domains
steht, dann nicht mehr als von Postfix zu handeln gekannt wird bzw. es
kommt eine Warnung sinngemäß do not list domain in both relay_domains
and virtual_mailbox_domains oder auch ein bounce weil von zen.spamhaus.org
als dialup erkannt.
Ich wollte deshalb nochmal die Methode mit
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
Aber postfix wertet die irgendwie nicht aus. Ein
# postmap -q 'harry' mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
harry at testdomain.test
liefert also ein positives Ergebnis.
mysql> SELECT CONCAT(username,'@',domain) FROM mailbox WHERE username='harry' AND active = '1';
+-----------------------------+
| CONCAT(username,'@',domain) |
+-----------------------------+
| harry at testdomain.test |
+-----------------------------+
1 row in set (0.00 sec)
Sep 17 12:37:54 delta postfix/smtpd[11179]: NOQUEUE: reject: RCPT from p54B32078.dip0.t-ipconnect.de[84.179.32.120]: 450 4.1.1 <harry at testdomain.test>: Recipient address rejected: User unknown in virtual mailbox table; from=<anmeyer at anup.de> to=<harry at testdomain.test> proto=ESMTP
Warum wertet postfix die mysql_virtual_mailbox_maps.cf nicht aus?
user = test
password = test
hosts = localhost
dbname = mailtest
table = mailbox
select_field = CONCAT(username,'@',maildir)
where_field = username
additional_conditions = and active = '1'
query = SELECT CONCAT(username,'@',domain) FROM mailbox WHERE username='%s' AND active = '1';
Sobald ich das alte flatfile virtual_mailbox_maps = hash:/etc/postfix/mailboxes
aktiviere, funktioniert die Benutzerprüfung.
.......
dovecot_destination_recipient_limit = 1
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf,
# aa.de bb.de cc.de
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf,
# hash:/etc/postfix/mailboxes
#virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf,
# hash:/etc/postfix/virtualaliases
#relay_domains=hash:/etc/postfix/relay_domains
#transport_maps=hash:/etc/postfix/transport_maps, $relay_domains
virtual_mailbox_base = /var/spool/vhosts
virtual_alias_maps = hash:/etc/postfix/virtualaliases
virtual_minimum_uid = 100
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_mailbox_limit = 524288000
virtual_transport = dovecot
Auch die virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf
wird nicht beachtet.
Ich hatte auch schon virtual_transport = dovecot , der über dovecot-lda
ausliefert in Verdacht und kommentiert, ohne Erfolg.
Was habe ich für ein Problem?
Andreas
Mehr Informationen über die Mailingliste Postfixbuch-users