Newsgroup: it.comp.os.linux.sys
Titolo: postfix & spamassassin solo per filtraggio

Vi espongo il mio problema.
In una rete di media dimensione devo installare un sistema che faccia le 
seguenti e basilari cose:
- prendere tutta la posta che arriva sulla 25 per quel dominio (
example.it
)
- filtrarla tramite spamassassin (niente antivirus e simili che 
appesantiscono parecchio)
- spedire la posta filtrata ad un altro server smtp (lotus domino) che a 
sua volta la smisterà ai suoi client.
I passi sono pochi e chiari ma in un test effettuato in precedenza sono 
nati i seguenti problemi.
- enorme spam in arrivo per indirizzi inesistenti allinterno di quel 
dominio (che caricava inutilmente la macchina).
Questo non è risolvibile in modo facile dato che non si conoscono su 
questa macchina gli indirizzi validi all'interno del dominio (che sono 
stipati sul sevrer domino). Risolto in modo provvisorio con un 
potenziamento della macchina.
- non siamo riusciti a configurare in maniera corretta il 
main.cf
 di 
postfix in modo da ottenere le seguenti (e penso essenziali) restrizioni.
1 - fare in modo che nessuno possa collegarsi dall'esterno per usare 
questo server come "spammatore" verso altri indirizzi.
2 - postfix possa mandare posta solo al server domino (interno) e solo 
posta indirizzata a tutti coloro che stanno all'interno del dominio
p.s. per mandare posta all'esterno si usa il server domino senza passare 
per il server postfix.
Vi chiedo quindi umilmente aiuto con la configurazione di postfix 
possibilmente con degli esempi. Provvederò a breve con una prima bozza 
del 
main.cf
.
Sistema usato per antispam: Ubuntu 6.06 server (postfix + spamassassin)
Server interno a cui indirizzare la posta: (domino) ip. 10.xxx.xxx.xxx
Dominio: 
example.it

 posta indirizzata a tutti coloro che stanno all'interno del dominio
Blocca la 25/tcp in uscita tramite iptables. Oppure vedi sopra.
Bye.

 Se Domino non lo supporta, sei fregato. Cambia Domino.
Esiste l'address verification:
http://www.postfix.org/ADDRESS_VERIFICATION_README.html

 
-- 
Roberto Tagliaferri-Linux user #30785 <-> r.tagliaferri@(forse)
tosnet.it
A me piacciono tanto le donne nude perche' ci hanno l'esterno tutto in
pelle!...  Chissa' se dentro sono metallizzate?
		-- Giorgio Faletti

 appesantiscono parecchio)
Butto li i mie due cents: greylist
-- 
Gabriele Chervatin

 dovresti essere a posto
