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

top

 

Konfiguration/Installation

Zur Installation des Basissystems bitte hier nachsehen.

top

 

Fetchmail

Fetchmail installieren apt-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

top

 

Exim4

Exim installieren apt-get install exim4-daemon-heavy exim4

Konfigurationsdateien

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'
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'
Ansonsten wie immer (siehe Basisinstallation)

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:
    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
sowie in der Datei /etc/exim4/conf.d/router/900_exim4-config_local_user aktiviert. Indem folgende Zeile eingefügt wird: 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

vi /etc/dovecot/conf.d/15-lda.conf
Abschließend dovecot neu starten /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 Pakete apt-get install clamav-daemon clamav-freshclam spamassassin spamc sa-exim

Konfiguration 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
top

 

Einrichtung Mailclient

Ein Anleitung für die Einrichtung von Mails gibt es hier (Thunderbird), hier (K9-Mail) und hier (ganz allgemein)

top

 

ToDo

top