Benutzer-Werkzeuge

Webseiten-Werkzeuge


server:exim

Dies ist eine alte Version des Dokuments!


Exim unter Debian 6.0

Exim unter Debian 6.0 als Mailserver für mehrere Domains und Smarthost mit Authentifizierung einrichten.

Quelle für virtuelle Domains, Viren- und Spam-Prüfung (Spam-Prüfung nicht verwirklicht):

Installation

  • Paket einspielen (exim4-daemon-heavy wegen Virenprüfung):
# apt-get install exim4-daemon-heavy

Konfiguration

  • Basis-Konfiguration durchführen:
# dpkg-reconfigure exim4-config
General type of mail configuration: internet site
System mail name: xxx.disorganized.de
IP-addresses to listen on for incoming SMTP connections: 127.0.0.1;85.214.235.82
Other destinations for which mail is accepted: xxx.stratoserver.net;xxx.disorganized.de
Domains to relay mail for: <leer>
Machines to relay mail for: <leer>
Keep number of DNS-queries minimal (Dial-on-Demand)? No
Delivery method for local mail: Maildir
Split configuration into small files? Yes
Root and postmaster mail recipient: ewald
  • Hostnamen festlegen, mit dem Exim nach außen auftreten soll:
# vi /etc/exim4/conf.d/main/000_localmacros
# Nach aussen als mail.disorganized.de in Erscheinung treten
MAIN_HARDCODE_PRIMARY_HOSTNAME = mail.disorganized.de
  • Ausgehende IP-Adresse setzen:
# vi /etc/exim4/conf.d/transport/30_exim4-config_remote_smtp
[...]
# ausgehende IP-Adresse setzen:
interface = 85.214.235.82
  • Konfiguration erzeugen und Exim neu starten:
# update-exim4.conf
# /etc/init.d/exim4 restart

Virtuelle Domains

Exim ist als Mailserver für mehrere (sogenannte virtuelle) Domains verantwortlich. Für jede Domain wird eine Alias-Datei mit den gültigen E-Mail-Adressen angelegt, wobei der Name der Alias-Datei dem Domain-Namen entspricht. Exim schaut für jeden Empfänger nach, ob eine Alias-Datei für die Empfänger-Domain existiert und ob der Name des Empfängers in der dazugehörigen Alias-Datei eingetragen ist. E-Mails können entweder an einen lokalen Benutzer zugestellt oder an externe Empfänger weiter geleitet werden. E-Mails ohne gültigen Empfänger werden schon beim RCPT TO abgewiesen. E-Mails mit fehlschlagender externer Weiterleitung bouncen.

  • Verzeichnis für Alias-Dateien der virtuellen Domains anlegen:
# mkdir /etc/exim4/virtual
  • Neuen Router konfigurieren:
# vi /etc/exim4/conf.d/router/250_exim4-config_vdom_aliases
# Virtuelle Domains gegen Alias-Dateien in /etc/exim4/virtual aufloesen.
# Format dieser Alias-Dateien:
# address : username@localhost
# address ist der Adressteil links vom @ der virtuellen Domain (*: Catch-All)
# username ist ein lokaler Benutzer, der die Mail erhalten soll.
vdom_aliases:
    debug_print = "R: vdom_aliases for $local_part@$domain"
    driver = redirect
    allow_defer
    allow_fail
    domains = dsearch;/etc/exim4/virtual
    data = ${expand:${lookup{$local_part}lsearch*@{/etc/exim4/virtual/$domain}}}
    retry_use_local_part
    pipe_transport = address_pipe
    file_transport = address_file
    no_more
  • Falls Suffix-Adressen gewünscht werden, no_more oben auskommentieren und folgenden Router anfügen:
vdom_aliases_suffix:
    debug_print = "R: vdom_aliases_suffix for $local_part@$domain"
    driver = redirect
    local_part_suffix = -*
    local_part_suffix_optional
    allow_defer
    allow_fail
    domains = dsearch;/etc/exim4/virtual
    data = ${expand:${lookup{$local_part}lsearch*@{/etc/exim4/virtual/$domain}}}
    retry_use_local_part
    pipe_transport = address_pipe
    file_transport = address_file
    no_more
  • Lookup für virtuelle Domains konfigurieren, dazu : dsearch;/etc/exim4/virtual hinter MAIN_LOCAL_DOMAINS anfügen:
# vi /etc/exim4/conf.d/main/01_exim4-config_listmacrosdefs
[...]
# war: domainlist local_domains = MAIN_LOCAL_DOMAINS
domainlist local_domains = MAIN_LOCAL_DOMAINS : dsearch;/etc/exim4/virtual
  • Konfiguration erzeugen und Exim neu starten:
