Postfix leitet nach Serverumzug keine Mails mehr weiter

Felix Kunsmann

New Member
Hallo,

ich habe an diesem Wochenende meinen Mailserver auf einen neuen Server umgezogen. Leider habe ich beim testen festgestellt, dass keine Mails weitergeleitet werden. (Kann durchaus sein, dass das nicht am Umzug liegt, auf den Adressen, die weitergeleitet werden, kommen etwa 0-2Mails/Monat rein.)

Konfiguration ist folgende:
- debian wheezy, auf dem aktuellsten Stand
- postfix als MTA
- policyd-weight als "Spamfilter"
- dovecot als MDA
- E-Mail-Adressen und -Weiterleitungen kommen aus einer MySQL-Datenbank

Beispiel zum Nachvollziehen des Problems:
- info@salonkatrin.de (lokales Postfach)
- postmaster@salonkatrin.de (leitet weiter an postmaster@gendo.kunbox.net (ebenfalls eine virtuelle Domain))
- postmaster@gendo.kunbox.net (leitet weiter an die externe Adresse postmaster@kunsmann.eu)

Problemstellung:
Mails an postmaster@salonkatrin.de und postmaster@gendo.kunbox.net werden trotz virtual_alias_maps lokal zugestellt (also an dovecot-deliver weitergegeben)

Frage
Wo liegt hier der Fehler - und was muss ich ändern, damit die Weiterleitungen wie geplant funktionieren?

/etc/postfix/main.cf
Code:
# See /usr/share/postfix/main.cf.dist for a commented, more complete version

soft_bounce=yes

# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = Welcome to gendo.kunbox.net. Please deliver your mail.
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

# TLS parameters
smtpd_tls_cert_file = /etc/postfix/mail.cert
smtpd_tls_key_file = /etc/postfix/mail.key
smtpd_use_tls = yes
smtpd_enforce_tls = no
smtpd_tls_auth_only = no
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain =
smtp_sasl_auth_enable = no
broken_sasl_auth_clients = yes
smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

myhostname = localhost.gendo.kunbox.net
mydomain = localhost.gendo.kunbox.net
myorigin = localhost.gendo.kunbox.net
mydestination = localhost localhost.gendo.kunbox.net
relayhost =
recipient_delimiter = +
inet_interfaces = all
message_size_limit = 0
mailbox_size_limit = 0

smtpd_helo_required = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_policy_service inet:127.0.0.01:12525
home_mailbox = mails/
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf,mysql:/etc/postfix/mysql-email2email.cf
virtual_transport = dovecot
readme_directory = no
sample_directory = /etc/postfix
sendmail_path = /usr/sbin/sendmail
html_directory = no
command_directory = /usr/sbin
manpage_directory = /usr/man
daemon_directory = /usr/lib/postfix
newaliases_path = /usr/bin/newaliases
mailq_path = /usr/bin/mailq
queue_directory = /var/spool/postfix
mail_owner = postfix
receive_override_options=no_address_mappings

/etc/postfix/mysql-email2email.cf
Code:
user = servercp
password = *dinxbumz*
hosts = 127.0.0.1
dbname = mail
query = SELECT email FROM view_mbox WHERE email='%s'

(ich lass bei den restlichen Dateien die User/Passwort-Sachen weg)
/etc/postfix/mysql-virtual-alias-maps.cf
Code:
query = SELECT destination FROM view_redir WHERE email='%s

/etc/postfix/mysql-virtual-mailbox-domains.cf
Code:
query = SELECT 1 FROM `domains` d WHERE d.`domain`='%s' AND ((SELECT COUNT(*) FROM `mail_box` mb WHERE mb.`domain_id` = d.`domain_id`) > 0 OR (SELECT COUNT(*) FROM `mail_redirect` mr WHERE mr.`domain_id` = d.`domain_id`) > 0)

/etc/postfix/mysql-virtual-mailbox-maps.cf
Code:
query = SELECT 1 FROM view_mbox WHERE email='%s'


---------- EDIT 17:18 ----------
Ich habe jetzt nochmal verschiedenes getestet. /etc/postfix/mysql-virtual-alias-maps.cf scheint zu funktionieren:
Code:
# postmap -q postmaster@salonkatrin.de mysql:/etc/postfix/mysql-virtual-alias-maps.cf
postmaster@gendo.kunbox.net

Weiter probiert habe ich, virtual_mailbox_domains rauszunehmen, und nur mit virtual_alias_domains und virtual_alias_maps zu arbeiten (testweise), bringt dann folgenden Fehler:
Dec 21 17:02:52 gendo postfix/error[31360]: 8206046007D: to=<postmaster@salonkatrin.de>, relay=none, delay=7, delays=7/0/0/0, dsn=4.0.0, status=SOFTBOUNCE (User unknown in virtual alias table)

So langsam fang ich irgendwie an, postfix nicht mehr zu verstehen ... Wenn doch virtual_alias_maps definiert ist und die angegebene Datei auch korrekt funktioniert, warum funktioniert dann Postfix nicht so, wie es soll?
 
