Leichter ausgehender SMTP-Server

46

Was verwenden Sie als leichtgewichtiges SMTP nur für ausgehende E-Mails?

Ich verwende eine App, die E-Mails über SMTP sendet, wenn von Zeit zu Zeit Ereignisse auftreten, und benötige keinen voll ausgestatteten E-Mail-Server.

EDIT: Ich verwende gerne so etwas wie Postfix (und mache es), wenn das die beste Wahl ist. Ich dachte, es könnte etwas viel Einfacheres geben, das aus der Box läuft.

FlappySocks
quelle
Ich halte es für absolut vernünftig, sich an so etwas wie exim und postfix zu halten. Sie sind nicht schwer zu konfigurieren, wenn Sie einfache Dinge tun.
Faheem Mitha
Was ist Ihre Definition von "Leichtgewicht"? Wie groß erwarten Sie die Nachrichten zu sein? Wie oft ist "ab und zu"?
Mike B

Antworten:

22

Es gibt mehrere Möglichkeiten für minimale Weiterleitungs-Mail-Transfer-Agents (MTAs oder "Mail-Server"), von denen einige in anderen Antworten erwähnt wurden:

Damit dies funktioniert, benötigen Sie irgendwo einen vollwertigen MTA, der Ihre Nachrichten weiterleitet (bekannt als "Mail-Hub"). Es wird dringend empfohlen, diesen Mail-Hub zu steuern. Bad Things ™ kann auch anders passieren.


quelle
esmtp wird nicht mehr gepflegt.
Nikola Kotur
1
nullmailer hat ein ernstes Problem mit der SMTP-Konformität: Es wird unendlich oft wiederholt, wenn ein permanenter SMTP-Fehler auftritt. Dies kann Sie echtes Geld kosten, wenn Sie für Bandbreite / Transit bezahlen. Bugs.debian.org/cgi-bin/bugreport.cgi?bug=329192
telent
@telent: Sie sollten in einem solchen Szenario keinen Nullmailer verwenden.
Vielen Dank! Das Konfigurationshandbuch unter troubleshooters.com/linux/nullmailer weist auf ein Sicherheitsproblem mit nullmailer hin: Es macht Kennwörter in der Befehlszeile verfügbar oder wird zumindest dazu verwendet. Andere Konversationen stellen fest, dass mit mstmp weniger klar ist, wie E-Mails in die Warteschlange gestellt werden sollen, als mit nullmailer.
Nealmcb
11

IMHO ist der einfachste Weg, dies zu tun, mit Postfix. Sie können es mit den folgenden Befehlen als Lichtausgangsrelais konfigurieren:

postconf -e relayhost=other.mailserver.com
postconf -e myorigin=my.domainname.com

Solange der unter angegebene SMTP-Server relayhostkeine Authentifizierung erfordert, die Weiterleitung zulässt oder ein gültiges Ziel für die Empfängeradresse ist, funktioniert dies.

Der myoriginParameter ist der Standarddomänenname. Wenn Sie also eine E-Mail an foo senden, wird diese an [email protected] gesendet. Von der Benutzerleiste gesendete E-Mails werden von [email protected] gesendet.

Wenn Sie sich authentifizieren müssen und TLS unterstützen möchten, führen Sie auch die folgenden Befehle aus:

postconf -e smtp_tls_security_level=may
postconf -e smtp_sasl_auth_enable=yes
postconf -e smtp_sasl_password_maps=pcre:/etc/postfix/sasl_password_maps

Dann /etc/postfix/sasl_password_mapshaben Sie diesen Inhalt:

/./ username:password

Alle E-Mails werden mit dem angegebenen Benutzernamen und Passwort an Ihren Relayhost gesendet.

Bahamat
quelle
Versuchte diese Einstellungen und ich bekomme eine Fehlermeldung: "Fehler: nicht unterstütztes Wörterbuch Typ: pcre"
Valentin
1
Installieren Sie pcre und / oder postfix-pcre und versuchen Sie es erneut.
Bahamat
Ich habe es herausgefunden, auch in der Zwischenzeit fehlten zwei Pakete, das erste ist postfix-pcre, wie Sie sagten, aber das andere war seltsam - libsasl2-modules. Ich bin verwirrt, wie libsasl2 und libsasl2-modules-db installiert wurden, aber libsasl2-modules fehlten ... Jetzt funktioniert endlich alles. Können Sie bitte diese wichtigen Informationen zu Ihrer Antwort hinzufügen?
Valentinstag,
1
Für tls habe ich auch verwendet: relayhost=other.mailserver.com:465then smtp_tls_wrappermode=yesund smtp_tls_security_level=encryptaber es wird versucht, den lokalen Benutzer als Auth zu verwenden. Ich muss den Auth-Benutzer irgendwie umschreiben.
Tudor
"Solange der in relayhost angegebene SMTP-Server keine Authentifizierung erfordert" -> ok, aber das ist heutzutage selten der Fall. Ihr Vorschlag ist richtig, aber meistens irrelevant!
FarO
9

