sendmail

Aus Mikiwiki
Zur Navigation springen Zur Suche springen

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.

from:aaa@xyz.com
to:bbb@xyz.com,ccc@xyz.com
cc:ddd@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
Wikipedia ger Sendmailwbm Enzyklopädischer Artikel
64-Bit ger Linux als Mailserver Howto : Mails versendenwbm