Email Exim

Email Exim

Konfiguration

Überblick

Wenn ein Email ankommt, wird vor allem entschieden, ob es für eine lokale oder eine andere Adresse bestimmt ist. Je nachdem wird es an einen director oder einen router weitergereicht. Dieser entscheidet über das Zustellungsverfahren, d.h. er bestimmt den transport.

Die Konfigurationsdatei für exim4 ist /etc/exim4/exim4.conf. Der empfohlene Weg, die Konfiguration zu verwalten ist aber jetzt der über das Verzeichnis /etc/exim4/conf.d/, in welchem sich pro Konfigurationsabschnitt ein Unterverzeichnis mit Dateien für die jeweiligen Einstellungen befindet. Daraus wird automatisch eine Konfigurationsdatei erstellt, welche sich dann in /var/lib/exim4/config.autogenerated befindet.

Testen

Exim bietet mehrere Kommandozeilen-Optionen zum Testen an.

~$ /usr/sbin/sendmail -d adressat@domain.org # 2> log.datei
Subject: Test
jetzt kommt der eigentliche Text... Der alleinstehende 
Punkt auf der naechsten Zeile schließt die Nachricht ab: 
.

Eigenbau-Router für Versendung über verschiedene Server

Arbeiten auf einem System verschiedene Benutzer mit Email-Adressen bei verschiedenen Email-Providern, müssen die Emails auch den entsprechenden Servern zur Weiterleitung zugeschickt werden.

Das erreicht man mit Routern, die nach einem definierbaren Verfahren Emails weiterleiten. Dabei können sie nämlich z.B. nicht nur die Empfängeradresse auswerten, sondern auch z.B. die Absenderadresse, was in diesem Falle wichtiger ist. Solche Router können in der /etc/exim/exim.conf bspw. so aussehen (entscheidend für das Beispiel ist der Treiber „manualroute“, welcher erst ab exim4 existiert):

######################################################################
#                      ROUTERS CONFIGURATION                         #
#            Entscheidet die Behandlung nichtlokaler Adressen        #
######################################################################
#		       REIHENFOLGE IST WICHTIG                       #
#    Nicht-lokale Adressen werden weitergereicht, bis sie passen     #
######################################################################

# Remote addresses are those with a domain that does not match any
# item in the "local_domains" setting above.

# Manually defined routes:
smart_topixnet:
  driver = manualroute
  transport = remote_smtp_topixnet
  route_list = !+local_domains mail.topix.net
  senders = *@topix.net

smart_voppixde:
  driver = manualroute
  transport = remote_smtp_voppixde
  route_list = !+local_domains mail.voppix.de
  senders = robert@voppix.de

end

Ein Test für diese Konfiguration:

~# sendmail -d -C /etc/exim/exim.conf -f robert@voppix.de \
voppmann@surfeu.de 
Text:Test
.
~#

Ausführliche Ausgaben von der Verarbeitung dieses Versuchs werden wegen der Option -d direkt im Terminal ausgegeben, eine „Zusammenfassung“ enthält das Hauptprotokoll /var/log/exim4/mainlog

Das Routing schien geklappt zu haben, aber dafür erhielt ich die Nachricht "relaying denied" vom smarthost.

Probieren wir mal, ob das an der pop-vor-smtp-Regel liegt: fetchmail -c -p pop3 -u robert mail.voppix.de (-c heißt check, d.h. Emails werden nicht angefaßt, sondern nur gezählt). Das nun folgende mail wird wieder abgelehnt, also muß wohl doch eine andere Autentifikation zur Anwendung kommen.

Autentifizierung

Die vom Server unterstützten Autentifizierungsmethoden können mit telnet und dem EHLO-Kommando in Erfahrung gebracht werden:

~$ telnet mail.voppix.de 25
Trying 62.241.50.15...
Connected to mail.voppix.de.
Escape character is '^]'.
220 a15.webplus24.de ESMTP Sendmail 8.12.10/8.11.6; Tue, 21 Oct 2003 08:49:32 +0200
EHLO mail.voppix.de
250-a15.webplus24.de Hello brln-d9ba0327.pool.mediaWays.net [217.186.3.39], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE 110000000
250-DSN
250-ETRN
250-AUTH LOGIN PLAIN DIGEST-MD5
250-DELIVERBY
250 HELP