Angenommen, Sie benötigen ein Programm, das Sie über die Shell wie sendmail (8) ausführen können, passt MSMTP möglicherweise zu Ihren Anforderungen? Es kann eine Verbindung zu einem Remote-SMTP-Server herstellen und E-Mails wie sendmail als stdin senden.

Michael Ratanapintha
quelle
Ich benutze MSMTP dafür, funktioniert super und die Konfiguration ist sehr einfach.
1.
Ich bin so froh, dass du das empfohlen hast. Ich habe schon eine ganze Weile nach so etwas gesucht. Die Konfiguration von sendmail ist einfach zu differenziert für meine Bedürfnisse.
ixtmixilix
4

ESMTP ist ein Mail-Übertragungsserver, der nur für Weiterleitungen verwendet wird und möglicherweise für Ihre Anwendung geeignet ist.

moberley
quelle
1
Projekt scheint ab 2009 tot
SHernandez
2

Möglicherweise finden Sie sSMTP passend für Ihre Bedürfnisse. Lesen Sie diesen Artikel und seine Einschränkungen.

Ganz ehrlich, ich würde nicht zu sehr auf die Installation von Postfix oder Exim verzichten, auch wenn es nur zum Versenden von E-Mails gedacht ist.

Evan
quelle
1
+1 für ssmtp, -1 für den unnötigen Kommentar bei sendmail sowie die Empfehlung, ein vollständiges mta zu verwenden, was viel schwieriger ist, richtig zu machen. schlecht konfigurierte und gewartete Mailserver machen das Leben von Mailadministratoren zur Hölle.
@hop: In beiden Punkten bin ich anderer Meinung. sendmail ist schrecklich. Außerdem ist exim zum Beispiel der Debian-Standard und sehr einfach zu verwenden. Also ist Postfix wahrscheinlich, aber ich habe es nie benutzt.
Faheem Mitha
1

Sie benötigen technisch gesehen keinen E-Mail-Server auf Ihrem Host. Was Sie benötigen (und wahrscheinlich auch schon haben), ist ein SMTP-Client (oder MUA), der eine Verbindung zu Ihrem Unternehmens-SMTP-Server herstellen kann (mit dem Sie sich überall verbinden können) .)

Abhängig von der App (und der Programmiersprache, in der sie geschrieben wurde) gibt es viele verschiedene Möglichkeiten, wie sich Ihre App mit dem SMTP-Server in Ihrem Netzwerk verbindet.

Normalerweise gibt es mit PHP oder Python eine Konfigurationsdatei mit der App, um den "SMTP" -Server anzugeben (der sich auf Ihrem Host oder an einer anderen Stelle in Ihrem Netzwerk befinden kann.) Wenn Sie bereits einen Mailserver im Netzwerk haben, zeigen Sie einfach auf Konfiguration auf diesen Server.

Wenn keine anderen Optionen vorhanden sind, kann die App die E-Mail-Nachricht an die Standardausgabe generieren, die Sie folgendermaßen verarbeiten können:

listoftargets = "[email protected] [email protected]" Echo "Test Content" | mail -s "Test Subject" $ listoftargets

Auf einigen Systemen gibt es bereits einen minimalen Mailserver, der nur zum Senden verwendet werden kann.

Sam T.

samt
quelle
Ich habe eine ganze Reihe von Servern in der Cloud, und ich wollte wirklich, dass jeder seine eigenen ausgehenden SMTP-Server hat, anstatt sich auf irgendetwas Externes zu verlassen. Auf diese Weise sind nicht alle Server betroffen, wenn mein SMTP-Remoteserver inaktiv ist.
FlappySocks
1) Wenn Sie PHP oder Python den SMTP-Teil ausführen lassen, müssen Sie die gesamte Arbeit (Warteschlange, Fehlerbehandlung) erledigen, die ein MTA erledigen würde. 2) am ende widersprichst du dem, was du am
Einige Linux-Anwendungen sind so eingerichtet, dass sie ausführbare Dateien erwarten mailoder sendmailbenennen. Systembenachrichtigungen. Das ist der springende Punkt, nicht wahr? Für alles andere gibt es keine Einschränkungen.
Craig Hicks