Autor: Rafał Woźniak, kanar.co Poniżej opisałem sposób instalacji Exim4 wraz z integracją clamav, spamassasin oraz logowaniem do serwera SMTP w systemie Debian 9 wykorzystując tylko standardowe paczki dostępne w dystrybucji. ---------------- Standardowo w Debianie jest instalowany nieco okrojony exim4 z paczki exim4-daemon-light. My natomiast potrzebujemy exima z paczki exim4-daemon-heavy apt install exim4-daemon-heavy i konfiguracje Exim: dpkg-reconfigure exim4-config przy pytaniu "Podzielić konfigurację na małe pliki?" wybieramy "Tak". Osobiście wszystkie dodatkowe pliki konfiguracyjne lubię trzymać w jednym miejscu, dlatego dodatkowa konfiguracja u mnie wylądowała w katalogu /etc/exim4/local: mkdir /etc/exim4/local a w nim następujące pliki: --- /etc/exim4/local/auth-25_exim4-config-plain_saslauthd_server --- plain_server: driver = plaintext public_name = PLAIN server_condition = "${if crypteq{$3}{${extract{1}{:}{${lookup{$2}lsearch{/etc/shadow}{$value}{*:*}}}}}{1}{0}}" server_set_id = $2 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{$2}{${extract{1}{:}{${lookup{$1}lsearch{/etc/shadow}{$value}{*:*}}}}}{1}{0}}" server_set_id = $1 .ifndef AUTH_SERVER_ALLOW_NOTLS_PASSWORDS server_advertise_condition = ${if eq{$tls_cipher}{}{}{*}} .endif -------------------------------------------------- --- /etc/exim4/local/main-000_ustawienia_lokalne --- MAIN_TLS_ENABLE=yes MAIN_TLS_TRY_VERIFY_HOSTS= AUTH_SERVER_ALLOW_NOTLS_PASSWORDS=yes av_scanner = clamd:/var/run/clamav/clamd.ctl daemon_smtp_ports = smtp : 587 -------------------------------------------------- --- /etc/exim4/local/router-650_exim4-config_spamcheck --- spamcheck_router: no_verify check_local_user # When to scan a message : # - it isn't already flagged as spam # - it isn't already scanned condition = "${if and { {!def:h_X-Spam-Flag:} {!eq {$received_protocol}{spam-scanned}}} {1}{0}}" driver = accept transport = spamcheck -------------------------------------------------- --- /etc/exim4/local/transport-30_exim4-config_spamcheck --- spamcheck: debug_print = "T: spamassassin_pipe for $local_part@$domain" driver = pipe command = /usr/sbin/exim4 -oMr spam-scanned -bS use_bsmtp transport_filter = /usr/bin/spamc home_directory = "/tmp" current_directory = "/tmp" user = Debian-exim group = Debian-exim return_fail_output message_prefix = message_suffix = -------------------------------------------------- Po nazwach plików można dojść gdzie powinny się znajdować (jako symlinki). Wykonujemy: ln -s /etc/exim4/local/main-000_ustawienia_lokalne /etc/exim4/conf.d/main/000_ustawienia_lokalne ln -s /etc/exim4/local/auth-25_exim4-config-plain_saslauthd_server /etc/exim4/conf.d/auth/25_exim4-config-plain_saslauthd_server ln -s /etc/exim4/local/router-650_exim4-config_spamcheck /etc/exim4/conf.d/router/650_exim4-config_spamcheck ln -s /etc/exim4/local/transport-30_exim4-config_spamcheck /etc/exim4/conf.d/transport/30_exim4-config_spamcheck I w ten sposób mamy przygotowane pliki konfiguracyjne dla exima. Jeszcze musimy zainstalować kilka pakietów: apt install spamassassin clamav-daemon spamc openssl Uaktywniamy daemona od spamu: systemctl enable spamassassin.service Teraz trochę poczarujemy niektórych userów systemowych, aby mieli dostęp do potrzebnych im plików: adduser Debian-exim shadow adduser clamav Debian-exim Pierwsze pozwala eximowi czytać hasła, a drugie pozwala antywirusowi dogadać się z MTA. Pozostało nam jeszcze wygenerowanie certyfikatu dla exima: /usr/share/doc/exim4-base/examples/exim-gencert wygenerowanie nowego pliku konfiguracyjnego dla exima uwzględniającego nasze wstawki: update-exim4.conf oraz zrestartowanie usług: systemctl restart exim4 systemctl restart spamassassin systemctl restart clamav-daemon Możemy potestować wysyłanie poczty jednocześnie obserwując logi exima: tail -f /var/log/exim4/mainlog ps. Można cały spam kasować z poziomu serwera za pomocą regułki w /etc/procmailrc: * ^X-Spam-Flag: YES /dev/null