Exim4 als SMTP-Server (Debian)

Aus MattWiki

Exim ist der Standard Mail Transfer Agent (MTA) von Debian.

Standardmäßig werden Mails an das lokale Postfach in /var/mail/account_name geschickt.

Installation

# apt-get install exim4

Zustellung per SMTP an externe Mail einrichten

# dpkg-reconfigure exim4-config

Werte können folgendermaßen gefüllt werden:

Einstellung Beispielwerte
Generelle E-Mail-Einstellungen Versand über Sendezentrale (Smarthost); Empfang über SMTP oder Fetchmail oder

Versand über Sendezentrale (Smarthost); Keine lokale E-Mail-Zustellung

E-Mail-Name des Systems mail.domain.tld
IP-Adressen, an denen eingehende SMTP-Verbindungen erwartet werden 127.0.0.1;::1;192.168.178.39
Weitere Ziele, für die die E-Mails angenommen werden sollen Feld leer lassen. -> Optional hier die Maildomäne eingeben?
Rechner, für die E-Mails weitergeleitet werden (Relay) 192.168.178.0/24
IP-Adresse oder Rechnername der Sendezentrale für ausgehende E-Mails smtp.gmail.com
Lokalen E-Mail-Namen in ausgehenden E-Mails verbergen Nein
Versandart bei lokaler E-Mail-Zustellung Maildir-Format im Home-Verzeichnis
Einstellungen auf kleine Dateien aufteilen (Splitkonfiguration) Nein

Wenn Einstellungen nicht auf kleine Dateien aufgeteilt werden, werden die Einstellungen aus /etc/exim4/*.conf -Dateien verwendet.

Passwörter für SMTP-authentifizierung eingeben in:

nano /etc/exim4/passwd.client

Format für Passwörter

<smarthostserver>:<username_für_anmeldung>:<passwort>

TLS für SMTP aktivieren

Dateien anlegen:

Ohne Split-Konfiguration: /etc/exim4/exim4.conf.localmacros

Bei Split-Konfiguration: /etc/exim4/conf.d/main/000_localmacros

Inhalt:

MAIN_TLS_ENABLE = yes        (alternativ "= true" verwenden?)

Datei /etc/default/exim4 bearbeiten und Zeile hinzufügen:

SMTPLISTENEROPTIONS='-oX 25:587 -oP /var/run/exim4/exim.pid'

Danach Server neu starten:

/etc/init.d/exim4 restart

Authentifizierung für SMTP einrichten

Am einfachsten, wenn auch nicht am sichersten, ist es, die Passwörter des Systems zu nutzen. Dies nennt sich "Shadow Authentifizierung". Diese kann am einfachsten mit dem SASL-Dienst genutzt werden.

Installation:

apt-get install sasl2-bin

Konfiguration von SASL in der Datei /etc/default/saslauthd anpassen:

START=yes
MECHANISMS="shadow"

SASL-Daemon neu starten, um neue Konfiguration zu laden:

/etc/init.d/saslauthd restart

Anpassen der Exim4-Konfiguration /etc/exim4/exim4.conf.template:

Folgende Zeilen aktivieren:

plain_saslauthd_server: 
  driver = plaintext 
  public_name = PLAIN 
  server_condition = ${if saslauthd{{$auth2}{$auth3}}{1}{0}} 
  server_set_id = $auth2 
  server_prompts = :  
  .ifndef AUTH_SERVER_ALLOW_NOTLS_PASSWORDS 
  server_advertise_condition = ${if eq{$tls_cipher}{}{}{*}} 
  .endif
login_saslauthd_server: 
  driver = plaintext 
  public_name = LOGIN 
  server_prompts = "Username:: : Password::" 
  # don't send system passwords over unencrypted connections 
  server_condition = ${if saslauthd{{$auth1}{$auth2}}{1}{0}} 
  server_set_id = $auth1 
  .ifndef AUTH_SERVER_ALLOW_NOTLS_PASSWORDS 
  server_advertise_condition = ${if eq{$tls_in_cipher}{}{}{*}} 
  .endif 

Exim4-Daemon neu starten, um neue Konfiguration zu laden:

/etc/init.d/exim4 restart

Testen der Authentifizierung:

apt-get install swaks
 
swaks -a -tls -q AUTH -s localhost -au user-to-test

Fehlerbehandlung

Wenn beim Status von /etc/init.d/exim4 eine Fehlermeldung erscheint, dass paniclog besteht: Paniclog einfach löschen: /var/log/exim4/paniclog

Mailweiterleitung (Systemintern)

Die systeminterne Mailweiterleitung wird in /etc/aliases konfiguriert.

Mails an root werden standardmäßig an den User weiter geleitet, der während der Systeminstallation eingerichtet wurde.

Systemmailbox anlegen

Falls in /var/mail/<USER> keine Mailbox für den gewünschten User besteht, kann diese folgendermaßen angelegt werden:

# cd /var/mail
# touch user
# chown user:mail user
# chmod 660 user

Befehle für Test- und Diagnosezwecke

Versenden von Testmails

E-Mails werden an den MTA gesendet. Abhängig von der Einrichtung werden diese entweder an /var/mail/xxx oder an ~/Maildir zugestellt.

Beispiel 1

mail -s <subject> <recipient>

Beispiel 2

echo This is a Text body | mail -s <subject> <recipient>

Beispiel 3

(echo Subject: NewSubject; echo Body Line 1; echo) | /usr/sbin/sendmail -i <USERNAME>

Steuerung von Exim und Message Queue

mailq                # Messagequeue / Frozen messages anzeigen
mailq | exiqsumm     # Übersichtstabelle über Messagequeue anzeigen

exim4 -bp            # Messagequeue / Frozen messages anzeigen
exim4 -bpc           # Anzahl Nachrichten in Messagequeue
exim4 -ql            # Nachrichten, die Serverintern ausgeliefert werden sollen
exim4 -v -M [MsgID]  # Anzeige, warum Nachricht MsgID nicht verschickt wurde
exim4 -q             # Messagequeue abarbeiten und Mails verwenden
exim4 -qff -v        # Messagequeue inkl Frozen Mails abarbeiten und Mails verwenden (verbose mode)
exim4 -Mt [MsgID]    # Frozen Mails aus Queue verschicken
exim4 -Mrm [MsgID]   # Einzelne Mail aus Queue löschen
exim -bp | exiqgrep -i | xargs exim -Mrm     # Alle Mails aus Queue löschen