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