Wie versende ich E-Mails mit meinem CentOS-Server?


21

Ich habe gerade einen bescheidenen Heimserver mit CentOS 5.5 gebaut. Ich möchte, dass der Server E-Mails an mein Google Mail-Konto oder andere E-Mail-Konten für verschiedene Zwecke wie Cron-Jobs senden kann. Es wäre auch schön, E-Mails über PHP-Anwendungen senden zu können, die ich auch auf dem Server laufe / entwickle. Oder der Server kann sogar E-Mails über den Befehl mail senden.

Ich weiß, dass es eine Million Google-Suchergebnisse gibt, die dazu dienen, Ihren Linux-Server als E-Mail-Server einzurichten oder Sendmail usw. zu konfigurieren. Aber sie scheinen nicht das zu sein, wonach ich suche ... zumindest glaube ich nicht. Ich versuche nicht, einen Unternehmensserver einzurichten, mit dem andere Clients eine Verbindung herstellen können, um E-Mails oder ähnliches zu versenden.

Ich möchte nur, dass mein Server mir E-Mails mit Informationen sendet. Scheint, als sollte es einfach sein ... Kann mich jemand in die richtige Richtung weisen?

AKTUALISIEREN

Auf eine Benutzeranfrage unten habe ich diesen Befehl ausprobiert:

/bin/mail -s "My Subject" "myaddress@gmail.com" < /home/john/test

Keine Fehler oder so. Die E-Mail wurde jedoch nie in meinem Posteingang angezeigt. Hier ist meinmaillog

Oct 27 00:52:19 localhost sendmail[13702]: o9R6qJhU013702: from=root, size=10906, class=0, nrcpts=1, msgid=<201010270652.o9R6qJhU013702@localhost.localdomain>, relay=root@localhost
Oct 27 00:52:19 localhost sendmail[13703]: o9R6qJOd013703: from=<root@localhost.localdomain>, size=11209, class=0, nrcpts=1, msgid=<201010270652.o9R6qJhU013702@localhost.localdomain>, proto=ESMTP, daemon=MTA, relay=localhost.localdomain [127.0.0.1]
Oct 27 00:52:19 localhost sendmail[13702]: o9R6qJhU013702: to=myaddress@gmail.com, ctladdr=root (0/0), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=40906, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (o9R6qJOd013703 Message accepted for delivery)

Irgendwelche Hinweise?


1
Hast du es versucht? Welche Art von Problemen sehen Sie?
Ignacio Vazquez-Abrams

Ich bin mir nicht sicher, wonach ich suche. Ich suche bei Google nach Anleitungen zum Einrichten eines Linux-Mail-Servers. Will ich das
Jake Wilson

Ich habe gerade bemerkt, dass dies immer noch unbeantwortet war. Haben Sie es aus Neugier herausgefunden? Haben Sie überprüft, ob die Maschine bei PBL gelistet ist? spamhaus.org/pbl
Belmin Fernandez

Ich habe es nicht zum Laufen gebracht. Ich habe den Prozess der Installation von sendmail noch nicht durchlaufen, da die folgenden Poster implizieren, dass es nicht erforderlich sein sollte, einfach eine einzelne E-Mail zu senden. Ich kann mir nicht vorstellen, dass mein kleiner Heimserver in einer Spam-Liste aufgeführt ist, da ich noch nie zuvor eine E-Mail von ihm gesendet habe.
Jake Wilson

Ich habe sogar den einfachen Befehl ausprobiert, den ich oben aufgeführt habe und der an ein 10minutemail.com- E-Mail-Konto gesendet wurde , mit demselben Ergebnis und derselben Protokollmeldung
Jake Wilson,

Antworten:


13

/bin/mail -s "Enter Subject Line here" -a /home/.../whateverFileYouWantAttached "you@YourEmailAddress" < /home/me/textBody.letter

versuchen Sie den obigen Befehl :)


1
+1 Sie benötigen keinen Mail-Server im System, um E-Mails zu senden, genauso wie Sie keinen Mail-Server auf Ihrem Desktop benötigen, um E-Mails zu senden. Das Mailprogramm ist in Ordnung.
dunxd

1
Ich habe diesen Befehl ausprobiert und es hat nicht funktioniert. Keine Fehler oder so. Nur, dass in meinem Google Mail-Posteingang keine E-Mails angezeigt werden. Schauen Sie sich oben an, was mein Maillog sagt
Jake Wilson

Also ... aus irgendeinem Grund funktioniert das bei mir nicht? In welchem ​​Protokoll sollte ich nachsehen, um festzustellen, warum ich keine E-Mails erhalte?
Jake Wilson

6

Einfache antwort:

Richten Sie sendmail ein . Es wird von Ihrer Distribution abhängen, aber das ist überhaupt nicht schwierig. Wenn Sie spezielle Fragen haben, wenden Sie sich an uns.

Komplizierte Antwort:

Wenn Sie dies fragen, sollten Sie wahrscheinlich noch nicht mit der Waffe springen und sendmail justtt einrichten .

Sie müssen ein paar Dinge berücksichtigen:

  1. Ermöglicht Ihnen Ihr ISP das Senden von E-Mails? Möglicherweise befinden Sie sich im IP-Bereich eines anderen Servers. Daher blockieren viele E-Mail-Anbieter Ihren gesamten IP-Bereich.

  2. Welche Adresse verwenden Sie als Absenderadresse? Sind Sie berechtigt, von dieser Adresse aus zu senden (SPF, DomainKeys usw.)? Andernfalls werden Ihre Nachrichten möglicherweise von E-Mail-Anbietern als Spam erkannt - und das zu Recht.

  3. Zu guter Letzt: Müssen Sie wirklich Ihren eigenen SMTP-Dienst nutzen? Gibt es einen Grund, warum die Verwendung Ihrer ISPs nicht gut genug ist?

