So, wie versprochen heute der 2.Teil über SMTP-AUTH und TLS in Sendmail nachrüstenund zwar der für SuSE 8.1. Teil 1 gibt es hier
Zuerst sollte man kontrollieren ob openssl und cyrus-sasl auf dem System vorhanden ist, wenn nicht über Yast nachinstallieren. Nun müssen wir uns ein paar Schlüssel generieren und die dazugehörige Certificate Authority. (Was das alles genau ist verkneife ich mir, das kann man hier nachlesen). Normalerweise ist dafür das Script CA.pl zuständig, allerdings müssen wir es patchen. Wer weiss wie sowas funktioniert kann diesen Patch nutzen:
--- /usr/share/ssl/misc/CA.pl 2002-09-09 22:21:44.000000000 +0200
+++ ./CA.pl 2003-06-22 14:06:14.000000000 +0200
@@ -58,12 +58,12 @@
exit 0;
} elsif (/^-newcert$/) {
# create a certificate
- system ("$REQ -new -x509 -keyout newreq.pem -out newreq.pem $DAYS")
+ system ("$REQ -new -x509 -nodes -keyout newreq.pem -out newreq.pem
$RET=$?;
print "Certificate (and private key) is in newreq.pem\n"
} elsif (/^-newreq$/) {
# create a certificate request
- system ("$REQ -new -keyout newreq.pem -out newreq.pem $DAYS");
+ system ("$REQ -new -nodes -keyout newreq.pem -out newreq.pem $DAYS"
$RET=$?;
print "Request (and private key) is in newreq.pem\n";
} elsif (/^-newca$/) {
Ansonsten hier herunterladen, in CA.pl umbenennen (mv CA.txt CA.pl) und mit chmod 750 ./CA.pl wieder ausführbar ist. Ich gehe im folgenden davon aus, das sich das Script in /root/ca befindet und wir mit cd /root/ca auch dorthingehen.
Und los geht es mit:
./CA.pl -newca
Hiermit wird die sog. Root-CA initialisiert. Zu beachten gibt es hier das die erste Frage nur mit einem Return beantwortet werden sollte und das geforderte Passwort NICHT dem Root-Passwort entsprechen sollte. Wenn alles soweit beantwortet ist mit
cp demoCA/cacert.pem /etc/mail/certs/CA.cert.pem
die entsprechende Datei an die richtige Stelle kopieren. Nun erzeugen wir den Key für den Server und kopieren ihn wie gehabt an seinen Bestimmungsort.
./CA.pl -newreq
cp newreq.pem /etc/mail/certs/MYServer.key.pem
Es folgt das Zertifikat
./CA.pl -sign
cp newcert.pem /etc/mail/certs/MYServer.cert.pem
Nun löschen wir die eben erzeugten Dateien mit rm new*, weil wir nun noch ein Zertifikat erzeugen für die Funktion als Client. Das ist der Fall wenn Sendmail seine Emails über einen sog. Smarthost abliefert.
./CA.pl -newreq
cp newreq.pem /etc/mail/certs/MYClient.key.pem
./CA.pl -sign
cp newcert.pem /etc/mail/certs/MYClient.cert.pem
Abschließend wird sichergestellt das später nur root Zugriff auf die Daten hat
chmod 600 /etc/mail/certs/*
Damit hätten wir den schwierigsten Teil hinter uns. Nun noch zwei Dateien für die Sendmail-Konfiguration über SuSEConfig anpassen. Zuerst wäre da die /etc/sysconfig/mail. Der Parameter SMTPD_LISTEN_REMOTE hat mir mal eine Stunde meines Lebens gekostet, weil ich mich gewundert habe warum Sendmail nur auf localhost lauscht. Also auf no stellen, dann lauscht er wieder auf allen Interfacen.
# # From:-Line in email and News postings # (otherwise the FQDN is used) # FROM_HEADER="" # # If you don't want to let SuSEconfig generate your # configuration file, set this to no # MAIL_CREATE_CONFIG="yes" # # Set this to "yes" if mail from remote should be accepted # this is necessary for any mail server. # If set to "no" or empty then only mail from localhost # will be accepted. # SMTPD_LISTEN_REMOTE="no"
Nun noch in /etc/sysconfig/sendmail folgende Parameter anpassen.
SMTP_AUTH_MECHANISMS=”CRAM-MD5 PLAIN LOGIN”
SMTP_AUTH_SERVER=”CRAM-MD5 PLAIN LOGIN”
STARTTLS=”both”
Auf der console nochmal SuSEconfig ausführen – Fertig! Und nun sage nochmal einer SuSE wäre einfach :) Ansonsten gibt es noch anzumerken, das dies inspiriert wurde durch einen älteren Beitrag im Linuxjournal, allerdings angepasst an die Gegebenheiten einer SuSE 8.1. Für weiterführende Info ist natürlich die Sendmail-Homepage zu empfehlen, besonders die Seiten von Claus Assmann zu dem Thema.