Kann ich Systemmail für die Verwendung eines externen SMTP-Servers einrichten?


72

Ist es möglich, System-E-Mails auf einer Linux-Box einzurichten, die über einen anderen SMTP-Server gesendet werden sollen - möglicherweise sogar mit Authentifizierung? Wenn ja, wie mache ich das?

Wenn das unklar ist, geben Sie ein Beispiel. Wenn ich in der Befehlszeile bin und tippe:

cat body.txt | mail -s "just a test" myfriend@hisdomain.com

ist es möglich, dass dies über einen externen SMTP-Server wie G-Mail gesendet wird?

Ich suche nicht nach einer Möglichkeit, E-Mails von Google Mail über die Befehlszeile zu senden, sondern nach einer Möglichkeit, das gesamte System für die Verwendung eines bestimmten SMTP-Servers oder möglicherweise eines Kontos auf einem SMTP-Server zu konfigurieren (wobei die Absenderadresse möglicherweise überschrieben wird). .


Tatsächlich waren die meisten Maschinen so eingerichtet. Haben Sie einen bestimmten MTA im Sinn? Wenn nicht (dies beinhaltet "Was ist ein MTA?"), Welche Distribution führen Sie aus?
Gilles

Ich bin auf Ubuntu 10.04 und habe diesen Artikel zum Einrichten von ssmtp gefunden. Können Sie näher erläutern, wie die meisten Maschinen eingerichtet sind?
KWD

Antworten:


71

Ich fand sSMTP sehr einfach zu bedienen.

In Debian-basierten Systemen:

apt-get install ssmtp

Bearbeiten Sie dann die Konfigurationsdatei in /etc/ssmtp/ssmtp.conf

Eine Beispielkonfiguration für die Verwendung von Google Mail zum Senden von E-Mails:

# root is the person who gets all mail for userids < 1000
root=your@email.com

# Here is the gmail configuration (or change it to your private smtp server)
mailhub=smtp.gmail.com:587
AuthUser=your@gmail.com
AuthPass=yourGmailPass
UseTLS=YES
UseSTARTTLS=YES

Anmerkung : Stellen Sie sicher, dass der Befehl "mail" in Ihrem System vorhanden ist. mailutils-Paket sollte dieses in Debian-basierten Systemen bereitstellen.

Update : Es gibt Leute (und Fehlerberichte für verschiedene Linux-Distributionen), die berichten, dass sSMTP keine Passwörter mit einem Leerzeichen oder einem # -Zeichen akzeptiert. Wenn sSMTP für Sie nicht funktioniert, ist dies möglicherweise der Fall.


2
Als Hinweis für andere müssen Sie möglicherweise ssmtp und dann mailutils installieren. Ich denke, mailutils richtet den Mail-Befehl und Symlinks zu ssmtp ein, damit Sie die reguläre mailSyntax verwenden können :)
CWD

1
@cwd Gerade auf Ubuntu 13.04 getestet. Ich musste das mailutilsPaket nicht installieren (und es wird nicht automatisch installiert). ssmtpout-of-the-box gearbeitet.
Pijusn

Ich habe dies gerade erfolgreich in Debian auf einem BeagleBone Black verwendet und musste zuerst mailutils installieren.
Dave Nelson

Auf Kubuntu 14.04 musste mailutils nach ssmtp installiert werden . Allerdings hat es beim ersten Versuch geklappt.
MariusMatutiae

6
ssmtp überprüft NICHT das SSL / TLS-Zertifikat des Remote-Servers auf den aktuellen Debian-, Ubuntu- und Redhat-Releases und überprüft auch NICHT den Hostnamen des Zertifikats. Dies ist ein wichtiges Problem, da dadurch die Verschlüsselung effektiv unbrauchbar wird und Ihr Passwort als Klartext übertragen wird und jeder daran riechen kann. ssmtp wurde seit mindestens 2009 nicht mehr aktiv weiterentwickelt. Wenn Sie also Wert auf die Sicherheit des E-Mail-Kontos legen, das Sie für die ausgehenden E-Mails Ihres Servers verwenden, verwenden Sie NICHT ssmtp, sondern postfix (oder etwas anderes): unix.stackexchange.com/ a / 118101/72087
Zulakis

23

Für Postfix :

  • Fügen Sie die IP für Ihr externes Mail-Relay hinzu /etc/hostsund fügen Sie ein Alias- Mail-Relay hinzu.
  • Ändern Sie die Postfix-Konfiguration:

    relayhost = [mailrelay]
    smtp_sasl_auth_enable = yes
    smtp_sasl_password_maps = hash:/etc/postfix/smtp_auth
    smtp_sasl_security_options = noanonymous
    
  • Bearbeiten /etc/postfix/smtp_auth

    mailrelay login:password
    
  • In Hash-Format konvertieren

postmap /etc/postfix/smtp_auth

Keine Notwendigkeit zu sagen, dass nur root dies lesen kann ... chmod u=r,og=-


9

mailx unterstützt das Einstellen des SMTP-Servers auf der CLI ...

echo "message" | mailx -S smtp=$smtphost:$smtpport -s "subject line" -v foo@baa.com

Es muss nichts installiert werden, sofern Sie auf Ihrem SMTP-Server nicht authentifizierte E-Mails senden können.

Es gibt keine Antwort, die den SMTP-Server für alle Software-Komponenten auf Ihrer Linux-Box einstellt . Jeder E-Mail-Client kann einen SMTP-Server konfigurieren.


Stellen Sie sicher, -S var=val vor Ihrem Empfänger zu setzen .
Benoit Duffez

