Exim4 als SMTP-Server (Debian): Unterschied zwischen den Versionen
Matt (Diskussion | Beiträge) (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…“) |
Matt (Diskussion | Beiträge) 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: | ||
Exim ist der Standard Mail Transfer Agent (MTA) von Debian. | |||
( | 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: | === 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 | |||
[[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