Postfix oder Exim: Automatisierte/programmgesteuerte Einrichtung und Weiterleitung von E-Mails

Postfix oder Exim: Automatisierte/programmgesteuerte Einrichtung und Weiterleitung von E-Mails

Ich möchte unseren derzeitigen externen SMTP-Anbieter durch eine interne Installation ersetzen. Damit sollten die folgenden Situationen abgedeckt sein:

  • Bestimmte Adressen sollten an Gmail-Adressen weitergeleitet werden. Wir möchten Gmail weiterhin als unsere primäre E-Mail-Schnittstelle verwenden.

  • Andere Adressen sollten als Pop-/IMAP-Postfächer verfügbar sein.

  • Andere Adressen werden programmgesteuert behandelt: Sie lösen verschiedene Aufgaben aus, werden protokolliert usw. Diese Adressen sollten entweder einen Prozess zum Verarbeiten der E-Mail-Adressen starten oder in einem leicht verarbeitbaren Format gespeichert werden.

  • Darüber hinaus sollte es relativ einfach mit Domänenschlüsseln, SPF und allem anderen, was für die Zustellbarkeit von E-Mails erforderlich ist, konfigurierbar sein.

Ich habe früher Sendmail verwendet. Heutzutage scheinen Postfix und Exim die empfohlenen Optionen zu sein. Meine Hauptfrage ist: Was ist die beste Wahl und Konfiguration für die Weiterleitung der Adressen an Gmail und für den programmgesteuerten Zugriff? Ist Procmail immer noch die beste Wahl oder gibt es heutzutage bessere Optionen?

Wir verwenden Linux/Ubuntu-Server.

Antwort1

Postfix ist solide, wird gut unterstützt und lässt sich leicht konfigurieren. Alles, was Sie beschreiben, ist ziemlich Routine.

  • Weiterleitung: Verwenden Sie virtual_alias-Maps
  • POP/IMAP-Postfächer: lokale Zustellung, verwenden Sie etwas wie Dovecot für Ihren POP/IMAP-Server
  • Programmatisches Zeug: Wenn Sie meinen, dass Sie die E-Mail an ein Skript weiterleiten, geschieht das über /etc/aliases. Für „leicht verarbeitbar“ haben Sie das Mbox- und Maildir-Format, das ist alles Standardkram.
  • Domänenschlüssel/SPF: SPF wird im DNS durchgeführt. Domänenschlüssel lassen sich ganz einfach als Milter oder SMTP-Proxy einrichten.

Antwort2

bei den programmtechnischen Dingen müssen Sie wissen, unter welcher UID die Programme/Skripte ausgeführt werden.

Bei Postfix werden beispielsweise Skripte, die von /etc/aliases (oder einer anderen Aliasdatei im Besitz des Root-Benutzers) ausgeführt werden, als Benutzer „nobody“ ausgeführt.

Postfix hat die Fähigkeit, mehrere Aliasdateien zu haben und (und das ist der gute Teil) Programme, die von einer Aliasdatei ausgeführt werden, werden als der Benutzer ausgeführt, dem diese Datei gehört (mit Ausnahme von root – wie bereits erwähnt, werden Aliasdateien, die root gehören, als niemand ausgeführt).

Wenn Sie jemals ein Skript als Root aus einer E-Mail ausführen müssen, ist es am einfachsten (sofern Sie sudo installiert haben), sudo so zu konfigurieren, dass „niemand“ es ohne Kennwort als Root ausführen kann, und es von einem Wrapper-Skript aus auszuführen, das es mit sudo ausführt.

HINWEIS: Wenn Sie Skripte aus E-Mails heraus auslösen, müssen Sie daran denken, dass die Daten (also die E-Mail) aus einer nicht vertrauenswürdigen Quelle (dem Internet) stammen. Es ist daher äußerst unsicher, die Daten aus dem Text oder dem Header als Argumente für vom Skript ausgeführte Befehle zu verwenden. Dies ist im Grunde dasselbe Problem wie das Vertrauen in vom Benutzer bereitgestellte Daten in einem CGI-Skript – tun Sie es einfach nicht. Überlegen Sie sich beispielsweise, was ein schlecht geschriebenes Skript tun könnte, wenn die vom Benutzer bereitgestellten Daten etwa wie „… harmloseDatenhier…; rm -rf /“ lauten würden. Sie denken vielleicht, dass es einfach wäre, auf offensichtliche Dinge wie Semikolons zu achten und diese zu entfernen, aber es gibt auch eine Menge nicht offensichtlicher Dinge, auf die Sie achten müssten, und Sie würden sich damit nur selbst ins Verderben stürzen, da Sie wahrscheinlich nicht an alle denken oder sie alle erkennen werden. Es ist weitaus sicherer, das Sicherheitsrisiko vollständig zu eliminieren, indem Sie vom Benutzer bereitgestellten Daten einfach nie vertrauen.

dies ist unabhängig von der UID, unter der das Skript ausgeführt wird, wichtig, ist jedoch besonders wichtig, wenn es als Root ausgeführt wird.

Und zum Schluss noch eine Ihrer direkten Fragen: Procmail ist noch immer ein nützliches Tool für das, was Sie tun möchten. Das gilt auch für Maildrop und andere ähnliche Programme. Betrachten Sie Procmail usw. als spezialisierte Tools zum Parsen von Text und Headern, um zu entscheiden, was zu tun ist. Sie müssen also nicht den ganzen Parsecode in Ihren Skripten haben. Schreiben Sie Ihr Skript so, dass es einfach seine Arbeit macht, und verwenden Sie Procmail, um zu entscheiden, wann das Skript ausgeführt werden soll. Sie könnten zum Beispiel einen neuen Benutzer mit dem Namen „mailjobs“ erstellen, der über ein eigenes Home-Verzeichnis und eine eigene .procmailrc-Datei verfügt. Erstellen Sie dann Aliase, die E-Mails an diesen Benutzer weiterleiten. Die .procmailrc-Datei von mailjobs würde dann den Header „X-Original-To“ überprüfen, um zu entscheiden, welches Skript bzw. welche Skripte ausgeführt werden sollen.

Antwort3

Sowohl Exim als auch Postfix können Ihre Anforderungen problemlos erfüllen. Am besten wählen Sie die Version aus, die für Sie am einfachsten zu verwenden und/oder mit der Sie am besten vertraut sind.

Was die Weiterleitungen an Gmail und in Skripte betrifft, so ist die beste Methode hierfür einGlobale Aliasdatei(normalerweise in /etc/aliases oder /etc/mail/aliases gespeichert).

verwandte Informationen