Postfix: Relayhost abhängig vom Benutzer

Postfix, QMail, Sendmail, Dovecot, Cyrus, Courier, Anti-Spam
grandcat
Posts: 104
Joined: 2006-08-15 12:26
Location: Bayern
 

Postfix: Relayhost abhängig vom Benutzer

Post by grandcat »

Hallo zusammen,

ich verwende momentan Postfix, um die Emails, die PHP versenden möchte, über einen externen Anbieter (z.B. freenet) zu versenden. Dazu habe ich die Datei "sasl_password" wie folgt konfiguriert:

Code: Select all

mx.freenet.de ich@freenet.de:meinpasswort
smtp.web.de ich@web.de:meinpasswort ###siehe unten
Da jeder Benutzer auf dem Webserver eine eigene PHP-Instanz über Fastcgi (Lighttpd) erhält, kann ich ja den Absender der verschiedenen Benutzer über die Datei "sender_canonical" steuern:

Code: Select all

webbenuter1 test1@freenet.de
webbenutzer2 test2@freenet.de
webbenutzer3 test@web.de ##siehe unten
Dies funktioniert soweit ganz gut. Nun ist es aber so, dass ich für manche Benutzer gerne einen seperaten Relayhost anlegen möchte. Fügt man einen weiteren Eintrag in "sasl_password" hinzu, wird dieser ignoriert.
Ich habe mir schon gedanken gemacht, das Problem über die Konfigurationsdatei "transport" lösen zu können:

Code: Select all

webbenuter1 smtp:mx.freenet.de
webbenutzer2 smtp:mx.freenet.de
webbenutzer3 smtp:smtp.web.de
Allerdings ignoriert Postfix scheinbar diese Einstellungen. Hinzu kommt, dass ich mir gar nicht sicher bin, ob diese Konfiguration zweckmäßig ist :wink:

Meine main.cf:

Code: Select all

# 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 = $myhostname ESMTP $mail_name (Ubuntu)
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/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=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 = x123456789.server.net
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = blubblub.de, localhost.server.net, localhost
#relayhost = freenet.de
mynetworks = 127.0.0.0/8
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only

smtp_sasl_auth_enable = yes
# noplaintext weglassen, wenn Passwör im Klartext üagen werden mü
# (nicht empfohlen, nur wenn's anders nicht funktioniert)
smtp_sasl_security_options = noplaintext noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_password
sender_canonical_maps = hash:/etc/postfix/sender_canonical
transport_maps = hash:/etc/postfix/transport
In "/var/log/mail.log" finden sich allerdings keinerlei Fehler oder Wahrnungen, die auf ein Problem hinweisen könnten. Ist es nun möglich, für jeden Benutzer einen seperaten Relayhost zu verwenden? Und wenn ja, was müsste ich wie konfigurieren? Vielen Dank schon mal :wink:
User avatar
Joe User
Project Manager
Project Manager
Posts: 11185
Joined: 2003-02-27 01:00
Location: Hamburg
 

Re: Postfix: Relayhost abhängig vom Benutzer

Post by Joe User »

Eventuell bringt Dich dieser Google-Treffer weiter.
grandcat
Posts: 104
Joined: 2006-08-15 12:26
Location: Bayern
 

Re: Postfix: Relayhost abhängig vom Benutzer

Post by grandcat »

Vielen Dank für das Stichwort, das mir gefehlt hatte. Nun, nach einigem Herumprobieren habe ich es nun geschafft, jedem Benutzer einen eigenen Relayhost zuzuweisen. Falls jemand daran Interesse hat, bitte wie folgt vorgehen:

In main.cf folgendes hinzufügen:

Code: Select all

...
sender_dependent_relayhost_maps = hash:/etc/postfix/sender_relayhosts
smtp_sender_dependent_authentication = yes
...
Der Aufbau der Datei "sender_relayhosts" fand ich anfangs etwas verwunderlich, da er in der Dokumentation anders geschildert wurde. Es handelt sich hierbei um eine reine "Rewrite"-Tabelle, deshalb ist sie wie folgt aufgebaut:

Code: Select all

ich@freenet.de mx.freenet.de
ich@web.de smtp.web.de
Dabei ist wichtig, dass natürlich auch "sasl_password" vorhanden ist, da in dieser ja die Zugangsdaten für die Authentifizierung über SMTP stehen:

Code: Select all

mx.freenet.de ich@freenet.de:meinsicherespasswort
smtp.web.de ich@web.de:meinpasswort
Wer noch gleich möchte, dass die richtige Emailadresse automatisch für den aktuellen Benutzer im System (praktisch bei PHPs MAIL Funktion) genommen wird, kann ja noch bisschen etwas in "sender_canonical" festlegen, z.B.:

Code: Select all

webbenutzer1 ich@freenet.de
webbenutzer2 ich@web.de
Vielleicht konnte ich damit auch noch irgendjemand helfen, der das selbe Problem hat. :wink: