dedlfix: Exim konfigurieren

Beitrag lesen

echo $begrüßung;

» Im obigen Beispiel wird der RCPT, also der Empfänger (gemäß SMTP-Protokoll, nicht die To-Zeile im Mail-Header) gegen die local_domains und relay_domains getestet.

Bevor ich Dich falsch verstehe, der Empfänger ist in diesem Fall wer genau?

Dazu muss man ein wenig das SMTP kennen. SMTP interessiert sich nicht für den Inhalt, wozu auch die Mailheaderzeilen zählen. Nach etwas Geplänkel bekommt der SMTP gesagt, an wen die Email gehen soll (Recipient). Wenn der Server an der Stelle den Empfang ablehnt, ist noch kein einziges Byte der Mail (inklusive ihrer Header) übertragen worden. Es wurde bis dahin lediglich der Umschlag (Envelope) ausgewertet.

Du kannst dir das im Vergleich zur Briefpost so vorstellen: Auf dem Briefpapier steht der Briefkopf mit Angaben wie Empfänger, Absender, Datum, Firmenlogo und Betreff. Das wären bei der Email die Headerzeilen. Anrede, Fließtext und Grußformel sind der Email-Body. Das ganze kommt in einen Umschlag und auf dem kann etwas ganz anderes stehen als im Briefkopf. Die Post interessiert sich nur für die Angaben auf dem Umschlag und nicht für die im Inhalt. Die Umschlag-Angaben sind das was im SMTP als MAIL FROM und RCPT TO übertragen wird. Siehe auch: http://de.wikipedia.org/wiki/SMTP

Mein Ziel ist es, dass keine Mail über meinen Server rausgeht, die nicht in der From Zeile @localedomain.irgendwas hat. Eine Hostproblematik besteht bei mir nicht.

Die From-Zeile ist beliebig fälschbar (und das ist leider nicht nur Theorie). Beim SMTP-Versand interessiert die RCPT-Angabe. Der Einlieferer einer Mail muss nur angeben, an wen die Mail gehen soll. Eine From-Angabe ist bei PHPs mail()-Funktion optional, bzw. muss, wenn gewünscht, extra in den zusätzlichen Headerzeilen angegeben werden. Wenn du keine From-Angabe machst, willst du sicherlich auch, dass deine Post befördert wird. PHPs mail()-Funktion fügt auch von sich aus keine From-Angabe ein. Exim kann demzufolge diese Angabe nicht auswerten. Beim Durchgehen der ACL steht Exim nur die die SMTP-RCPT-Angabe zur Verfügung. Du möchtest deinen Exim so konfigurieren, dass er als RCPT nur deine Domain(s) durchlässt, was im Allgemeinen bei ankommenden Mails der Fall ist, denn ansonsten wäre er ein offenes Relay und damit gemeingefährlich. Für eine Kontrolle der Mails die "nach außen" gehen sollen, bleibt dir dann noch der Host des Einlieferers übrig. Also musst du da die Hosts angeben, von denen Post versendet wird. Das wären der PHP-Server und andere Hosts in deinem Netzwerk die über den Exim senden sollen.

» Das ist erstmal nur die Erlaubnis. Es gibt weitere Konfigurationen, die für den Transport zuständig sind und die Nachrichten in die konfigurierten Kanäle weiterleiten. Auch daran kann ein Mailausliefern scheitern.
Klingt so als ob es mehrere Wege gibt dass zu erreichen was ich gern hätte, die Frage ist wo man am besten angreift.

Es sind einfach mehrere Schritte, die der Exim nacheinander abarbeiten muss, um eine Mail zu versenden. Momentan bist du ja noch beim ACL. Wenn das erledigt ist, kommt der nächste Schritt und das ist das Ausliefern. Du kannst deine Post an den SMTP-Server deines Providers weitergeben oder sie direkt an den Empfängerbriefkasten ausliefern. Hierbei gibt es auch einige Dinge zu konfigurieren, aber das hast du vielleicht schon erledigt, sonst gingt gar kein Mailversand.

echo "$verabschiedung $name";