Mailserver
Dieses Dokument gibt einen Überblick über Einstellungen für den Mailverkehr der Firma.
Allgemein
Folgende Konfiguration soll zum Einsatz kommen:
-
fetchmail
Abholen der Mails vom Telekom Server -
exim4
verarbeitet Mails die per fetchmail oder anderen Mailservern hier landen. (Adress-Rewriting, Weiterleitung an andere Server, Weiterleitung an Dovecot).Exim ist so eingestellt, dass im lokalen Netzwerk jeder Mails versenden kann, unabhängig davon, ob er sich am Mailserver anmeldet oder nicht. Für die externe Nutzung des Mailservers ist eine Anmeldung über TLS erforderlich (Port 1837 im lancom leitet zu diesem Zweck auf Port 465 weiter)
-
dovecot
empfängt Mails von Exim und sortiert diese in die Postfächer der User und stellt diese per IMAP zur Verfügung
Außerdem ist hier der Sieve-Filter eingebunden.Die externe Nutzung von Dovecot erfolgt über Port 1825 (wird vom lancom an Port 143 weitergeleitet)
-
clamav/spamassassin
Antiviren- bzw. Spamfilter
Konfiguration/Installation
Zur Installation des Basissystems bitte hier nachsehen.
top
Fetchmail
Fetchmail installierenapt-get install fetchmail
den Dienst als Daemon starten
vi /etc/default/fetchmail
Mails vom Konto bei der Telekom abholen
vi /etc/fetchmailrc
Logverzeichnis erstellen
mkdir /var/log/fetchmail
die Logdateien müssen noch korrekte Rechte bekommen:
chown fetchmail /var/log/fetchmail
Logrotate aktivieren - hier eine neue Datei
/etc/logrotate.d/fetchmail
mit dem folgenden Code anlegen
/var/log/fetchmail/fetchmail.log {
weekly
missingok
rotate 52
compress
delaycompress
notifempty
create 644 fetchmail nogroup
sharedscripts
prerotate
/etc/init.d/fetchmail stop
endscript
postrotate
/etc/init.d/fetchmail start > /dev/null
endscript
}
Dienst neu starten (erst wenn exim4 und Dovecot laufen)
/etc/init.d/fetchmail restart
Logfile
/var/log/fetchmail/fetchmail.log
Exim4
Exim installierenapt-get install exim4-daemon-heavy exim4Konfigurationsdateien
Es gibt zwei Modi der Konfigurationen. Entweder eine monolithische große Datei oder ein Verzeichnis mit aufgesplitteten speziellen Konfigurationsansweisungen. Wir nutzen Letzteres, was man dadurch erzwingt, dass man in der Datei /etc/exim4/update-exim4.conf.conf den Eintrag dc_split_config on setzt. Das tun wir später im Abschnitt globale Einstellungen.
Die Inhalte der Datei /etc/exim4/update-exim4.conf.conf werden durch
den Befehl update-exim4.conf
nach /var/lib/exim4/config.autogenerated deployed
und dann auch von Exim dort ausgelesen (nach einem Reload)
/etc/init.d/exim4 reload
Globale Einstellungen
folgendes wird in /etc/exim4/update-exim4.conf.conf von uns geändert:
dc_eximconfig_configtype='smarthost'
Ansonsten wie immer (siehe
Basisinstallation)
dc_other_hostnames='pasemann-knesebeck.de;pasemann-bau.de;linux03.pasemann'
dc_local_interfaces='127.0.0.1 ; ::1 ; 192.168.0.10' # letzteres ist die eigene jeweilige IP
dc_readhost='pasemann-knesebeck.de'
dc_relay_nets='192.168.0.0/24'
...
dc_minimaldns='true'
...
dc_smarthost='securesmtp.t-online.de'
...
dc_use_split_config='true'
dc_hide_mailname='false'
dc_mailname_in_oh='true'
dc_localdelivery='maildir_home'
SSL aktivieren
Alle Benutzer die sich mit dem Mailserver (außer die vom localhost) verbinden müssen sich über eine verschlüsselte Verbindung beim Exim zum Mailversand authentifizieren.
Das Zertifikat wurde mit Let's Encrypt erstellt. Der Vorgang ist '>hier beschrieben.
verschlüsselte Verbindungen laufen über den Port 465, dieser muss
für den Exim-Daemon aktiviert werden. Dazu in der Datei
/etc/default/exim4 folgende Zeile einfügen bzw.
anpassen
SMTPLISTENEROPTIONS='-oX 465:25 -oP /var/run/exim4/exim.pid'
Exim selber muss nun noch wissen, dass Port 465 die TLS verschlüsselten
Verbindungen übernimmt (Port 25 lauscht weiterhin ohne Verschlüsselung).
Diese Zuweiung erfolgt in der Datei
/etc/exim4/conf.d/main/03_exim4-config_tlsoptions
MAIN_TLS_ENABLE = yes
tls_on_connect_ports = 465
Benutzer sollen sich zum Versand von Mails authentifizieren. Dazu benötigen wir den SASL-Daemon, der eine Verbindung zwischen dem Mailserver und dem Linux-System herstellt, sodass nur dort eingetragene Benutzer sich anmelden dürfen.
Installation sasl
apt-get install sasl2-bin
der SASL-Daemon muss in der Datei
/etc/default/saslauthd aktiviert werden
START = yes
und er wird abschließend natürlich noch gestartet
/etc/init.d/saslauthd restart
Nun muss Exim noch wissen, dass er SASL nutzen soll. Die Aktivierung erfolgt wieder in der Datei /etc/exim4/conf.d/auth/30_exim4-config_examples. Hier muss der folgende Block aktiviert werden
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
Abschließend wie gewohnt die Exim-Konfiguration neu laden und
Exim neu starten
update-exim4.conf && /etc/init.d/exim4 restart
Adress-Rewriting
Alle Mails sollen nun von der Domäne pasemann-knesebeck.de versendet und die Absenderadresse spezieller User (www-data, admin@linux03.pasemann, ...) sollen umgeschrieben werden. Dazu existieren bereits Regeln in der Datei /etc/exim4/conf.d/rewrite/31_exim4-config_rewriting
Damit diese funktionieren, müssen alle Absender in der Datei
/etc/email-addresses notiert werden. Dies sieht dann ungefähr
so aus:
root: admin@pasemann-knesebeck.de
admin: admin@pasemann-knesebeck.de
www-data: admin@pasemann-knesebeck.de
# Test ist möglich mit z.B.:
exim -brw shits@linux04.pasemann
Weiterleitung externer Empfänger-Adressen
Alle Mails, die an externe Adressaten gehen, sollen über den Telekom-Server versendet werden.
Dafür müssen wir die
Authentifizierungsdaten (eines Users bei der Telekom)
in die Datei /etc/exim4/passwd.client anfügen:
sfwdallmx.t-online.de:admin@pasemann-knesebeck.de:dasPasswort
Auch der Smarhost muss gesetzt sein
dc_smarthost='securesmtp.t-online.de'
in der /etc/exim4/update-exim4.conf.conf, aber das haben wir ja
bei der globalen Konfiguration schon eingetragen.
Der dc_smarthost ist der Default Smarthost, der genutzt wird, wenn keine andere Router-Regel greift.
lokale Auslieferung
Letztendlich werden Mails für lokale User durch dovecot's delvier
in die entsprechenden Maildirs einsortiert. Dieser wird in der
Datei
vi /etc/exim4/conf.d/transport/20_dovecot definiert,
die folgenden Inhalt haben sollte:
dovecot:
sowie in der Datei
/etc/exim4/conf.d/router/900_exim4-config_local_user
aktiviert. Indem folgende Zeile eingefügt wird:
driver = pipe
command = /usr/lib/dovecot/deliver -d $local_part
message_prefix =
message_suffix =
log_output
delivery_date_add
envelope_to_add
return_path_add
temp_errors = 64 : 69 : 70: 71 : 72 : 73 : 74 : 75 : 78
transport = dovecot
Die alte Zeile
# transport = LOCAL_DELIVERY
kommentieren wir aus.
Außerdem muss natürlich auch die Nutzung in Dovecot's Konfiguration freigegeben sein.
Wir benutzen Dovecot's deliver (und nicht etwa das Exim4 interne), weil sich dieses angeblich besser konfigurieren lässt und wir insbesondere auch Dovecot's-Quota-Plugin benötigen (geht nur hiermit).
Damit Exim die E-Mail-Adresse einem lokalen Benutzer zuordnen
kann, muss dieser noch in der Datei /etc/alias
notiert werden:
# lokaler Teil der E-Mail-Adresse: lokaler User@pasemann-knesebeck.de
# Beispiel:
s.bensch: shits@pasemann-knesebeck.de
Mailbackup
Exim wird so eingestellt, dass er einfach von jeder Mail eine Kopie an
den User mailbackup@pasemann-knesebeck.de schickt.
Dies geschieht
durch das Erstellen der Datei
vi /etc/exim4/conf.d/router/180_exim4_config_backup
mit dem folgendem Inhalt:
### router/180_exim4-config_backup
##################################
#
# erstellt von Thomas Bayen
# - Backup aller Mails an den Backup-User
#
backup_outgoing:
debug_print = "R: backup_outgoing of mail for $local_part@$domain"
driver = redirect
condition = ${if match_ip{$sender_host_address}{192.168.0.0/24} {yes}{no}}
# Diesen Router immer nur einmal ausfuehren:
repeat_use = false
# Markierung, damit z.B. procmail besser sortieren kann:
headers_add = X-Pasemann-backup-outgoing: true
# Hier wird ausser dem Backup ein bcc an den Absender produziert:
data = mailbackup@pasemann-knesebeck.de
unseen
backup_incoming:
debug_print = "R: backup_incoming of mail for $local_part@$domain"
driver = redirect
condition = ${if !match_ip{$sender_host_address}{192.168.0.0/24} {yes}{no}}
# Diesen Router immer nur einmal ausfuehren:
repeat_use = false
# Markierung, damit z.B. procmail besser sortieren kann:
headers_add = X-Pasemann-backup-incoming: true
data = mailbackup@pasemann-knesebeck.de
unseen
Zu beachten ist hier, dass ein zusätzlicher Mailheader eingefügt wird, um später zu unterscheiden ob es sich um eine ausgehende oder eingehende Mail handelt.
nützliche Kommandos
# Runtime-Konfiguration aktualisieren
update-exim4.conf
# nachricht aus Queue löschen
exim4 -Mrm Message-ID
# frozen nachricht auftauen
exim4 -Mt Message-ID
# Message losschicken, falls sie noch in der Queue liegt
exim4 -M Message-ID
# Rewriting auslesen
exim -brw shits@admin06.jv-online.de
Logfiles
/var/log/exim4/*
top
Dovecot
Dovecot installieren
apt-get install dovecot-imapd
Dovecot konfigurieren (insbesondere Port und Mailverzeichnis
aktivieren) - siehe subversion
auf allen Interfaces lauschen
vi /etc/dovecot/dovecot.conf
listen = *, ::
alle Mails im Maildir speichern
vi /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:~/Maildir
Logverzeichnis anpasen
vi /etc/dovecot/conf.d/10-logging.conf
log_path = /var/log/dovecot/main
info_log_path = /var/log/dovecot/debug
log_timestamp = "%Y-%m-%d %H:%M:%S "
und einen Postmaster festlegen
vi /etc/dovecot/conf.d/15-lda.conf
postmaster_address = postmaster
Logverzeichnis erstellen
mkdir /var/log/dovecot
Dienst neu starten
/etc/init.d/dovecot restart
die Logdateien müssen noch korrekte Rechte bekommen:
chmod 666 /var/log/dovecot/*
Testen mutt -f imap://shits@localhost
Logrotate aktivieren - hier eine neue Datei
/etc/logrotate.d/dovecot
mit dem folgenden Code anlegen
/var/log/dovecot/main /var/log/dovecot/debug {
weekly
missingok
rotate 52
compress
delaycompress
notifempty
create 666 root adm
sharedscripts
postrotate
/etc/init.d/dovecot reload > /dev/null
endscript
}
Dovecot als LDA aktivieren
diese Konfiguration muss nur noch in der Exim-Konfiguration aktiviert werden.
Maildir-Unterordner automatisch erzeugen
Dovecot kann Unterordner im Maildir automatisch erzeugen. Dies ist bspw. hilfreich bei den Sieve-Filtern, die evtl. einen Spam-Ordner benötigen o.ä.
Die Ordner werden durch folgende Konfigurationseinstellung
automatisch erzeugt:
# lda_mailbox_autocreate
# lda_mailbox_autosubscribe
vi /etc/dovecot/conf.d/15-lda.conf
Sieve aktivieren
Mit Sieve können Filterregeln, z.B. automatische Verschieben von Nachrichten oder Autoresponder erstellt werden.
Der Sieve-Filter muss zunächst installiert werden:
apt-get install dovecot-sieve dovecot-managedsieved
Sieve aktivieren:
# mail_plugins = $mail_plugins sieve
Abschließend dovecot neu starten
vi /etc/dovecot/conf.d/15-lda.conf
/etc/init.d/dovecot restart
globalen Sieve-Filter einstellen
der globale Filter soll vor der Ausführung der
benutzerdefinierten Filter ausgeführt werden:
# sieve_before = /etc/dovecot/sieve.global.conf
vi /etc/dovecot/conf.d/dovecot.conf
Damit die Regeln erkannt werden, müssen sie vorkompiliert
und allen Benutzerkonten zum Lesen zur Verfügung
gestellt werden:
cd /etc/dovecot
# sievec erzeugt die Datei sieve.global.conf.svbin
sievec sieve.global.conf
chmod 644 sieve.global.conf*
Achtung: Bei Änderungen der globalen Filterregeln muss immer sievec ausgeführt werden!
Abschließend dovecot neu starten
/etc/init.d/dovecot restart
Logfile
/var/log/dovecot/*
top
Clamav/Spamassassin
Installation der benötigten Paketeapt-get install clamav-daemon clamav-freshclam
spamassassin spamc sa-eximKonfiguration Spamassassin
Spamassassin-Daemon aktivieren
# enable spamassassin
vi /etc/default/spamassassin
und Exim Bescheid geben, dass er Mails scannen soll (an
Spammassassin gibt zum scannen)
# auf 1 setzen, sodass alls Mails gescannt werden
SAEximRunCond: 1
vi /etc/exim4/sa-exim.conf
Anschließend Spamassassin und Exim noch neu starten
/etc/init.d/spamassassin start
/etc/init.d/exim4 restart
Das war es eigentlich schon, Nachrichten werden
so mit verschiedenen X-SPAM-*-, die letzendlich
Auskunft darüber geben, ob Mail Spam ist oder nicht, sowie
X-SA-EXIM-Header versehen, die anzeigen,
ob eine Nachricht gescannt wurde oder nicht.Konfiguration Clamav
Exim mitteilen, welcher Virenscanner benutzt werden soll:
# die folgende Zeile hinzufügen
# av_scanner = clamd:/var/run/clamav/clamd.ctl
vi /etc/exim4/conf.d/main/01_exim4-config_listmacrosdefs
in der Datei
/etc/exim4/conf.d/acl/40_exim4-config_check_data
den folgenden Codeblock eintragen (VOR der letzten Zeile:
accept!)
# Reject messages that have serious MIME errors.
# This calls the demime condition again, but it
# will return cached results.
deny message = Diese MIME-Mail ist defekt: ($demime_reason)
demime = *
condition = ${if >{$demime_errorlevel}{2}{1}{0}}
# Reject file extensions used by worms.
# Note that the extension list may be incomplete.
deny message = Die JV Domain hat eine Regel die bestimmte Mailanhaenge \
verbietet, weil sie Viren enthalten koennen. \
Diese Mail hat einen Anhang mit einem .$found_extension \
Anhang und wird nicht akzeptiert. Wenn es einen guten Grund gibt \
genau diesen Anhang doch zu senden, verpacken Sie ihn bitte in ein \
komprimiertes Archiv und es wird gesendet.
demime = exe:com:vbs:bat:pif:scr
# Reject messages containing malware.
deny message = In dieser Mail wurde ein Virus gefunden: ($malware_name) und die Mail abgelehnt.
malware = *
Dadurch werden Mails in denen Viren erkannt werden, einfach nicht zugestellt.Außerdem werden Dateianhänge mit den Endungen .exe, .com, .vbs, .bat, .pif, .scr abgelehnt.
Der clamav-User muss zur Gruppe Debian-exim gehören und dieser muss Zugriff auf das Lock-Verzeichnis gegeben werden:
gpasswd -a clamav Debian-exim
chown Debian-exim.Debian-exim /var/run/clamav
chmod g+w /var/run/clamav
und Dienste neu starten
/etc/init.d/clamav-daemon restart
/etc/init.d/exim4 restart
Update ClamAV
Clamav führt regelmäßig Updates der Virensignaturen durch. Dabei checkt es, ob für das eigentlich ClamAV-Paket auch eine Aktualisierung bereit steht. Wenn dies so ist, steht am am folgenden Morgen im Logwatch eine Warnung der Art:WARNING: Your ClamAV installation is OUTDATED!
WARNING: Local version: 0.97.5 Recommended version: 0.97.6
Das ist nicht weiter schlimm, die ClamAV-Pakete müssen einfach
aktualisiert werden:
apt-get update && apt-get install clamav clamav-base clamav-daemon clamav-freshclam
Allerdings kann es ein paar Tage dauern, bis die Debian-Pakete
aktualisiert wurden!Logfile
/var/log/clamav/*
top
Backup
Backup/Synchronisierung
- wie im Exim-Kapitel beschrieben wird von jeder ein und ausgehenden E-Mail eine Kopie an den Account mailbackup@linux03 zur Archivierung gesendet.
- einmal pro Tag werden alle Mails mit der NAS synchronisiert.
- einmal im Monat wird vom User mailbackup@linux03 ein Archiv erstellt und gesichert.
Verzeichnisse
- Mails der User:
/home/user/Maildir - Mails des Mailbackup-Accounts:
/data/save/mailbackup - Daily Sync aller User-Mails:
/data/save/mailsync
Einrichtung Mailclient
Ein Anleitung für die Einrichtung von Mails gibt es hier (Thunderbird), hier (K9-Mail) und hier (ganz allgemein)
top
ToDo

Home
Linux-Server