Last edited by a moderator:
Ich bin mir nicht ganz sicher ob es daran liegt, aber du musst glaube noch virtual_alias_domains (default: $virtual_alias_maps) setzen.
Code:
virtual_alias_domains =

Was es macht siehst du hier.
http://www.postfix.org/postconf.5.html#virtual_alias_domains

Ich glaub du solltest dann generell nochmal über die Konfiguration nachdenken. check_helo_access ,reject_non_fqdn_recipient und reject_unknown_recipient_domain sollten dann auch noch in die smtpd_recipient_restrictions Verwendung finden.
Sinnvoll in Verbindung mit mysql wäre auch eine proxyreadmap. Außerdem fehlt mir eine virtual_mailbox_base welches default nicht angegeben ist. Ich frage mich wo deine virtuellen mailboxen im Moment landen - oder ich bin einfach gerade blind.
Deine smtpd_recipient_restrictions sehen generell auch ziemlich mager aus.


Grüße
 
Weiter probiert habe ich, virtual_mailbox_domains rauszunehmen, und nur mit virtual_alias_domains und virtual_alias_maps zu arbeiten (testweise), bringt dann folgenden Fehler:
Dec 21 17:02:52 gendo postfix/error[31360]: 8206046007D: to=<postmaster@salonkatrin.de>, relay=none, delay=7, delays=7/0/0/0, dsn=4.0.0, status=SOFTBOUNCE (User unknown in virtual alias table)
Habe ich auch schon probiert. virtual_mailbox_* auskommentiert und nur virtaul_alias_*-direktiven dringelassen (virtual_alias_domains natürlich hinzugefügt) - führt zu oben genannter Fehlermeldung (Die Mails werden aber per SMTP angenommen, also scheint ein Teil der Logik mal zu funktionieren :o)


Edit: Da war ja noch eine Frage :o
Sinnvoll in Verbindung mit mysql wäre auch eine proxyreadmap.
proxyreadmap kenne ich noch nicht, werd ich mir aber mal ansehen.

Außerdem fehlt mir eine virtual_mailbox_base welches default nicht angegeben ist. Ich frage mich wo deine virtuellen mailboxen im Moment landen - oder ich bin einfach gerade blind.
Die Mails werden über dovecot-deliver zugestellt:
Code:
virtual_transport = dovecot
 
Last edited by a moderator:
Habe ich auch schon probiert. virtual_mailbox_* auskommentiert und nur virtaul_alias_*-direktiven dringelassen (virtual_alias_domains natürlich hinzugefügt) - führt zu oben genannter Fehlermeldung (Die Mails werden aber per SMTP angenommen, also scheint ein Teil der Logik mal zu funktionieren )
Da hast du mich glaube missverstanden.
Du musst explizit ein unset über
Code:
virtual_alias_domains =
ausführen, da virtual_alias_domains beim auskommentieren den default-Wert annimmt. Default ist aber wie in der Doku nachzulesen bei virtual_alias_domains (default: $virtual_alias_maps), das heißt es erbt die Liste von virtual_alias_maps. Das müsste in deiner Konfig die in mysql definierten aliase sein. Wenn du dir nun anschaust was virtual_alias_domains aber macht, dann steht weiter in der Doku
Postfix is final destination for the specified list of virtual alias domains,
Meine Interpretation darin ist, dass in dem Fall für diese Aliase nur noch ene lokale Zustellung möglich ist. Setzt du die virtual_alias_domains als "leere" liste, so fühlt sich der postfix für keine Domain als "final destination" und somit müsste er auch korrekt an externe Adressen weiterleiten. Postfix ist aber auch manchmal hartes Gemüse, das ich auch mal länger kauen muss. Ich geh mal davon aus, dass es aber daran liegen könnte.

Wegen virtual_mailbox_base....
Line 3: The virtual_mailbox_base parameter specifies a prefix for all virtual mailbox pathnames. This is a safety mechanism in case someone makes a mistake. It prevents mail from being delivered all over the file system.
Auch wenn Dovecot hier zustellt, empfehle ich wie hier virtual_mailbox_base zu setzen.


Zitate aus der oben verlinkten Doku und aus http://www.postfix.org/VIRTUAL_README.html

Grüße Nilpferd
 
hm. Wenn ich virtual_alias_domains unsette, nimmt er immer noch die Mail an und liefert sie lokal aus. Unsette ich virtual_mailbox_domains ebenfalls, kriege ich (war ja zu erwarten) "Relay access denied".

Ich werde also doch den Umweg über eine Welterleitung für Postfächer machen müssen - also info@salonkatrin leitet weiter nach info@foobar.salonkatrin, was dann ein lokales Postfach ist.
Sieht zwar doof aus, funktioniert aber bei nem Bekannten einwandfrei. Verwunderlich nur, dass genau die oben genannte Konfiguration früher mal Funktionierte, und eben heute nicht mehr.
 
Back
Top