Was tun, wenn nicht authentifizierte E-Mails nicht zulässig sind? Ich habe Client wurde nicht authentifiziert, um anonyme Mail während MAIL,
Mian Asbat Ahmad


7

Mein Favorit ist der E-Mail- Client ( Github ). Es ist wirklich einfach, keine komplexe Konfiguration erforderlich, keine Abhängigkeiten erforderlich. Und Sie können das Argument smtp-server über die Befehlszeile angeben, was bedeutet, dass es für Skripterstellung besser geeignet ist. Das einzige Schade ist, dass die meisten Linux-Distributionen dieses Tool nicht enthalten. Sie müssen es also selbst kompilieren.

Zitate aus E-Mail-Projekt auf Github

F: Was ist "E-Mail"?

A: 'email' ist ein von mir entwickeltes Programm, das E-Mails über die Befehlszeile an entfernte SMTP-Server sendet oder 'sendmail' intern verwendet und vollständig mit GNUPG interagiert, um Ihre E-Mails zu verschlüsseln und zu signieren. Sie können GNUPG unter folgender Adresse erhalten: http://www.gnupg.org

Vielen Dank an cygwin, dass Sie mir diesen nützlichen E-Mail- Client mitgeteilt haben .

Kompilieren und installieren

./configure
make
./install.sh --version 3.1.3 --prefix /usr --mandir /usr/share/man --sysconfdir /etc

Befehlszeilenoptionen von E-Mail

$ email --help
Options information is as follows
email [options] recipient1,recipient2,...

    -h, -help module          Print this message or specify one of the below options
    -V, -verbose              Display mailing progress.
    -f, -from-addr            Senders mail address
    -n, -from-name            Senders name
    -b, -blank-mail           Allows you to send a blank email
    -e, -encrypt              Encrypt the e-mail for first recipient before sending
    -s, -subject subject      Subject of message
    -r, -smtp-server server   Specify a temporary SMTP server for sending
    -p, -smtp-port port       Specify the SMTP port to connect to
    -a, -attach file          Attach file and base64 encode
    -c, -conf-file file       Path to non-default configuration file
    -t, -check-config         Simply parse the email.conf file for errors
    -x, -timeout              Set socket timeout.
        -cc email,email,...   Copy recipients
        -bcc email,email,...  Blind Copy recipients
        -sign                 Sign the email with GPG
        -html                 Send message in HTML format ( Make your own HTML! )
        -tls                  Use TLS/SSL
    -m, -smtp-auth type       Set the SMTP AUTH type (plain or login)
    -u, -smtp-user username   Specify your username for SMTP AUTH
    -i, -smtp-pass password   Specify your password for SMTP AUTH
    -g, -gpg-pass             Specify your password for GPG
    -H, -header string        Add header (can be used multiple times)
        -high-priority        Send the email with high priority
        -no-encoding          Don't use UTF-8 encoding

Beispielnutzung

Einfache Mail mit angegebenem SMTP-Server

echo "mail body" | email -subject "unix.stackexchange.com Q36982" -from-name LiuYan刘研 -from-addr liuyan@domain.com -smtp-server smtp.domain.com -smtp-port 25 cwd@your-domain.com your-friends@his-domain.com

HTML-Mail

echo "<h1>header</h1><p>paragraph</p>" | email -html -subject "unix.stackexchange.com Q36982 HTML mail" cwd@your-domain.com

Anhänge)

echo "see the attachment(s)" | email -subject "This is my email.conf file" -attach /etc/email/email.conf -attach cwd@your-domain.com

2

Richten Sie einen lokalen Exim-SMTP-Server ein, indem Sie den Anweisungen auf dieser Seite folgen. Wählen Sie jedoch im ersten Bildschirm der Exim-Konfiguration die Option "Von Smarthost gesendete E-Mail; keine lokale E-Mail" . Dadurch wird ein SMTP-Server auf Ihrer Box eingerichtet, der E-Mails von den Befehlen "mail" oder "mailx" empfangen und alle Nachrichten zur Zustellung an den Smarthost (in Ihrem Fall einen Google Mail-Server) weiterleiten kann.

Um ausgehende E-Mails über einen Google Mail-Server zu senden, müssen Sie die TLS-Unterstützung für Exim einrichten , was nicht trivial ist. In diesem Howto finden Sie einige Erklärungen. Hier finden Sie einen Link mit weiteren Erklärungen zu Google Mail. Sie sollten sich mehrere Stunden Zeit nehmen, um dies zum Laufen zu bringen. Ich würde vorschlagen, zunächst E-Mails von Ihrer Box an einen TLS-fähigen SMTP-Server zu senden, auf den Sie Root-Zugriff haben, damit Sie Ihre Exim TLS-Konfiguration von beiden Seiten aus debuggen können, bevor Sie versuchen, über einen Google Mail-Server zu senden. Da die Kommunikation verschlüsselt ist, können Sie Tools wie tcpdump nicht zum Analysieren des Protokolls auf der Leitung verwenden.


1

Wenn Sie über eine externe SMTP-Serverkonnektivität mit Ihrem Host verfügen, können Sie SMTP auf Ihrem Host konfigurieren und E-Mails senden.

Die SMTP-Konfiguration in Linux-Schritten finden Sie hier: http://kerneltalks.com/config/guide-smtp-configuration-linux/

Beispiele für E-Mail-Befehle finden Sie hier: http://kerneltalks.com/commands/examples-send-email-through-terminal/


Die Antworten sollten so detailliert sein, dass sie für sich allein stehen. Links mit umfassenderen Informationen zu haben, ist in Ordnung, aber mindestens ein Teil des verlinkten Materials sollte in der Antwort zitiert werden, damit es nützlich sein kann, nachdem der Link verrottet ist.
user4556274
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.