# update-exim4.conf
# /etc/init.d/exim4 restart
  • Gültige E-Mail-Adressen einer virtuellen Domain konfigurieren:
# vi /etc/exim4/virtual/disorganized.de
hostmaster:     ewald@localhost
ewald:          ewald@localhost
weiterleitung:  ewald.dieterich@gmx.de
  • Adressauflösung testen:
# exim4 -bt hostmaster@disorganized.de
[...]
ewald@localhost
    <-- ewald@disorganized.de
    <-- hostmaster@disorganized.de
  router = local_user, transport = maildir_home

TLS

  • Verzeichnis für Zertifikat und privaten Schlüssel anlegen:
# mkdir /etc/exim4/ssl
# chmod 750 /etc/exim4/ssl
# chown root:Debian-exim /etc/exim4/ssl/
  • Zertifikat und privaten Schlüssel kopieren:
# cp mail.disorganized.de.cert mail.disorganized.de.key /etc/exim4/ssl
# chmod 444 /etc/exim4/ssl/mail.disorganized.de.cert 
# chown root:Debian-exim /etc/exim4/ssl/mail.disorganized.de.cert
# chmod 440 /etc/exim4/ssl/mail.disorganized.de.key
# chown root:Debian-exim /etc/exim4/ssl/mail.disorganized.de.key
  • TLS aktivieren:
# vi /etc/exim4/conf.d/main/000_localmacros 
# TLS
MAIN_TLS_ENABLE = true
MAIN_TLS_CERTIFICATE = /etc/exim4/ssl/mail.disorganized.de.cert
MAIN_TLS_PRIVATEKEY = /etc/exim4/ssl/mail.disorganized.de.key
MAIN_LOG_SELECTOR = +tls_cipher +tls_peerdn
  • Konfiguration erzeugen und Exim neu starten:
# update-exim4.conf
# /etc/init.d/exim4 restart
  • Überprüfen, ob STARTTLS zur Verfügung steht:
# openssl s_client -starttls smtp -connect localhost:25

SMTP AUTH

  • Benutzer sollen E-Mails erst nach Authentifizierung versenden können:
# vi /etc/exim4/conf.d/auth/31_exim-config_auth
plain_server:
  driver = plaintext
  public_name = PLAIN
  server_condition = "${if crypteq{$auth3}{${extract{1}{:}{${lookup{$auth2}lsearch{CONFDIR/passwd}{$value}{*:*}}}}}{1}{0}}"
  server_set_id = $auth2
  server_prompts = :
  .ifndef AUTH_SERVER_ALLOW_NOTLS_PASSWORDS
  server_advertise_condition = ${if eq{$tls_cipher}{}{}{*}}
  .endif

login_server:
  driver = plaintext
  public_name = LOGIN
  server_prompts = "Username:: : Password::"
  server_condition = "${if crypteq{$auth2}{${extract{1}{:}{${lookup{$auth1}lsearch{CONFDIR/passwd}{$value}{*:*}}}}}{1}{0}}"
  server_set_id = $auth1
  .ifndef AUTH_SERVER_ALLOW_NOTLS_PASSWORDS
  server_advertise_condition = ${if eq{$tls_cipher}{}{}{*}}
  .endif
  • Kennwort-Datei anlegen:
# vi /etc/exim4/passwd
# Format:
# user:exim-adduser(password)[:password]
  • Zugriff auf Kennwort-Datei einschränken:
# chmod 640 /etc/exim4/passwd
# chown root:Debian-exim /etc/exim4/passwd
  • Benutzer und Kennwort hinzufügen:
# perl /usr/share/doc/exim4-base/examples/exim-adduser
User: ewald
Password: geheim
  • Klartext-Kennwort aus /etc/exim4/passwd löschen (ich will keine Klartext-Kennwörter speichern, Challenge-Response-Verfahren funktionieren jetzt allerdings nicht mehr).
  • Konfiguration erzeugen und Exim neu starten:
# update-exim4.conf
# /etc/init.d/exim4 restart
  • Unverschlüsselt darf keine Authentifizierung angeboten werden:
$ telnet localhost 25
[...]
EHLO test
[...] hier darf keine Zeile mit "250-AUTH PLAIN LOGIN" kommen
QUIT
  • AUTH PLAIN mit verschlüsselter Verbindung testen (Benutzer: test, Kennwort: geheim):
$ perl -MMIME::Base64 -e 'print encode_base64("\000test\000geheim")'
AHRlc3QAZ2VoZWlt
$ openssl s_client -starttls smtp -connect localhost:25
[...]
EHLO test
[...]
250-AUTH PLAIN LOGIN
[...]
AUTH PLAIN AHRlc3QAZ2VoZWlt
235 Authentication succeeded
QUIT
  • AUTH LOGIN mit verschlüsselter Verbindung testen (Benutzer: test, Kennwort: geheim):
