[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