Benutzer-Werkzeuge

Webseiten-Werkzeuge


server:exim

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 -showcerts -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.txt · Zuletzt geändert: 2016/02/04 20:25 von ewald