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