Da quel che ho capito, postfix e` pubblico, quindi deve ricevere posta da
chiunque.
Il suo problema e` che deve aprire il relay, perche` postfix non ha idea
di quali siano i domini locali.
Inoltre i filtri piu` comuni (sul dominio locale, sugli utenti locali,
sugli utenti dei domini) non possono essere applicati perche` postfix non
li conosce, e puo` usare solo spamassassin e clamav, oltre alle dnsrbl.
Non sapevo dell'address verification di cui parla Skull, per ora non mi
serve, ma e` un'informazione utile. :)
Bye.

 appesantiscono parecchio)
Dico 2 cose:
- se la scelta dell'AV è oculata [1], l'AV pesa davvero *niente*
rispetto a spamassassin.
- il "limite" di qualsiasi soluzione antispam home-made, è che va
mantenuta. Scordati di mettere in produzione una soluzione e lasciarla
lì a mandare avanti la baracca da sola: in 6 mesi diventa un colabrodo...
[1] In particolare l'uso di AV demonizzati. Quindi non clamscan ma
clamd, non sophos ma sophie, non trend micro ma trophie, ecc..
Bye!

 di quali siano i domini locali.
Invece *deve* saperlo.
Mynetworks va a contenere solo localhost e l'IP del Domino, e i domini
gestiti da Domino vanno inseriti in una transport_map che punti la
consegna al Domino stesso.

 
scelta vostra..
-- 
Rebbe on bmw r1150r dark blue (2006)

Rebbe ha scritto:

Ok ottimi consigli mettendo mynetworks = 
127.0.0.0/8
 eviterei di dover 
chiudere la porta 25 con iptables (soluzione che non mi piace molto)
Presto posto il 
main.cf
 che può servire a tutti!

 Presto posto il 
main.cf
 che può servire a tutti!


Ecco il 
main.cf
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
# il nome della macchina nel dominio
myhostname = 
serverposta.dominio.it
# il nome del dominio
mydomain = 
dominio.it
# gli alias (qua in futuro aggiungo ldap come lista di utenti)
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
# questi sono da configurare in modo corretto
myorigin = $myhostname
mydestination = 10.xxx.xxx.xxx #(lotus domino)#E' sbagliato?????
relayhost = 10.xxx.xxx.xxx #(lotus domino)
# rete interna, localhost
mynetworks = 10.xxx.xxx.xxx/24, 
127.0.0.0/8
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
# regole di restrizione da verificare e implementare
smtpd_client_restrictions = reject_maps_rbl , reject_unknown_client , permit
smtpd_sender_restrictions = reject_unknown_sender_domain , 
reject_non_fqdn_sender , permit
smtpd_recipient_restrictions = reject_unauth_destination , 
reject_non_fqdn_recipient , reject_unknown_recipient_domain , permi
t
smtpd_helo_restrictions = reject_invalid_hostname , 
reject_non_fqdn_hostname , reject_unknown_hostname , permit
maps_rbl_domains = 
rbl.maps.vix.com
,
dul.maps.vix.com
,
relays.mail-abuse.org

 
esatto... ma avevo visto un consiglio che diceva di chiuderla... forse 
intendeva solo in uscita boh..

 Ecco il 
main.cf
Ti offendi se ti dico che non ne hai azzeccata una? :-\


sbagliando si impara... ma qui la strada e' lunga!

Rebbe ha scritto:

Non mi offendo non sono io che ho scritto questo.
Sto cercando di porre rimedio a questa configurazione.
Sono alle prime armi e lo faccio principalmente per imparare.
Per questo chiedo il vostro aiuto che sicuramente ne sapete 10 volte 
tanto me.


se leggi il mio post di fatto contiene tutta la conf che ti serve!

Allora questa potrebbe essere una possibile configurazione.
Sicuramente manca qualcosa o qualcosa è sbagliato!
Manca ancora spamassassin clamav e procmail ma li affronto inseuito
--------------------------------------------------
in /etc/postfix/
main.cf
 rivisitato
# nome e dominio
myhostname = 
serverposta.dominio.it
mydomain = 
dominio.it
# gli alias map
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
# questo rever non fa da relay per nessuno
mynetworks = 
127.0.0.0/8
# mando posta solo a chi è in 
dominio.it
relay_domains = 
dominio.it
# trasporto la posta a lotus domino
transport_maps = hash:/etc/postfix/transport
# ascolto da tutte le interfaces
inet_interfaces = all
#mydestination --> non serve a niente xche non faccio consegna locale
#da documentazione The mydestination parameter specifies what domains 
#this machine will deliver locally, instead of forwarding to another 
#machine.
#
#myorigin --> nemmeno (ma non ne sono sicuro.. sto interpretando la doc)
#
#
#
#
#
--------------------------------------------------
in /etc/postfix/transport

 transport_maps = hash:/etc/postfix/transport
... la prima può diventare
relay_domains = $transport_maps
In questo modo all'eventuale aggiunta di nuovi domini hai solo bisogno
di gestire la mappa transport.
E' finezza, cmq...
Rivedrei le restrictions che hai postato, perchè
- le lookup su DNSBL sono in buona sostanza outdated
- eviterei di applicare blocchi sulle restriction precedenti a
smtpd_recipient_restriction, altrimenti non vedi a chi erano dirette e/o
da dove venivano le mail bloccate
- vi aggiungerei una regola per effettuare la verifica del destinatario,
come da link precedentemente fornito. Puoi evitare se trovi il modo di
interrogare le basi dati utente direttamente tramite lookup sul db di
domino.
Bye

 tanto me.
-------------------------------------------------------------
# Non diciamo in giro la nostra versione.
smtpd_banner = $myhostname ESMTP Server
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Dominio di posta
mydomain = 
example.it
# Proprio hostname
myhostname = 
mail.example.it
# Come ci presentiamo all'helo
myorigin = 
mail.example.it
# I domini per cui accettiamo la posta
mydestination = 
mail.example.it
, 
example.it
relayhost =
# Le reti che debbono poter inviare mail attraverso noi
mynetworks = 
127.0.0.0/8
, 
192.168.0.0/24
# Su quali interfacce ascoltiamo
inet_interfaces = all
# Limitiamo le dimensioni dei messaggi (dim max allegato x 1.4 circa)
message_size_limit = 14000000
# Non abbiamo utenti locali
local_recipient_maps =
# Le destinazioni finali prendile da questo file:
transport_maps = hash:/etc/postfix/transport
# Leggi il man.
recipient_canonical_maps = hash:/etc/postfix/canonical_recipient
sender_canonical_maps = hash:/etc/postfix/canonical_sender
# Controllo sugli headers
header_checks = pcre:/etc/postfix/header_checks
# Controllo sul body
body_checks   = pcre:/etc/postfix/body_checks
# Restrizioni sull'helo
smtpd_helo_restrictions = permit_mynetworks,
          check_helo_access hash:/etc/postfix/access_helo,
          reject_non_fqdn_hostname
# Restrizioni sul mittente
smtpd_sender_restrictions = permit_mynetworks,
          check_sender_access hash:/etc/postfix/access_sender,
          reject_unknown_sender_domain
# Restrizioni in funzione del destinatario
# Previsto anche l'uso di blacklist e di greylisting
smtpd_recipient_restrictions = reject_unauth_pipelining,
          reject_non_fqdn_recipient,
          reject_unknown_recipient_domain,
          permit_mynetworks,
          check_recipient_access hash:/etc/postfix/access_recipient,
          reject_unauth_destination,
          check_client_access hash:/etc/postfix/access_dnsbl_whitelist,
          reject_rbl_client 
sbl-xbl.spamhaus.org
,
          reject_rbl_client 
list.dsbl.org
,
          reject_rbl_client 
dul.dnsbl.sorbs.net
,
          reject_rbl_client 
korea.services.net
,
          reject_rbl_client 
dnsbl.njabl.org
,
          reject_rbl_client 
l1.spews.dnsbl.sorbs.net
,
          reject_rbl_client 
relays.ordb.org
,
          check_policy_service inet:
127.0.0.1:60000
,
          permit
# Leggi /usr/share/doc/amavisd-new/README.postfix.gz
content_filter=smtp-amavis:[127.0.0.1]:10024
---------------------------------------------------
Occhio che è un setup abbastanza aggressivo.
I files access_* devono esistere; le mappe di tipo "pcre" non vanno
"compilate", mentre quelle di tipo "hash" devi compilarle con postmap.
/etc/postfix/access_helo:
Gli helo non conformi a RFC2822 che devi comunque accettare perché il
sistemista che gestisce il server è un cazzone ma il tuo capo aspetta
una mail importantissima dal suo capo.
/etc/postfix/access_sender:
I mittenti che devono poter inviarci mail anche se non conformi alla
RFC. In genere sono le applicazioni scritte con il culo e gli AS400
/etc/postfix/access_recipient:
I destinatari da rigettare automaticamente o da redirigere sullo spam
trainer o da lasciar passare a prescindere (postmaster e abuse in genere)
/etc/postfix/access_dnsbl_whitelist:
Dove mettere gli ip dei server finiti in blacklist per sfiga o per
idiozia del postmaster o del provider.
man 5 postconf
http://www.postfix.org/postconf.5.html
-- 
Flavio Visentin
Membro del CICAP
Comitato Italiano per il Controllo delle Affermazioni di P4

 Invece *deve* saperlo.
Per quello suggerivo di metterli in un DB o in LDAP, in modo da non dover
aggiornare a mano la lista ogni volta.
Ma magari sono io che mi faccio pare perche` devo gestire 200 domini che
cambiano ogni mese, mentre lui deve gestirne 1 che non cambia mai :)
Bye.

 domino.
