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

Aus MattWiki
K (Matt verschob die Seite Exim als SMTP-Server (Debian) nach Exim4 als SMTP-Server (Debian), ohne dabei eine Weiterleitung anzulegen)
 
(20 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
== Allgemeine Infos ==
Exim ist der Standard Mail Transfer Agent (MTA) von Debian.
* Das Debian Paket "Standard" installiert mutt als MUA (Mail user agent) und exim als MTA (Mail transfer agent)
 
* Standardmäßig werden Mails an das lokale Postfach in <code>/var/mail/account_name</code> geschickt
Standardmäßig werden Mails an das lokale Postfach in <code>/var/mail/account_name</code> geschickt.
* Mails an root werden standardmäßig an den User weiter geleitet, der während der Systeminstallation eingerichtet wurde &rarr; Konfguration in <code>/etc/aliases</code>


== Installation ==
== Installation ==
  # apt-get install bsd-mailx
  # apt-get install exim4
 
== 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
 
 
== Zustellung per SMTP an externe Mail einrichten ==
== Zustellung per SMTP an externe Mail einrichten ==
Hierfür wird unter Debian / Exim4 ein externer Smarthost benötigt.
  # dpkg-reconfigure exim4-config
Installationsvoraussetzung:
  apt-get install exim4-daemon-light


Einrichtung:
Werte können folgendermaßen gefüllt werden:
dpkg-reconfigure exim4-config
{| class="wikitable"
!Einstellung
!Beispielwerte
|-
|Generelle E-Mail-Einstellungen
|Versand über Sendezentrale (Smarthost); Empfang über SMTP oder Fetchmail oder


Entweder '''mail sent by smarthost, receive via SMTP or fetchmail''' oder '''mail sent by smarthost, no local mail''' auswählen und folgende Einstellungen eingeben.
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:
Passwörter für SMTP-authentifizierung eingeben in:
Zeile 32: Zeile 50:
  <smarthostserver>:<username_für_anmeldung>:<passwort>
  <smarthostserver>:<username_für_anmeldung>:<passwort>


== Befehle ==
== TLS für SMTP ==
E-Mails an /var/mail/xxx senden.
 
=== 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


'''Beispiel 1'''
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>
  mail -s <subject> <recipient>


'''Beispiel 2'''
  echo This is a Text body | mail -s <subject> <recipient>
  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>
  (echo Subject: NewSubject; echo Body Line 1; echo) | /usr/sbin/sendmail -i <USERNAME>


Diverse Befehle:
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                # Messagequeue / Frozen messages anzeigen
  mailq | exiqsumm    # Übersichtstabelle über Messagequeue anzeigen
  mailq | exiqsumm    # Übersichtstabelle über Messagequeue anzeigen
Mails in Messagequee prüfen oder verarbeiten:
  exim4 -bp            # Messagequeue / Frozen messages anzeigen
  exim4 -bp            # Messagequeue / Frozen messages anzeigen
  exim4 -bpc          # Anzahl Nachrichten in Messagequeue
  exim4 -bpc          # Anzahl Nachrichten in Messagequeue
Zeile 57: Zeile 188:
  exim4 -Mrm [MsgID]  # Einzelne Mail aus Queue löschen
  exim4 -Mrm [MsgID]  # Einzelne Mail aus Queue löschen
  exim -bp | exiqgrep -i | xargs exim -Mrm    # Alle Mails aus Queue löschen
  exim -bp | exiqgrep -i | xargs exim -Mrm    # Alle Mails aus Queue löschen
  [[Category:Debian]]
Konfiguration von Exim überprüfen:
  exim4 -bP
  [[Category:Linux]]
  [[Category:Linux]]
[[Kategorie:E-Mail]]

Aktuelle Version vom 12. Januar 2020, 13: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