Früher war das Einrichten eines SMTP-Servers keine große Sache. Heutzutage mag die Einrichtung einfacher sein, aber es ist eine Herausforderung , sie so einzurichten, dass sie tatsächlich Nachrichten an die Postfächer der Leute sendet .


3

Ich kann bestätigen, dass keiner der oben genannten Vorschläge auf meinem CentOS-System zu Hause funktioniert - kein einziger. Was nervt!

Dann habe ich dasselbe auf einer neuen Amazon-Instanz versucht, auf der CentOS 6.4 ausgeführt wird, und selbst mit der Standardkonfiguration kann ich problemlos E-Mails senden. Alles was ich tun musste war

yum install mailx

Danach funktioniert das Versenden von E-Mails wie ein Zauber. Das Installieren von Komplikationen wie sendmail ist NICHT notwendig, um das zu erreichen, was Jakub versucht.

Es muss sich um eine Konfiguration bei meinem ISP handeln, da ich hier keine konfigurierbare Firewall habe.


2

Sie müssen Folgendes tun:

  1. sudo yum install postfix telnet mailx
  2. sudo /etc/init.d/postfix start
  3. sudo vi /etc/postfix/main.cf
  4. Veränderung mydestination = mydomain.com, localhost.mydomain.com, localhost

    zu

    mydestination = localhost.mydomain.com, localhost

Testen Sie das Folgende über die Befehlszeile

  1. mail address@example.com Betreff:
  2. Testen Sie die E-Mail von demoslice.com Test
  3. Textkörper der E-Mail.
  4. .

Nr. 4 - Es gibt nur einen Punkt, um den Text der E-Mail zu vervollständigen. Sie sollten jetzt Mail haben.

Mit dem obigen Befehl erhalten Sie einen funktionierenden MTA (Mail Transfer Agent). Einige Ressourcen, die Ihnen bei einer erweiterten Einrichtung helfen, finden Sie in den Artikeln von slicehost zur E-Mail-Einrichtung für CentOS (scrollen Sie nach unten zum Abschnitt CentOS und E-Mail). Sie sollten wirklich in Betracht ziehen, Folgendes richtig einzustellen: Hostname, RDNS- (Reverse DNS) und SPF-Einträge (Sender Policy Framework) bei Ihrem DNS-Anbieter.


Dies ist eine brillante Antwort - kurz und funktioniert.
Monkjack

1

Haben Sie Ihre /etc/mail.rc geändert, um die SMTP-Adresse festzulegen?


1
Der Inhalt von /etc/mail.rcist set ask askcc append dot save crt ignore Received Message-Id Resent-Message-Id Status Mail-From Return-Path ViaWas schlagen Sie vor, was ich tue?
Jake Wilson

0

Versuchen Sie, postfix zu installieren und das Ziel in der Konfigurationsdatei festzulegen, auch wenn es mit sendmail funktionieren sollte.


0

Postfix ist auf dem richtigen Weg, aber es ist ziemlich unwahrscheinlich, dass Sie Ihre E-Mails zugestellt bekommen, es sei denn, Google Mail ist der Meinung, dass Sie zumindest aus der Ferne legitim sind (z. B. Sie sind kein Spammer).

Das Posten hier ist etwas aufwändig, aber der einfachste Weg, dies zu erreichen (und Ihre E-Mails zuzustellen), besteht darin, Postfix als Relay einzurichten und Ihr eigenes Google Mail-Konto als Transportmittel zu verwenden.

Der Prozess, den ich benutze, wird hier detailliert beschrieben:

http://rs20.mine.nu/w/2011/07/gmail-as-relay-host-in-postfix/

Es sind keine selbstsignierten Zertifikate erforderlich (gemäß sendmail) und meiner Erfahrung nach funktioniert es einfach!


0

Die einfache Lösung ist nicht sendmail, sondern sendEmail:

http://caspian.dotconf.net/menu/Software/SendEmail/#download

Ein Perl-Skript, das leicht für das Senden über jeden SMTP-Server konfiguriert werden kann. Ich verwende es, um die ganze Zeit über Google Mail-Konten zu senden, aber es funktioniert auch für gewöhnliches SMTP über TCP an Port 25 usw.

Normalerweise verpacke ich das sendEmail-Perl-Skript mit meinem eigenen Shell-Skript für Google Mail:

#!/bin/bash

# Send gmail through an account specified in ~/.sendGmailAuthFile (or file identified with -k.)
# The auth file must have values for the -f (from@domain) and -xp (password) options of sendEmail,
# structured as:
#
#    user=me.surnamen@gmail.com
#    pwd=xxxxxxx
#
# We will fill in the rest, and other params are passed through to sendEmail
#
# Example: sendGmail -u "My subject line" -t "test@whatever.com" < message.txt

function sendGmailImmed {
        local authFile="$HOME/.sendGmailAuthFile"
        for arg in "$@"; do
                if [[ "$arg" == "-k" ]]; then
                        shift
                        authFile="$1"
                        shift
                fi
        done
        initAuthFile $authFile
        source $authFile

        sendEmail -f $user -xu $user -xp $pwd -s smtp.gmail.com:587 -o tls=yes "$@"
}

function initAuthFile {
        # If the authfile doesn't exist, we'll create a dummy:
        if [[ ! -f $1 ]]; then
                echo "# sendGmail authentication file: " > $1
                echo "user=my.name@gmail.com" >> $1
                echo "pwd=my-password" >> $1
                echo "A shell auth file has been created as $1"
        fi
}

if [[ -z $sourceMe ]]; then
        sendGmailImmed "$@"
fi
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.