Postfix-Konfiguration für Kontaktformular

anselmoso

Registered User
Hallo zusammen,

ich möchte auf meinem VServer zwei Webseiten aufsetzen, die über PHP Mails mit dem installierten Postfix MTA versenden sollen. Und zwar ist das auf der einen Webseite ein Kontaktformular, um den Administrator zu kontaktieren und auf der anderen Webseite sollen die registrierten User in der Lage sein, sich gegenseitig über ein Kontaktformular Emails zu schicken (wie wenn man in einem Forum anstatt "PM" einfach "Email an User senden" wählt).

Grundsätzlich soll Postfix also nur von localhost (vom Webserver, der auf dem selben Server läuft) aus Emails versenden / Anfragen akzeptieren.

Momentan läuft mein Postfix, allerdings bin ich mir nicht sicher, ob die Konfiguration so sicher ist - wäre super, wenn ihr da mal was zu sagen könntet:


main.cf:

myhostname = <hostname>
mydestination = localhost.localdomain
smtp_helo_name = <hostname>
inet_interfaces = 127.0.0.1
mynetworks = 127.0.0.1
local_transport = error:local delivery is disabled



master.cf:

smtp inet n - - - - smtpd
#submission inet n - - - - smtpd
# -o smtpd_etrn_restrictions=reject
#628 inet n - - - - qmqpd
pickup fifo n - - 60 1 pickup
cleanup unix n - - - 0 cleanup
qmgr fifo n - - 300 1 qmgr
#qmgr fifo n - - 300 1 oqmgr
rewrite unix - - - - - trivial-rewrite
bounce unix - - - - 0 bounce
defer unix - - - - 0 bounce
trace unix - - - - 0 bounce
verify unix - - - - 1 verify
flush unix n - - 1000? 0 flush
proxymap unix - - n - - proxymap
smtp unix - - - - - smtp
relay unix - - - - - smtp
# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq unix n - - - - showq
error unix - - - - - error
#local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - n - - lmtp
anvil unix - - n - 1 anvil

maildrop unix - n n - - pipe
flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
uucp unix - n n - - pipe
flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
ifmail unix - n n - - pipe
flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp unix - n n - - pipe
flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -d -t$nexthop -f$sender $recipient
scalemail-backend unix - n n - 2 pipe
flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
 
Last edited by a moderator:
Hallo!
Einen MTA ausschließlich auf dem lokalen Loopback Interface zu betreiben ist schon etwas problematisch. Auf der eine Seite schützt es dich auf jeden Fall vor eingehendem SPAM. Auf der anderen Seite bist du überhaupt nicht in der Lage, Mails von extern zu empfangen. Was passiert beispielsweise mit einer Bounce Message?

mfG
Thorsten
 
Was mir gerade noch auffält, hast du die Variable mynetworks eigentlich richtig gesetzt? Wenn die nicht richtig gesetzt ist, hast du nämlich ein offenes relay.

Sie sollte ungefär so heissen:
Code:
mynetworks = 127.0.0.1

Und noch eine Frage:
Warum löst du die Mails an die User nicht mit einer Datenbank. Wenn sie es nur mails an sich selbst senden sollen können, ist das doch die einfachste Möglichkeit, oder irre ich da?
 
Einen MTA ausschließlich auf dem lokalen Loopback Interface zu betreiben ist schon etwas problematisch. Auf der eine Seite schützt es dich auf jeden Fall vor eingehendem SPAM. Auf der anderen Seite bist du überhaupt nicht in der Lage, Mails von extern zu empfangen. Was passiert beispielsweise mit einer Bounce Message?

Ja das ist die Frage....in meinen ersten Tests, als GMX meine Mails noch nicht akzeptiert hat, kamen dann z.B. solche Antworten vom GMX Server zurück:


<Datum> <myvservername> postfix/smtp[28177]: 532ED9C38274: to=<www-data@vserver.de>, relay=mail.gmx.net[213.165.64.21], delay=0, status=bounc
ed (host mail.gmx.net[213.165.64.21] said: 550 5.1.7 This server does not accept an empty envelope from ( http://portal.gmx.net/serverrules )
{mp040} (in reply to MAIL FROM command))



Was mir gerade noch auffält, hast du die Variable mynetworks eigentlich richtig gesetzt? Wenn die nicht richtig gesetzt ist, hast du nämlich ein offenes relay.
Das habe ich nun geändert in den von dir vorgegebenen Wert.



Und noch eine Frage:
Warum löst du die Mails an die User nicht mit einer Datenbank. Wenn sie es nur mails an sich selbst senden sollen können, ist das doch die einfachste Möglichkeit, oder irre ich da?
Nun, da geht es um die Grund-Idee des Portals. Es ist für dieses Portal essentiell / unbedingt wichtig, dass die registrierten User ihre Nachrichten als EMails erhalten und sich nicht jedes mal einloggen müssen, um ihre erhaltenen Nachrichten zu lesen. Jeder kann jedem User eine Nachricht schreiben.



Ich kenne mich wie gesagt mit der Postfix Konfiguration und allgemein mit MTAs sehr wenig aus also hoffe ich auf eure Tips, wie ich mein Postfix am Besten konfiguriere.
 
Last edited by a moderator:
Mit genau der Konfiguration die du haben willst, kenn ich mich nicht wirklich aus.
Ich kann dir nur noch zum Thema open relay nen Tipp geben: Such mal bei Google nach open-relay-Test, und lass den mal drüber laufen. Dann kannst du dir wenigsten sicher sein, ob es ein open-relay gibt. Normalerweise wenn die mynetworks so aussieht wie oben, sollte es aber kein Problem geben.

Ach ja, wie holen die User des Portals eigentlich ihre Mails ab? Über Pop3 oder IMAP?
 
Ach ja, wie holen die User des Portals eigentlich ihre Mails ab? Über Pop3 oder IMAP?
Meine Erklärung war wohl noch nicht ganz verständlich. Also:

- Ein User registriert sich bei uns mit Namen und Emailadresse
- Er stellt eine Anzeige ein
- Jemand schreibt ihm eine Nachricht über ein Kontaktformular bei seiner Anzeige
- Er erhält die Nachricht als Email an die von ihm angegebene (und zuvor überprüfte) Emailadresse
 
Ach, okay.
Und die Mails verschickst du mit der mail() Funktion von PHP? Das müsste doch eigentlich gehen. Denn soweit ich weiss gibt PHP die Mail via SMTP an den Lokalen E-Mailserver weiter, der diese dann an den richtigen E-Mailserver ausliefert.
 
Und die Mails verschickst du mit der mail() Funktion von PHP? Das müsste doch eigentlich gehen. Denn soweit ich weiss gibt PHP die Mail via SMTP an den Lokalen E-Mailserver weiter, der diese dann an den richtigen E-Mailserver ausliefert.

Ja, das funktioniert bislang auch mit meiner aktuellen Postfix Konfiguration (wobei wir noch in der Testphase sind und nicht wissen, ob alle Mailanbieter unsere Mails so akzeptieren - wir haben bislang primär mit GMX Empfängern getestet).
Mir geht es jetzt darum, dass mir jemand, der sich auch mit Postfix auskennt sagt "Jo - die Konfiguration ist OK und soweit sicher. Kannste so lassen". Oder aber "Ne - das geht so gar nicht, der Server ist unsicher bzw. nicht Standard-Konform - das musst du so und so machen"..
 
Dann poste uns doch mal die komplette main.cf. Dann kann man sehen, ob du was vergessen hast, oder was faslch konfiguriert hast. Wie schon mehrfach gesagt, das wichtigste ist mynetworks. Denn diese Variable entscheidet über relaying.
 
Der Postfix muss auch an das externe Interface (bzw. alle Interfaces) gebunden werden. Eben, damit Bounces rein kommen können. (Es sei denn, es wird über einen entsprechenden MX-Record ein anderer Server für den Host als MX benannt)

Damit der Server kein offenes Relay ist, muss man lediglich über entsprechende Direktiven festlegen, dass von außen nur inbound Mails zulässig sind.

Also:
Code:
mynetworks_style = host

Das bedeutet ausdrücklich "Nur vom lokalen Host, egal, was in mynetworks steht.":
/etc/postfix/main.cf said:
# Specify "mynetworks_style = host" when Postfix should "trust"
# only the local machine.
 
Hier nochmal die komplette aktuelle main.cf:

myhostname = <vserver-nummer>.vserver.de
mydestination = localhost.localdomain
smtp_helo_name = <vserver-nummer>.vserver.de
inet_interfaces = 127.0.0.1
mynetworks_style = host
mynetworks = 127.0.0.0,<meine vserver-ip>
local_transport = error:local delivery is disabled
 
Last edited by a moderator:
Jetzt pack die Variable mynetworksstyle wie in dem Post von Elias beschrieben noch rein, dann dürfte es passen.
Zum Schluss mach nochmal nen open_relay check. Einige findest du bei Google.
 
Jetzt pack die Variable mynetworks_style wie in dem Post von Elias beschrieben noch rein, dann dürfte es passen.
Das externe Interface noch binden.
Und (da lokale Zustellung disabled) einen Alias für root auf eine externe Adresse, die du wirklich empfängst.
 
aktuellste main.cf:

myhostname = <vserver-nummer>.vserver.de
mydestination = localhost.localdomain
smtp_helo_name = <vserver-nummer>.vserver.de
inet_interfaces = 127.0.0.1
mynetworks_style = host
mynetworks = 127.0.0.0,<meine vserver-ip>
local_transport = error:local delivery is disabled

Und (da lokale Zustellung disabled) einen Alias für root auf eine externe Adresse, die du wirklich empfängst.

Also folgendes in /etc/aliases eintragen:

root: meineHeimEmailadresse

und dann "newaliases" aufrufen und postfix reloaden?



Meine /etc/aliases sieht momentan so aus:

# /etc/aliases
mailer-daemon: postmaster
postmaster: root
nobody: root
hostmaster: root
usenet: root
news: root
webmaster: root
www: root
ftp: root
abuse: root
noc: root
security: root
clamav: root



@mordor: Relay Test habe ich grade über abuse.net gemacht und der kommt zu folgendem Ergebnis:
All tests performed, no relays accepted.
 
Last edited by a moderator:
Jupp, pack in die Aliases einfach :
Code:
root: meineemail@domain.tld
und es passt.

Wenn der relay-test negativ ist, dann kann auch niemand über deinen MTA Spam verschicken. Das passt so.
 
Alles klar.
Dann sage ich jetzt einfach mal herzlichen Dank für eure kompetente und schnelle Unterstützung! Ihr habt mir sehr weiter geholfen.
 
Back
Top