$ perl -MMIME::Base64 -e 'print encode_base64("test")'
dGVzdA==
$ perl -MMIME::Base64 -e 'print encode_base64("geheim")'
Z2VoZWlt
$ openssl s_client -starttls smtp -connect localhost:25
[...]
EHLO test
[...]
250-AUTH PLAIN LOGIN
[...]
AUTH LOGIN
334 VXNlcm5hbWU6
dGVzdA==
334 UGFzc3dvcmQ6
Z2VoZWlt
235 Authentication succeeded
QUIT
[...]

Virenprüfung

  • ClamAV installieren:
# apt-get install clamav-daemon libclamunrar6 daemon
  • ClamAV-Benutzer muss Exim-Spool-Dateien lesen können, deshalb zur Mail-Gruppe hinzufügen:
# adduser clamav Debian-exim
# /etc/init.d/clamav-daemon restart
  • Virenprüfung konfigurieren. Aufgrund schlechter Erfahrungen mit Fehlalarmen werden Viren-E-Mails mit einem X-Virus-Status-Header versehen und zugestellt, anstatt sie direkt zu verwerfen.
# vi /etc/exim4/conf.d/main/000_localmacros 
# Antivirus
av_scanner = clamd:/var/run/clamav/clamd.ctl
CHECK_DATA_LOCAL_ACL_FILE = /etc/exim4/local_acl_check_data
# vi /etc/exim4/local_acl_check_data
  # Diese Datei wird in /etc/exim4/conf.d/acl/40_exim4-config_check_data geladen

  # Aus 40_exim4-config_check_data:
  #
  # Deny if the message contains malware. Before enabling this check, you
  # must install a virus scanner and set the av_scanner option in the
  # main configuration.
  #
  # exim4-daemon-heavy must be used for this section to work.
  #

  #deny
  #  malware = *
  #  message = Message contains possible malware ($malware_name)

  warn
    malware = *
    message = X-Virus-Status: Message contains possible malware ($malware_name)

  #warn
  #  message = X-Virus-Scanned: (${readsocket{/var/run/clamav/clamd.ctl}{VERSION}{2s}{}{Virus scanner not running}})

  # Folgende zwei Regeln aus <http://www.debian-administration.org/articles/141>
  #
  # Reject messages that have serious MIME errors.
  # This calls the demime condition again, but it
  # will return cached results.
  # deny
  #   message = Serious MIME defect detected ($demime_reason)
  #   demime = *
  #   condition = ${if >{$demime_errorlevel}{2}{1}{0}}

  #
  # Reject file extensions used by worms.
  #
  #  deny
  #   message = This domain has a policy of not accepting certain types \
  #             of attachments in mail as they may contain a virus.  \
  #             \
  #             This mail has a file with a .$found_extension attachment and \
  #             is not accepted. \
  #             \
  #             If you have a legitimate need to send this attachment, send it \
  #             in a compressed archive, and it will then be forwarded to the \
  #             recipient.
  #   demime = vbs:bat:pif:scr
  • Konfiguration erzeugen und Exim neu starten:
# update-exim4.conf
# /etc/init.d/exim4 restart
$ telnet localhost 25
[...]
EHLO test
[...]
MAIL FROM:<ewald@disorganized.de>
250 OK
RCPT TO:<ewald@disorganized.de>
250 Accepted
DATA
354 Enter message, ending with "." on a line by itself
Subject: Virentest

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
.
250 OK id=1NgFK6-0006MV-AH
QUIT
221 mail.disorganized.de closing connection
  • ClamAV-Log-File überprüfen:
# less /var/log/clamav/clamav.log 
[...]
[...] /var/spool/exim4/scan/xxx.eml: Eicar-Test-Signature FOUND
  • Header in zugestellter Mail überprüfen:
# less /home/ewald/Maildir/new/xxx
[...]
X-Virus-Status: Message contains possible malware (Eicar-Test-Signature)
[...]

Sender ablehnen

  • Prüfung des Senders während des MAIL-FROM-Kommandos konfigurieren. Dazu folgende Zeilen vor dem abschließenden accept hinzufügen:
    # vi /etc/exim4/conf.d/acl/30_exim4-config_check_mail
    [...]
      deny
        senders = /etc/exim4/deny_senders
    
      accept
  • Konfiguration erzeugen und Exim neu starten:
    # update-exim4.conf
    # /etc/init.d/exim4 restart
  • Abzulehnende Sender eintragen:
    # vi /etc/exim4/deny_senders
    sender@example.net
    *@sub.example.org
    *example.com
server/exim.1446231318.txt.gz · Zuletzt geändert: 2015/10/30 19:55 von ewald