Die dritte Zeile von unten gibt die Autentifizierungsmethoden an: LOGIN, PLAIN, DIGEST-MD5.

Die Autentifizierung muß in der Konfigurationsdatei im Abschnitt AUTHENTICATION CONFIGURATION manuell aktiviert werden. (In meiner Konfigurationsdatei fehlte überdies der Eintrag begin authenticators am Beginn dieses Abschnitts).

Hier habe ich also folgenden Abschnitt eingefügt:

# robert added authentication:
login:
  driver = plaintext
  public_name = LOGIN
  client_send = ": Benutzer : passwort"
#  der Doppelpunkt bedeutet 'auf Antwort warten', d.h. gesendet wird
#  - erst das 'AUTH'-Kommando ohne Zusatzinformation,
#  - dann der Benutzername und
#  - dann das Passwort

Damit die Werte für Benutzer und Passwort in Abhängigkeit vom Mailserver nachgeschlagen werden können, wird für jeden Mailserver der Benutzername und das Passwort in der Datei passwd.client registriert.

# Datei /etc/exim/passwd.client
# Format: Mailserver:Benutzername:Passwort
mail.voppix.de:Benutzer:Passwort

Die entsprechende Benutzer:Passwort-Kombination wird mittels string-expansion herausgefunden. Das expansion item heißt lookup, der Suchmethode (search type) heißt lsearch und so sieht nun der Autentifikationsabschnitt aus:

# robert added authentication:
login:
  driver = plaintext
  public_name = LOGIN
  client_send = ${lookup {$host} lsearch {/etc/exim/passwd.client} {$value}}
#     $host ist das Suchkriterium (der aktuelle Partner),
#     lsearch - die Suchmethode,
#     {/etc/exim/mailservers} - die Datei
#     {$value} - das Ergebnis der Suche

Ob ein Expansions-Mechanismus funktioniert, kann man mit der Kommandozeilenoption -be testen, z.B. mit

~$ exim4 -be  '${lookup {mail.voppix.de} lsearch {/etc/exim/passwd.client}{$value}}'

Wenn alles klappt, sollte exim hier mit der Ausgabe „Benutzername:Passwort“ antworten (oder was auch immer in der angegeben Datei hinter „mail.voppix.de:“ steht).

Die Standard Config-Datei schlägt allerdings folgendes vor:

  client_send=${if !eq{$tls_cipher}{}{}fail}\
    : ${extract{1}{::}{${lookup{$host}lsearch*{\
        /etc/exim4/passwd.client}{$value}fail}}}\
    : ${extract{2}{::}{${lookup{$host}lsearch*{\
        /etc/exim4/passwd.client}{$value}fail}}}

was zwar bei mir schon beim ersten if scheitert, aber sinnvoll ist. Denn hiermit wird das Vorliegen einer sicheren Verbindung geprüft, als Voraussetzung dafür, daß Benutzername und Passwort im Klartext über das Netz geschickt werden können.

Sichere Verbindung

Der verschlüsselte Übertragungsmodus wird von exim automatisch versucht (sofern exim dies beim Kompilieren nicht abgewählt wurde). Exim besteht aber nicht auf TLS, wenn der entsprechende Mailserver nicht in der Konfigurations dafür gekennzeichnet wurde. Wenn darauf beharrt werden soll, dann muß dies in der Konfiguration angegeben werden (Optionen in den entsprechenden Transport-Abschnitten):

hosts_require_tls = mailstore.fernuni-hagen.de

Ebenso könnte der Versuch einer verschlüsselten Verbindung auch vermieden werden mit:

hosts_avoid_tls = mail.ohneverschl.de

Spezifikation-36; TLS heißt Transport Layer Security und ist ein Synonym für SSL – Secure Sockets Layer. Wenn eine SMTP-Verbindung hergestellt ist, dann wird mittels des Kommandos STARTTLS auf verschlüsselte Kommunikation umgestellt.

hilfreiche Seiten zum Nachschlagen