Exim4 als SMTP-Server (Debian)
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
Basiert auf der Anleitung in https://wiki.debian.org/Exim#User_authentication
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