sendmail
Der Shell-Befehl sendmail ist ein 1981 entstandener Mail Transport Agent / MTA, hervorgegangen aus der Arpanet-Software Delivermail. Das 1992 erschienene Sendmail 8.0 vereint die besten sendmail-Versionen von IDA, KJS, Sun und HP und orientiert sich an den Standards der Internet Engineering Task Force / IETF. Trotz der komplizierten Konfiguration hält sendmail seine Position als meistverbreiteter MTA im Internet, allerdings zunehmend bedrängt von Postfix, Qmail und Exim.
Zu negativer Berühmtheit kam sendmail 1996 und 2003 durch kritische Sicherheitslücken. Das als sehr sicher geltende Betriebssystem Openbsd setzt Sendmail dennoch als Standard ein.
Der Dämon sendmail realisiert die Transportschicht beim netzwerkweiten Versenden von E-Mail.
Installation
Vor Installationsbeginn sollte sichergestellt werden, dass in der Datei "/etc/hosts" der Hostname nicht in einer Zeile mit "127.0.0.1" steht - hier gehört ausschliesslich "localhost" hin.
Debian 3.1 Sarge
# apt-get install sendmail sasl2-bin lib-sasl2-dev
Konfiguration
Alle Konfigurationsdateien befinden sich in "/etc/mail". Geändert werden immer die "*.mc"-Dateien, die danach in "*.cf"-Dateien übersetzt werden. Das geschieht im einfachsten Fall mit "sendmailconfig". Die Haupt-Konfigurationsdatei heisst "/etc/mail/sendmail.cf".
Die "*.cf"-Dateien werden nicht editiert, da sie durch jede Neuerzeugung überschrieben werden. Optionen in den "*.mc"-Dateien werden durch den Backtick ( ` ) eingeleitet und mit einem einfachen Anführungszeichen ( ' ) beendet. Was hinter "dnl" (do new line) steht, wird von Sendmail ignoriert.
Um kein Open Relay für Spam-Versender zu schaffen, sollte sendmail so eingestellt werden, dass nur Mails von authentisierten Benutzern versandt wird. Zuständig für die Authentisierung ist der Dämon saslauthd. Um ihn dauerhaft zu aktivieren, muss in der Datei "/etc/default/saslauthd" der Parameter "START=yes" gesetzt werden. Danach lässt er sich mit "/etc/init.d/saslauthd start | stop | restart" steuern.
Zum schnellen Erkennen einer Fehlkonfiguration kann der Loglevel in der Datei "sendmail.mc" erhöht werden:
define(`confLOG_LEVEL',`15')dnl
Fehlermeldungen werden normalerweise in die Datei "/var/log/syslog" bzw. "/var/log/mail.info" geschrieben.
Zur Aktivierung der SMTP-Authentisierung muss "/usr/share/sendmail/update_auth" ausgeführt sowie folgende Zeile in die Datei "sendmail.mc" eingetragen werden:
include(`/etc/mail/sasl/sasl.m4')dnl
Um E-Mails auch von anderen Clients aus verwenden zu können, muss sendmail an eine externe IP-Adresse gebunden werden. Dazu wird "127.0.0.1" durch die echte IP-Adresse des Mailservers ersetzt:
'DAEMON_OPTIONS(`Family=inet,Name=MSP-v4,Port=submission,Addr=<IP-Adresse>')dnl'
Danach müssen die Konfigurationsdateien durch den Aufruf "sendmailconfig" neu erzeugt werden. Beim ersten Start gibt es einige Start-TLS-Fehlermeldungen, die später beseitigt werden. Ob bis zu diesem Punkt alles funktionsfähig ist kann wie folgt getestet werden:
telnet <mailserver> 25 Mail FROM: kuki@test.org RCPT To: pipo@kernel.org
Wenn alle Einstellungen korrekt sind und sendmail neu gestartet wurde, so antwortet der Mailserver mit: "Relaying denied. Proper authentication required."
Bevor der Benutzer E-Mails versendet, muss er sich mit Benutzernamen und Passwort authentifizieren. Der Prozess sollte unbedingt verschlüsselt ablaufen, um Passwortmissbrauch zu verhindern. Der Start-TLS-Mechanismus wird wie folgt aktiviert:
include(`/etc/mail/tls/starttls.m4')dnl
Definition einer Winderrufsliste für Zertifikate:
define(`confCRL', `/etc/mail/tls/revocation.list')dnl
Die Widerrufsliste wird wie folgt angelegt und gegen unbefugte Zugriffe geschützt:
touch /etc/mail/tls/revocation.list && chmod 600 /etc/mail/tls/revocation.list
Die SSL-Zertifikate sollten von einer vertrauenswürdigen Certificate Authority unterschrieben sein, um Fehlermeldungen im E-Mail-Client zu verhindern. Die vertrauenswürdige Certificate Authority kann auch organisationsweit sein, dann muss allerdings das Root-Zertifikat auf jedem Client installiert sein. Zur Überprüfung der Verschlüsselung eignet sich ein Sniffer. Normalerweise darf aber dem Verschlüsselungssysmbol des E-Mail-Clinets (z. B. ein Schloss) vertraut werden.
Verwendung
Eine Datei "/tmp/testmail" erstellen. Zwischen der Betreffzeile ("subject:") und dem Text der E-Mail muss unbedingt eine Leerzeile eingefügt werden.
to:aaa@xyz.com cc:bbb@xyz.com subject:Testmail Text der E-Mail
Versenden der Testdatei.
$ /usr/sbin/sendmail -t < /tmp/testmail
Versenden einer E-Mail mit angehängter Datei mit Hilfe von mutt.
$ mutt -s "E-Mail mit Anhang" xxx@xyz.org -a file.txt <.
Versenden einer Testmail an mehrere Adressen.
for i in abc@xyz.xx def@xyz.cc do printf "to:$i\ncontent-type: text/plain; \ charset=iso-8859-1\nsubject:$BETREFF\n\nText" \ > /tmp/testmail.${i} /usr/sbin/sendmail -f absendeadresse@domain -t < /tmp/testmail.${i} done
Weblinks
Herausgeber | Sprache | Webseitentitel | Anmerkungen |
---|---|---|---|