le restrictions sono copiaincollate e non le ho ancora analizzate 
occorrerà fare una valida scelta.
(ho una settimana per configurare una macchina pienamente funzionante e 
devo rispettare la scadenza)
SCHEMA
-------
esterno
-------
    |
    |(IN/OUT)
    |
    v	
--------
firewall <--------------|
--------		|
    |			|
    |MAIL IN		|
    v			|
----------		|
filtraggio (ubuntu srv)	|MAIL OUT
----------		|
    |			|
    |			|
    v			|
-----			|
lotus ------------------|
-----
CONFIGURAZIONE 0.1
# /etc/postfix/
main.cf
# --> nascondo nome cognome e tipo dell'SMTP
smtpd_banner = $myhostname ESMTP Server
# --> niente notificazione di mail (pesante)
biff = no
# --> non si possono spedire mail a nomi parziali
append_dot_mydomain = no
# --> il nome del mio server
myhostname = 
serverposta.dominio.it
# --> alias per consegna locale (non usati)
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
# --> nessuno può spedire mail tramite questo server (solo lui può)
mynetworks = 
127.0.0.0/8
# --> dominio di destinazione
relay_domains = 
dominio.it
# --> trasporto la mail al server lotus
transport_maps = hash:/etc/postfix/transport
# --> uso tutte le interfaces
inet_interfaces = all
# message_size_limit = 14000000 #da decidere in seguito
# --> i recipienti locali non sono usati (xche non ho utenti locali)
local_recipient_maps =
# DA IMPLEMENTARE
# Restrizioni sull'helo
# Restrizioni sul mittente
# Restrizioni in funzione del destinatario
# Previsto anche l'uso di blacklist e di greylisting
# Antivirus, antispam
# /etc/postfix/transport
# --> il server lotus a cui arrivaranno le mail filtrate
dominio.it
 smtp:10.xxx.xxx.xxx
