Exim4 als SMTP-Server (Debian): Unterschied zwischen den Versionen

Aus MattWiki
(Die Seite wurde neu angelegt: „E-Mails an /var/mail/xxx senden: (echo Subject: NewSubject; echo Body Line 1; echo) | /usr/sbin/sendmail -i <USERNAME> Category:Debian Category:Li…“)
 
K (Matt verschob die Seite Exim als SMTP-Server (Debian) nach Exim4 als SMTP-Server (Debian), ohne dabei eine Weiterleitung anzulegen)
 
(31 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
E-Mails an /var/mail/xxx senden:
Exim ist der Standard Mail Transfer Agent (MTA) von Debian.


  (echo Subject: NewSubject; echo Body Line 1; echo) | /usr/sbin/sendmail -i <USERNAME>
Standardmäßig werden Mails an das lokale Postfach in <code>/var/mail/account_name</code> 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:
{| class="wikitable"
!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 <code>/etc/exim4/*.conf</code> -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 ==
 
=== Einrichtung ===
Dateien anlegen:
 
Ohne Split-Konfiguration: <code>/etc/exim4/exim4.conf.localmacros</code>
 
Bei Split-Konfiguration: <code>/etc/exim4/conf.d/main/000_localmacros</code>
 
Inhalt:
MAIN_TLS_ENABLE = yes        (alternativ "= true" verwenden?)
Datei <code>/etc/default/exim4</code> bearbeiten und Zeile hinzufügen:
SMTPLISTENEROPTIONS='-oX 25:587 -oP /var/run/exim4/exim.pid'
 
=== Zertifikate ===
Man kann entweder selbst signierte Zerfitikate mit dem Skript erstellen:
/usr/share/doc/exim4-base/examples/exim-gencert
Alternativ kann man die Zertifikate von Let's encrypt nutzen. Diese müssen folgende Rechte haben:
* Dateirechte: 640
* Dateigruppen: root:Debian-exim
Von Lets' encrypt sollte man folgende Dateien verwenden:
* fullchain.pem
* privkey.pem
Es können nicht die Links auf die zwei o.g. Dateien verwendet werden, weil die übergeordneten Verzeichnisse der Dateien root-Rechte erfordern würden.
 
Daher sollte ein Copy-Job die Dateien regelmäßig aus dem Let's encrpyt-Verzeichnis in das exim-Verzeichnis kopieren.
 
Ohne Splitkonfiguration sollten die Dateien in der Konfigurationsdatei '''/etc/exim4/exim4.conf.localmacros''' hinterlegt werden:
MAIN_TLS_CERTIFICATE = /etc/exim4/fullchain.pem
MAIN_TLS_PRIVATEKEY = /etc/exim4/privkey.pem
Mit Splitkonfiguration wird die Konfigurationsdatei '''/etc/exim4/conf.d/main/03_exim4-config_tlsoptions''' erweitert:
.ifndef MAIN_TLS_CERTIFICATE
<nowiki>#</nowiki> MAIN_TLS_CERTIFICATE = CONFDIR/exim.crt
MAIN_TLS_CERTIFICATE = /etc/exim4/fullchain.pem
.endif
tls_certificate = MAIN_TLS_CERTIFICATE
.ifndef MAIN_TLS_PRIVATEKEY
<nowiki>#</nowiki> MAIN_TLS_PRIVATEKEY = CONFDIR/exim.key
MAIN_TLS_PRIVATEKEY = /etc/exim4/privkey.pem
.endif
Danach Server neu starten oder Konfiguration neu laden:
/etc/init.d/exim4 restart        # Serverneustart
/etc/init.d/exim4 reload        # Konfiguration neu lesen
 
== 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 Konfiiguration zu laden:
/etc/init.d/saslauthd restart
Anpassen der Exim4-Konfiguration:
 
Ohne Splitkonfiguration: '''/etc/exim4/exim4.conf.template''':
 
Mit Splitkonfiguration: '''/etc/exim4/conf.d/auth/30_exim4-config_examples'''
 
Folgende Zeilen aktivieren:
plain_saslauthd_server:
  driver = plaintext
  public_name = PLAIN
  server_condition = ${if saslauthd{{$auth2}{$auth3}}{1}{0}}
<nowiki> </nowiki> server_set_id = $auth2
<nowiki> </nowiki> server_prompts = : 
<nowiki> </nowiki> .ifndef AUTH_SERVER_ALLOW_NOTLS_PASSWORDS
<nowiki> </nowiki> server_advertise_condition = ${if eq{$tls_cipher}{}{}{*}}
<nowiki> </nowiki> .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}}
<nowiki> </nowiki> server_set_id = $auth1
<nowiki> </nowiki> .ifndef AUTH_SERVER_ALLOW_NOTLS_PASSWORDS
<nowiki> </nowiki> server_advertise_condition = ${if eq{$tls_in_cipher}{}{}{*}}
<nowiki> </nowiki> .endif
Exim-User Zugriffsrechte auf den SASL-Dienst einräumen:
adduser Debian-exim sasl
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 <code>/etc/init.d/exim4</code> eine Fehlermeldung erscheint, dass paniclog besteht: Paniclog einfach löschen:  <code>/var/log/exim4/paniclog</code>
 
== Mailweiterleitung (Systemintern) ==
Die systeminterne Mailweiterleitung wird in <code>/etc/aliases</code> konfiguriert.
 
Mails an root werden standardmäßig an den User weiter geleitet, der während der Systeminstallation eingerichtet wurde.
 
== Systemmailbox anlegen ==
Falls in <code>/var/mail/<USER></code> 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/username''' oder an '''~/Maildir''' zugestellt.
mail -s <subject> <recipient>


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


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


cat file-with-body-content.txt | mail -s <subject> <recipient>


swaks --to john@example.org --server localhost --data /usr/share/doc/spamassassin/examples/sample-spam.txt


[[Category:Debian]]
=== Steuerung von Exim und Message Queue ===
[[Category:Linux]]
Messagequeue überprüfen:
mailq                # Messagequeue / Frozen messages anzeigen
mailq | exiqsumm    # Übersichtstabelle über Messagequeue anzeigen
Mails in Messagequee prüfen oder verarbeiten:
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
Konfiguration von Exim überprüfen:
exim4 -bP
[[Category:Linux]]
[[Kategorie:E-Mail]]

Aktuelle Version vom 12. Januar 2020, 12:25 Uhr

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

Einrichtung

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'

Zertifikate

Man kann entweder selbst signierte Zerfitikate mit dem Skript erstellen:

/usr/share/doc/exim4-base/examples/exim-gencert

Alternativ kann man die Zertifikate von Let's encrypt nutzen. Diese müssen folgende Rechte haben:

  • Dateirechte: 640
  • Dateigruppen: root:Debian-exim

Von Lets' encrypt sollte man folgende Dateien verwenden:

  • fullchain.pem
  • privkey.pem

Es können nicht die Links auf die zwei o.g. Dateien verwendet werden, weil die übergeordneten Verzeichnisse der Dateien root-Rechte erfordern würden.

Daher sollte ein Copy-Job die Dateien regelmäßig aus dem Let's encrpyt-Verzeichnis in das exim-Verzeichnis kopieren.

Ohne Splitkonfiguration sollten die Dateien in der Konfigurationsdatei /etc/exim4/exim4.conf.localmacros hinterlegt werden:

MAIN_TLS_CERTIFICATE = /etc/exim4/fullchain.pem 
MAIN_TLS_PRIVATEKEY = /etc/exim4/privkey.pem 

Mit Splitkonfiguration wird die Konfigurationsdatei /etc/exim4/conf.d/main/03_exim4-config_tlsoptions erweitert:

.ifndef MAIN_TLS_CERTIFICATE
# MAIN_TLS_CERTIFICATE = CONFDIR/exim.crt
MAIN_TLS_CERTIFICATE = /etc/exim4/fullchain.pem
.endif

tls_certificate = MAIN_TLS_CERTIFICATE
.ifndef MAIN_TLS_PRIVATEKEY
# MAIN_TLS_PRIVATEKEY = CONFDIR/exim.key
MAIN_TLS_PRIVATEKEY = /etc/exim4/privkey.pem
.endif

Danach Server neu starten oder Konfiguration neu laden:

/etc/init.d/exim4 restart        # Serverneustart
/etc/init.d/exim4 reload         # Konfiguration neu lesen

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 Konfiiguration zu laden:

/etc/init.d/saslauthd restart

Anpassen der Exim4-Konfiguration:

Ohne Splitkonfiguration: /etc/exim4/exim4.conf.template:

Mit Splitkonfiguration: /etc/exim4/conf.d/auth/30_exim4-config_examples

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 

Exim-User Zugriffsrechte auf den SASL-Dienst einräumen:

adduser Debian-exim sasl

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/username oder an ~/Maildir zugestellt.

mail -s <subject> <recipient>
echo This is a Text body | mail -s <subject> <recipient>
(echo Subject: NewSubject; echo Body Line 1; echo) | /usr/sbin/sendmail -i <USERNAME>
cat file-with-body-content.txt | mail -s <subject> <recipient>
swaks --to john@example.org --server localhost --data /usr/share/doc/spamassassin/examples/sample-spam.txt

Steuerung von Exim und Message Queue

Messagequeue überprüfen:

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

Mails in Messagequee prüfen oder verarbeiten:

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

Konfiguration von Exim überprüfen:

exim4 -bP