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):
exim4-daemon-heavy wegen Virenprüfung):# apt-get install exim4-daemon-heavy
# 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
# vi /etc/exim4/conf.d/main/000_localmacros # Nach aussen als mail.disorganized.de in Erscheinung treten MAIN_HARDCODE_PRIMARY_HOSTNAME = mail.disorganized.de
# vi /etc/exim4/conf.d/transport/30_exim4-config_remote_smtp [...] # ausgehende IP-Adresse setzen: interface = 85.214.235.82
# update-exim4.conf # /etc/init.d/exim4 restart
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.
# mkdir /etc/exim4/virtual
# 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
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
: 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
# update-exim4.conf # /etc/init.d/exim4 restart
# vi /etc/exim4/virtual/disorganized.de hostmaster: ewald@localhost ewald: ewald@localhost weiterleitung: ewald.dieterich@gmx.de
# exim4 -bt hostmaster@disorganized.de
[...]
ewald@localhost
<-- ewald@disorganized.de
<-- hostmaster@disorganized.de
router = local_user, transport = maildir_home
# mkdir /etc/exim4/ssl # chmod 750 /etc/exim4/ssl # chown root:Debian-exim /etc/exim4/ssl/
# 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
# 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
# update-exim4.conf # /etc/init.d/exim4 restart
# openssl s_client -showcerts -starttls smtp -connect localhost:25
# 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
# vi /etc/exim4/passwd # Format: # user:exim-adduser(password)[:password]
# chmod 640 /etc/exim4/passwd # chown root:Debian-exim /etc/exim4/passwd
# perl /usr/share/doc/exim4-base/examples/exim-adduser User: ewald Password: geheim
/etc/exim4/passwd löschen (ich will keine Klartext-Kennwörter speichern, Challenge-Response-Verfahren funktionieren jetzt allerdings nicht mehr).# update-exim4.conf # /etc/init.d/exim4 restart
$ telnet localhost 25 [...] EHLO test [...] hier darf keine Zeile mit "250-AUTH PLAIN LOGIN" kommen QUIT
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
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
[...]
# apt-get install clamav-daemon libclamunrar6 daemon
# adduser clamav Debian-exim # /etc/init.d/clamav-daemon restart
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
# 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
# less /var/log/clamav/clamav.log [...] [...] /var/spool/exim4/scan/xxx.eml: Eicar-Test-Signature FOUND
# less /home/ewald/Maildir/new/xxx [...] X-Virus-Status: Message contains possible malware (Eicar-Test-Signature) [...]
accept hinzufügen:# vi /etc/exim4/conf.d/acl/30_exim4-config_check_mail
[...]
deny
senders = /etc/exim4/deny_senders
accept
# update-exim4.conf # /etc/init.d/exim4 restart
# vi /etc/exim4/deny_senders sender@example.net *@sub.example.org *example.com