Se vedete ancora delle imperfezioni (a parte le cose ancora da 
implementare) non esitate a farmi avanti!
Poi pagerò birra GRATIS a tutti hehe ;-)
Purtroppo posso solo configurare senza effettuare test per il momento 
dato che un test fallito comporta mail perse... quindi cercherò di 
avere la configurazione più perfetta possibile.

Uffa mi si sono sballati i trattini....
per quanto riguarda spamassassin lo userei solo per taggare le mail sarà 
poi lotus a fare le sue scelte. come configurazione questa potrebbe 
essere una base.
ovviamente dopo opportuna apt-gettazzione di spamassassin e pyzor
# Punteggio che un messaggio deve raggiungere per essere considerato spam
required_score 5.0
# Testo da aggiungere al Soggetto delle e-mail identificate spam
# Comodo perchè spamassassin non è infallibile e alle volte identiiifca 
#come spam messaggi che invece non lo sono: in questo modo si possono 
#filtrare i messaggi di spam dal client senza perdere posta utile
#rewrite_header Subject [SPAM]-->
# Se abilitata, i messaggi ritenuti spam, verranno allegati come file
report_safe 0
# Abilitiamo il filtro Bayesiano
use_bayes 1
# Abilito l'auto-apprendimento di filtro
auto_learn 1
# Abilitiamo il controllo sulle RBL
skip_rbl_checks 0
# Abilito l'uso di pyzor
use_pyzor 1
# Path dell'eseguibile pyzor
pyzor_path /usr/bin/pyzor
# Abilito il controllo sul dns
dns_available yes
# Lingue da non considerare potenzialmente spam
ok_languages italian
# Domini da cui OGNI mail NON verrà considerata spam
whitelist_from *@
quantosonobravi.it
# Domini da cui OOGNI mail VERRA' considerata spam
blacklist_from *@
morisserotutti.it
!!!!!!!!!!!!!!!!!!! Ora il mio terribile dilemma è come faccio a dire a 
postfix di usare spamassassin???

 postfix di usare spamassassin???
apt-get install amavisd-new
zless /usr/share/doc/amavisd-new/README.postfix.gz


 
Ok per l'antivirus si fa cosi.. ma per spamassassin???
Mi viene da pensare che sia già integrato il supporto.
La cosa che però mi incuriosisce ora che sto analizzando le
smtpd_client_restrictions = ........
A me non servono a nulla se già imposto
mynetworks = 
127.0.0.0/8
che quindi impedisce a chinque alntro (client) di collegarsi al mio 
server e usarlo per spammare

 server e usarlo per spammare
No, le restriction servono per evitare che altri mandino spam a te.
Il mynetworks impedisce ad altri di usarti come relay verso terzi
-- 
Roberto Tagliaferri-Linux user #30785 <-> r.tagliaferri@(forse)
tosnet.it
Il miglior modo di cucinare il riso senza che questo si attacchi e'
quello di cucinare un chicco separato dall'altro.
		-- Ashleiaht Brilliant

Ok penso di essermi fatto una idea più generale della situazione...