MIESO + SpamAssassin + QMail = duzy problem
Wiktor R. Braun
security w convector.com.pl
Wto, 24 Cze 2003, 16:05:09 CEST
Witam,
--=== WERSJA SKRÓCONA ===--
Schemat szczegółowy:
====================
Program pocztowy: QMAIL 1.03-54 [IN*2]
Nasłuchiwanie:
a) zewnętrzny IP (WAN, port 25, 3 połączenia) [IN-1]
*) skanowanie poczty SpamAssassin'em
b) wewnętrzna sieć (LAN, port 25, b.o. połączeń) [IN-2]
Przekierowanie poczty do: WebShield v4.5 Network Associates [WS]
Nasłuchiwanie: wewnętrzna sieć (LAN, port 2525, b.o. połączeń)
*) skanowanie poczty programem Anty-Wirusowym
Przekierowanie poczty do: QMAIL 1.03-54 [OUT]
Nasłuchiwanie: wewnętrzna sieć (LAN, port 2525, b.o. połączeń)
*) wysyłanie poczty do WAN'a lub do skrzynek użytkowników
Schemat ASCII:
==============
WAN WAN
\ /
[IN-1]---[WS]---[OUT]
/ \
LAN LAN (skrzynki)
Problem:
========
chcę na etapie [IN-1] mieć możliwość usuwania poczty do /dev/null
przed skanowaniem SpamAssasin'em.
Rozwiązanie:
============
własny skrypcik w SHell'u, umiejscowiony ze względu na sposób
przekazywania poczty (smtproutes), w pliku qmail-queue, który sprawdza
grep'em (-f plik) i w zależności od wyniku puszcza do
qmail-scanner-queue.pl albo wysyła do /dev/null.
Przykład (nie działa poprawnie):
================================
#!/bin/sh
TRESC=`cat`
ADRESAT=`/bin/echo -e "$TRESC"|formail -xTo`
if ( ! `grep -f /etc/qmail/ToDevNyll "$ADRESAT" >/dev/null` ) ; then
/bin/echo -e "$TRESC" | /var/qmail/bin/qmail-scanner-queue.pl
fi
unset TCPREMOTEIP
exit 0
Oczekiwana pomoc:
=================
działająca wersja powyższego skrypciku.
--=== WERSJA DŁUGA, OPISOWA ===--
Od pewnego czasu uwziął się pewien SPAMER na moją firmową domenę... Nie
mam OpenRelay'a u siebie, ale ten łobuz gwałci naszą domenę poprzez
spamowanie z innych hostów z OR i podając losowe znaki i podaje za
@CONVECTOR.com.pl !!
W efekcie 'cała' poczta wygląda jakby była wysłana od nas, ale tylko dobrze
zorientowani zauważą, że serwer z którego została wysłana jest zupełnie
inny. Do tych, co poczta nie doszła, wraca do mnie, u mnie qmail odpowiada,
że nie zna takiego adresu, więc odbija spowrotem, ale tamten też ją odbija
i w końcu trafia jako 'failure messages' do mnie. Chcę ukrucić to odbijanie
chociaż na pierwszym etapie i posyłać po odfiltrowaniu do /dev/null'a.
Dzisiaj doszło nawet do tego, że load był ~40 i zaczął powoli 'umierać',
ale w porę udało mi się go reanimować wyłączając pocztę przychodzącą.
Powodem takiego obciążenia był SpamAssasin, który był w pamięci w dużej
ilości (zarówno procesów jak i zajętości). Aktualnie udało mi się
ograniczyć pocztę przychodzącą z zewnątrz do 3 sztuk połączeń i znacznie to
obniżyło obciążenie serwerka :D Ponadto dodałem sprawdzanie DNS'a na
poziomie połączenia :D
Ponieważ mam konieczność przekierowywania poczty przychodzącej na inny
serwer w celu sprawdzenie na obecność wirusów, muszę mieć programik w
qmail-queue, który to co zbędne pośle gdzie trzeba, nie wiem jaką mam
zwrócić informację do qmail-start (wywołuje queue), aby ten nie robił mi
kolejnej sieczki typu: 'permanent error' zamiast zapomnieć o całej sprawie.
PS: mam nadzieję, że jakiś odzew będzie, ale nie oczekuję: NTG :-D i że
za bardzo mam namieszane w poczcie, ale takie rozwiązanie mi odpowiada
:-P
--
Pozdrawiam, Wiktor R. Braun
Więcej informacji o liście dyskusyjnej pld-users-pl