Einführung
Eine der häufigsten Anforderungen beim Einrichten eines neuen Webservers ist das Senden von E-Mails. Der sicherste und einfachste Weg, dies zu tun, besteht darin, Ihren Server mit einem Mailing-Dienst wie SendGrid oder Amazon SES zu verbinden. Durch die Verwendung eines externen Dienstes können Sie vermeiden, dass die IP-Adresse Ihres Servers von Anti-Spam-Diensten auf die schwarze Liste gesetzt wird.
In diesem Tutorial erfahren Sie, wie Sie den in FreeBSD integrierten Sendmail-Dienst mit SendGrid verbinden, um E-Mails von Ihrem Server aus zu senden. Sie können die Einstellungen auch problemlos für einen anderen externen Mail-Dienst anpassen.
Wenn Sie neu in FreeBSD sind, werden einige unserer Aktionen vielleicht etwas beängstigend aussehen, aber Sie werden es bald nicht mehr schwer haben, die Ärmel hochzukrempeln, um ein wenig Systemtools wie die FreeBSD-Profis neu zu kompilieren.
Tore
In diesem Tutorial werden wir:
-
Kompilieren Sie Sendmail mit SASL-Unterstützung neu, damit sich der Server bei einem externen Dienst authentifizieren kann
-
Konfigurieren Sie den Sendmail-Mailserver mit den entsprechenden Einstellungen
-
Testen Sie ausgehende E-Mails, um sicherzustellen, dass E-Mails von Ihrem Server gesendet werden
Voraussetzungen
Bevor Sie mit diesem Handbuch beginnen, benötigen Sie Folgendes:
-
Ein FreeBSD 10.1-Droplet
-
Zugriff auf Ihr * root * -Konto oder ein Konto mit Sudo-Rechten über dieses tutorial
-
Grundkenntnisse in der Bearbeitung von Textdateien über die Befehlszeile
-
Sie sollten Ihren bevorzugten Texteditor installieren, z. B. "+ nano" oder "+ vim"
-
Ein kostenloses Konto SendGrid für Testzwecke oder ein anderer E-Mail-Anbieter, der Ihnen SMTP-Details für den Dienst bereitstellt. Sie benötigen diese Angaben für Ihren externen Mailprovider:
-
SMTP-Hostname
-
Nutzername
-
Passwort
-
Den Hostnamen Ihres Servers finden Sie, indem Sie "+ Hostname +" ausführen
Dieses Tutorial ist am einfachsten als * root * zu befolgen:
sudo su
Schritt 1 - Paketverwaltung einrichten
Zuerst müssen wir Sendmail neu kompilieren, damit es sich bei einem externen Mail-Dienst authentifizieren kann - in diesem Fall SendGrid.
Alle Schritte sind hier enthalten, aber wenn Sie möchten, können Sie dem official FreeBSD handbook folgen.
Einige Software wird aus der Ports Collection von FreeBSD kompiliert, daher müssen wir sicherstellen, dass diese zuerst auf dem neuesten Stand ist.
portsnap fetch && portsnap update
Mit dem Portmaster-Dienstprogramm können wir auf einfache Weise Software aus dem Ports-Baum kompilieren. Lassen Sie uns diese also installieren.
pkg install portmaster
Führen Sie den folgenden Befehl aus, um sicherzustellen, dass das System neu kompilierte Pakete im neuesten Paketformat für FreeBSD installiert.
echo 'WITH_PKGNG=yes' >> /etc/make.conf
Schritt 2 - Installieren und Konfigurieren des SASL-Pakets
Kompilieren und installieren Sie mit unserem neu installierten Dienstprogramm Portmaster das Paket + cyrus-sasl2 +
mit dem folgenden Befehl. Dies wird für die Authentifizierung beim externen Mail-Dienst verwendet.
portmaster security/cyrus-sasl2
Wenn Sie dazu aufgefordert werden, vergewissern Sie sich, dass * LOGIN * aktiviert ist. Dies sollte standardmäßig der Fall sein. Wählen Sie * OK * und drücken Sie zweimal + ENTER +
, um alle Standardeinstellungen zu wählen. Wenn Sie dazu aufgefordert werden, antworten Sie mit + y +
, um Ihre Pakete zu aktualisieren und zu installieren. Sie sollten mit einer großen Menge an Ausgaben rechnen, die mit Folgendem enden:
Output===>>> Done displaying pkg-message files
===>>> The following actions were performed:
Upgrade of pkg-1.4.12 to pkg-1.5.0
Upgrade of perl5-5.18.4_11 to perl5-5.18.4_13
Installation of security/cyrus-sasl2 (cyrus-sasl-2.1.26_9)
Bearbeiten Sie die Datei (erstellen Sie sie, falls sie noch nicht existiert) + / usr / local / lib / sasl2 / Sendmail.conf +
und fügen Sie Folgendes hinzu:
vim /usr/local/lib/sasl2/Sendmail.conf
/usr/local/lib/sasl2/Sendmail.conf
pwcheck_method: saslauthd
Installieren Sie als Nächstes den Dienst "+ saslauthd +" für die SASL-Authentifizierung. Übernehmen Sie die Standardeinstellungen, wenn Sie dazu aufgefordert werden, und wählen Sie * OK *.
portmaster security/cyrus-sasl2-saslauthd
Bearbeiten Sie die Systemkonfigurationsdatei "+ / etc / rc.conf " und fügen Sie die folgenden Konfigurationsparameter am Ende der Datei hinzu. Ersetzen Sie "+" durch den Hostnamen Ihres Servers.
vim /etc/rc.conf
/etc/rc.conf
hostname = ""
sendmail_enable="YES"
saslauthd_enable="YES"
Starten Sie nun den Dienst "+ saslauthd +".
service saslauthd start
Sie sollten diese Ausgabe sehen:
Outputusage: hostname [-fs] [name-of-host]
usage: hostname [-fs] [name-of-host]
Starting saslauthd.
Bearbeiten Sie die Datei "+ / etc / make.conf +" und fügen Sie die folgenden Parameter hinzu, damit das System weiß, welche SASL-Sendmail-Optionen verwendet werden sollen.
vim /etc/make.conf
/etc/make.conf
SENDMAIL_CFLAGS=-I/usr/local/include/sasl -DSASL
SENDMAIL_LDFLAGS=-L/usr/local/lib
SENDMAIL_LDADD=-lsasl2
Schritt 3 - Sendmail mit SASL-Unterstützung neu kompilieren
In diesem Abschnitt kompilieren wir Sendmail erneut, um die SASL-Authentifizierung zu verwenden.
Jetzt müssen wir den neuesten Quellcode für FreeBSD 10.1 synchronisieren.
Zuerst installieren wir Subversion, damit wir den benötigten Quellcode problemlos erhalten können.
pkg install subversion
Jetzt können wir den neuesten Code zum Neukompilieren direkt von der FreeBSD-Projekt-Website herunterladen, um unsere Quellen in + / usr / src +
zu aktualisieren.
svn co http://svn.freebsd.org/base/releng/10.1/ /usr/src
Die nächsten Befehle, die Sie nacheinander ausführen müssen, werden jeweils in einer Gruppe ausgeführt. Wir weisen das System an, die integrierten Sendmail-Pakete mit unseren neuen Sicherheits- und Anmeldeanforderungen neu zu kompilieren (oder neu zu erstellen) und Sendmail anschließend neu zu installieren.
cd /usr/src/lib/libsmutil
make cleandir && make obj && make
cd /usr/src/lib/libsm
make cleandir && make obj && make
cd /usr/src/usr.sbin/sendmail/
make cleandir && make obj && make && make install
Schritt 4 - Sendmail konfigurieren
Sie haben es bis hierher geschafft, und wir haben die Dinge neu kompiliert. Lasst uns weitergehen!
Für diesen nächsten Schritt gehen wir eine grundlegende Sendmail-Konfiguration durch, die Sendmail anweist, alle ausgehenden E-Mails über unseren ausgewählten externen Smarthosting-Dienst weiterzuleiten.
Zuerst werden wir sicher sein und eine Sicherungskopie des Verzeichnisses "+ / etc / mail" erstellen.
cp -a /etc/mail /etc/mail.bak
Geben Sie das Mail-Konfigurationsverzeichnis ein.
cd /etc/mail
Führen Sie den folgenden Befehl aus, um eine grundlegende Mail-Konfiguration zu generieren.
make
Erstellen und bearbeiten Sie die Datei + relay-domains +
und fügen Sie die folgenden Parameter hinzu. Ersetzen Sie "" durch Ihren FQDN und "" durch Ihren Domainnamen.
vim /etc/mail/relay-domains
/ etc / mail / relay-domains
Erstellen und bearbeiten Sie die Datei + local-host-names +
und fügen Sie die folgenden Parameter hinzu. Ersetzen Sie die Variablen durch Ihre lokalen Hostnamen.
vim /etc/mail/local-host-names
/ etc / mail / local-host-names
Erstellen und bearbeiten Sie die Datei + access +
und fügen Sie die folgenden Parameter hinzu. (Beachten Sie, dass Sie die Adresse "+ smtp.sendgrid.net +" ändern müssen, wenn Sie einen anderen Anbieter als SendGrid verwenden.)
vim /etc/mail/access
/ etc / mail / access
smtp.sendgrid.net OK
GreetPause:localhost 0
Erstellen und bearbeiten Sie die Datei + authinfo +
und fügen Sie die folgenden Parameter hinzu. Ersetzen Sie "" und "" durch Ihren SendGrid-Kontonamen und Ihr Kennwort. Wenn Sie sich für einen anderen externen E-Mail-Anbieter entschieden haben, müssen Sie auch den Wert "+ smtp.sendgrid.net +" in beiden Zeilen in die Serveradresse Ihres Anbieters ändern.
vim /etc/mail/authinfo
/ etc / mail / authinfo
AuthInfo:smtp.sendgrid.net "U:root" "I:" "P:" "M:LOGIN"
AuthInfo:smtp.sendgrid.net:587 "U:root" "I:" "P:" "M:LOGIN"
Die Dateien + access +
und + authinfo +
sind wirklich einfache Datenbanken, aus denen Sendmail Konfigurationsparameter liest. Dies mag verwirrend klingen, besonders wenn Sie FreeBSD und Sendmail noch nicht kennen, aber Sie müssen nur diese beiden schmerzlosen Befehle aus dem + / etc / mail / +
ausführen, um die Datenbanken zu generieren.
makemap hash access < access
makemap hash authinfo < authinfo
Jetzt bearbeiten wir die Basiskonfiguration, für die wir einige Befehle generiert haben. Bearbeiten Sie die + .mc +
Datei. (Sie können das Verzeichnis "+" / etc / mail / + "verwenden, wenn Sie den Dateinamen nicht kennen.)
vim /etc/mail/.mc
Fügen Sie die folgenden Konfigurationszeilen zwischen den Block + dnl define (+
SMART_HOST ', + your.isp.mail.server') +
und den Block + dnl Uncomment ein, um die Position des Standardblocks +
zu ändern unten gezeigt.
Sie müssen die "+ smtp.sendgrid.net " - Adresse in die Serveradresse Ihres Providers ändern, wenn Sie kein SendGrid-Konto wie im Beispiel verwenden. Sie müssen auch die beiden Instanzen von "+" auf die Domain aktualisieren, von der die E-Mail stammen soll. (Beachten Sie, dass Sie möglicherweise die entsprechenden Einstellungen für TXT, DKIM, PTR usw. vornehmen müssen.) Aufzeichnungen, um Spoofing-Meldungen zu vermeiden.)
your_server.example.com.mc ’> / etc / mail / .mc
dnl define(`SMART_HOST', `your.isp.mail.server')
dnl SET OUTBOUND DOMAIN
MASQUERADE_AS(`')
MASQUERADE_DOMAIN()
FEATURE(masquerade_envelope)
FEATURE(masquerade_entire_domain)
dnl SMART HOST CONFIG
define(`SMART_HOST', `smtp.sendgrid.net')dnl
define(`RELAY_MAILER_ARGS', `TCP $h 587')dnl
define(`confAUTH_MECHANISMS', `GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
FEATURE(`authinfo',`hash /etc/mail/authinfo.db')dnl
TRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl Uncomment the first line to change the location of the default
Bevor wir die Änderungen anwenden, gehen wir zunächst die oben beschriebene Konfiguration durch. Der erste Block teilt Sendmail mit, dass wir sicherstellen möchten, dass unsere ausgehende Mail von unserer Domain "++" stammt.
Der zweite Block definiert, wo wir unsere E-Mails hosten wollen, einschließlich des Ports, der Authentifizierungsmethoden und unserer Authentifizierungsinformationen, die wir in einem vorherigen Schritt eingerichtet haben. Beachten Sie, dass wir auf die Datei "+ /etc/mail/authinfo.db +" verweisen.
Wenden wir nun die von uns vorgenommenen Änderungen an. Stellen Sie sicher, dass Sie sich noch im Verzeichnis "+ / etc / mail / +" befinden. Stellen Sie sicher, dass Sendmail gestartet ist:
service sendmail start
Aktualisierung unserer Konfiguration:
make
make install restart
Starten Sie Sendmail neu:
service sendmail restart
Unsere Sendmail-Konfiguration ist abgeschlossen. Der nächste Schritt ist das Senden einer Test-E-Mail.
Schritt 5 - Senden Sie eine Test-E-Mail
Nachdem wir alle Schritte für eine ordnungsgemäße Einrichtung durchlaufen haben, stellen wir sicher, dass alles funktioniert.
Verwenden Sie den Befehl "+ mailx +", um eine Testnachricht an ein echtes E-Mail-Konto zu senden, das Sie täglich verwenden.
mailx
Wenn Sie dazu aufgefordert werden, geben Sie "+ Test" oder was auch immer Sie für ein Motiv wollen ein und drücken Sie dann "+ ENTER".
Subject:
Sie erhalten dann nur einen Cursor und die Möglichkeit, den Text Ihrer Test-E-Mail zu schreiben. Schreiben Sie einfach das einzelne Wort "+ test" erneut und drücken Sie "+ ENTER" erneut.
test
Sie müssen "+ mailx " mitteilen, dass Sie mit dem Schreiben Ihrer Nachricht fertig sind. Dazu müssen wir die Nachricht mit einem einzigen ". " beenden und ein letztes Mal " ENTER " drücken. Sie sehen sofort " EOT +" als Bestätigung dafür.
.
EOT
Führen Sie als Nächstes den folgenden Befehl aus, um zu überprüfen, ob die E-Mail-Warteschlange leer ist und unsere Nachricht gesendet wurde.
mailq
Die Ausgabe sollte so aussehen, wenn unsere Testnachricht erfolgreich gesendet wurde, und Sie sollten sie in Kürze in Ihrem Posteingang sehen.
/var/spool/mqueue is empty
Total requests: 0
Überprüfen Sie jetzt Ihre E-Mails, um sicherzustellen, dass die Nachricht eingetroffen ist. Es sollte von * freebsd @ * sein.
Das blinde Vertrauen, dass die Mail-Warteschlange leer ist, ist kein gültiger Erfolgstest. Auch wenn Sie die Nachricht bereits erhalten haben, möchten Sie die Grundlagen der Anzeige Ihrer E-Mail-Protokolle kennen. Führen Sie den folgenden Befehl aus.
tail -f /var/log/maillog
Die beiden Schlüssel, nach denen Sie in der Protokollausgabe suchen, sind:
-
*
+ Gesendet (<Nachrichten-ID> Nachricht zur Zustellung angenommen) +
* -
* `+ relay = smtp.sendgrid.net. [208.43.76.147], dsn = 2.0.0, stat = Gesendet (Lieferung in Bearbeitung) + `*
Stellen Sie sicher, dass Sie diese Meldungen in der folgenden Protokollausgabe finden.
Mail LogFeb 11 04:09:13 your_server sm-mta[49080]: t1B49CW0049080: from=<freebsd@your_server>, size=331, class=0, nrcpts=1, msgid=<201502110409.t1B49CZ4049079@your_server>, proto=ESMTP, daemon=Daemon0, relay=localhost [127.0.0.1]
Feb 11 04:09:13 your_server sendmail[49079]: t1B49CZ4049079: [email protected], ctladdr=freebsd (1001/1001), delay=00:00:01, xdelay=00:00:01, mailer=relay, pri=30040, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (t1B49CW0049080 Message accepted for delivery)
Feb 11 04:09:13 your_server sm-mta[49082]: STARTTLS=client, relay=smtp.sendgrid.net., version=TLSv1/SSLv3, verify=FAIL, cipher=AES128-GCM-SHA256, bits=128/128
Feb 11 04:09:13 your_server sm-mta[49082]: t1B49CW0049080: to=<[email protected]>, ctladdr=<freebsd@your_server> (1001/1001), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30331, relay=smtp.sendgrid.net. [208.43.76.147], dsn=2.0.0, stat=Sent (Delivery in progress)
Dies zeigt an, dass Ihre Nachricht angenommen wurde und sich auf dem Weg zu Ihrem Posteingang befindet. Dies kann ein wenig enttäuschend sein, wenn Sie sie bereits erhalten haben.
Um Live-Tests und Fehlerbehebungen durchzuführen, können Sie zwei Terminalsitzungen öffnen und den Befehl + tail -f / var / log / maillog +
in einer ausführen lassen, während Sie in der anderen Testnachrichten senden.
Fazit
Sie können nun ausgehende E-Mails von Ihrem FreeBSD-Droplet über SendGrid oder einen beliebigen anderen E-Mail-Dienst senden. Alle Websites oder Webanwendungen, die Sie bereitstellen, können dies jetzt mit minimaler bis keiner Konfiguration nutzen.
Wenn Sie Fragen oder Kommentare haben, lassen Sie diese bitte unten.