Beispiel: Ändern Sie die Absenderadresse, wenn Sie E-Mails aus dem lokalen Netzwerk senden


8

Wir haben ein funktionierendes Exim-Setup an einem Standort, an dem Benutzer E-Mails senden und empfangen können. Wir versuchen, einen Server einzurichten, der einige Warnungen und Fehler per E-Mail an eine Adresse außerhalb des lokalen Netzwerks sendet.

Das Problem ist:

Das Programm, das die E-Mails sendet, sendet sie unter Verwendung des Benutzernamens, unter dem es ausgeführt wird, und des lokalen Hostnamens des Servers. Dies führt dazu, dass die E-Mails einen Absender im Format haben: myapp@myserver.mydomain. Exim sendet diese E-Mails an den SMTP-Server des Internetdienstanbieters, der die E-Mails ablehnt, da sie einen illegalen oder nicht überprüfbaren Absender (die interne Adresse) haben.

Ich denke, ich sollte exim so konfigurieren, dass der Absender neu geschrieben wird, wenn:

  • Die Domain des Absenders befindet sich im lokalen Netzwerk
  • Die Domäne des Empfängers befindet sich außerhalb des lokalen Netzwerks

Ich habe versucht, eine Art Umschreiben in der Exim-Konfiguration festzulegen, aber es ist mir nicht gelungen, es zum Laufen zu bringen. Ich würde zeigen, was ich versucht habe, aber mir ging beim letzten Besuch der Website die Zeit davon und ich musste zur Originalversion zurückkehren, wobei ich alle Änderungen verlor, die ich versucht hatte.

Antworten:


9
begin rewrite
myapp@myserver.mydomain   legal.user@myserver.mydomain   SFfrs

Die Flags haben folgende Bedeutung:

  1. S - Führen Sie alle Umschreibungen zur SMTP-Zeit durch. Dies bedeutet, dass alle folgenden Flags sofort ausgeführt werden, wenn die Daten eingehen, für die sie gelten, und erst später verzögert werden.
  2. F - Schreiben Sie den Umschlag vom Feld neu.
  3. f - Schreiben Sie das Feld From: -Header neu.
  4. r - Schreiben Sie das Header-Feld Antwort an: neu.
  5. s - Schreiben Sie das Header-Feld Sender-To: neu.

Weitere Informationen zum Umschreiben von Nachrichten finden Sie in Kapitel 31 der Exim-Spezifikation


1
So habe ich es zum Laufen gebracht , außer: Es muss eine ^am Anfang der Regel geben, mit SAusnahme eines regulären Ausdrucks
Esa Varemo

1
s sollte " Sender:" Header nicht " Sender-To:" sein (und es ist eine zu kleine Änderung, um den Beitrag zu bearbeiten)
Gert van den Berg

11

Die Datei /etc/email-addressessollte das Problem behandeln. Dies ist ein Standardbestandteil der Exim-Distribution. Sie müssen einen Datensatz für jeden lokalen Benutzer konfigurieren, der E-Mails sendet.

Versuchen Sie eine Linie zu /etc/email-addressesmögen:

 myapp:   donotreply@example.com

Fügen Sie auf Ihrem MX-Server einen Alias ​​wie folgt hinzu:

 donotreply:    :blackhole:

Verwenden Sie eine Reply-to:Kopfzeile, damit der Empfänger auf die Nachricht antworten kann.

Für die Datei /etc/email-addresseswird der folgende Umschreibcode verwendet, der sich am Anfang des rewriteAbschnitts der Konfigurationsdatei befinden sollte.

*@+local_domains "${lookup{${local_part}}lsearch{/etc/email-addresses}\
                  {$value}fail}" Ffrs

/etc/email-addressesexistiert nicht auf meinem Server. Kann ich es einfach erstellen oder zeigt das an, dass etwas fehlt?
Esa Varemo

@EsaVaremo Suchen Sie in Ihrer Konfigurationsdatei nach email-addressesoder überprüfen Sie Ihre Konfigurationsdatei auf den Abschnitt zum Umschreiben. Möglicherweise wurde dies in Ihrer Distribution nicht konfiguriert.
BillThor

Ich habe versucht grep, locateund sah ein paar man-Seiten, aber nichts gefunden. Sollte die Datei in definiert werden exim.conf?
Esa Varemo

@EsaVaremo Die Zeile am Ende meiner Antwort sollte sich im Abschnitt zum Umschreiben von befinden exim.conf. Wenn es fehlt, fügen Sie es hinzu. Stellen Sie sicher, dass die Variable local_domainsIhre Domain enthält.
BillThor

Ich habe Ihre Bearbeitung eine Weile bemerkt, nachdem ich meinen letzten Kommentar abgegeben hatte. Aus irgendeinem Grund habe ich das nicht zum Laufen gebracht, also habe ich mich für die andere Antwort entschieden, da mir die Zeit ausgeht. Ich bezweifle nicht, dass dies richtig ist, ich hatte wahrscheinlich gerade etwas falsch geschrieben / konfiguriert ...
Esa Varemo

1

/etc/email-addressesDies ist praktisch, wenn Sie nur eine E-Mail-Adresse pro Benutzername zuordnen müssen. Wenn Ihr Benutzer jedoch E-Mails mit mehreren Adressen senden muss, müssen Sie diese /etc/email-addressesjedes Mal ändern , und Sie werden unweigerlich die falsche Adresse verwenden.

Ein anderer Ansatz besteht darin, die E-Mail mit dem exim4Befehl und seiner -fOption zu senden :

$ cat email|/usr/sbin/exim4 -f myapp@example.com recipient@example.com

Beachten -fSie, dass Ihr Benutzer entweder zu den vertrauenswürdigen Benutzern von exim gehört oder dass er ihn als zulässigen nicht vertrauenswürdigen Absender akzeptiert , damit die Option funktioniert.

In meinem Fall war Letzteres dank dieses Platzhalters in /etc/exim4/conf.d/main/02_exim4-config_options :

untrusted_set_sender = *

Die andere Lösung besteht darin, die folgende Zeile hinzuzufügen /etc/exim4/conf.d/main/00_local_settings(unter der Annahme der geteilten Konfiguration von exim, und sie zu erstellen, falls sie noch nicht vorhanden ist):

MAIN_TRUSTED_USERS = yourusername

Für beide Optionen muss die Konfiguration von exim neu geladen werden. Unter Debian:

# dpkg-reconfigure exim4-config
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.