A causa della mia [[Configuriamo un server di posta completo su etch (postfix) - parte 6°|eterna guerra contro lo spam]], sono sempre alla ricerca di tweak e tecniche utili a diminuire il livello, già molto basso, di spam nella mia casella, oggi vedremo come rigettare le mail provenienti da domini invalidi, perchè come dico sempre, è più efficace combattere lo spam prima che questo entri nel server, piuttosto che filtrarlo dopo…
innanzitutto cosa intendiamo per dominio invalido? Chi ha seguito [[Creiamo un server dns con bind [parte 2.1°- i file di zona e la risoluzione diretta]|i nostri tutorial sui server dns]], saprà cosa è un record MX, dunque per dominio invalido riteniamo quei domini che non possiedono all’interno della loro zona un record MX, ne consegue che se quel dominio non ha tale record non possiede un server di posta che lo serve, ed a rigor di logica non ha senso che io accetti le mail provenienti da un dominio che non potrebbe inviare posta.
La configurazione è estremamente semplice, dobbiamo modificare il nostro main.cf ed inserire una stringa:
vi /etc/postfix/main.cf
…
smtpd_sender_restrictions = reject_unknown_sender_domain
salviamo il file e riavviamo postfix. Ma noi dobbiamo fare le cose per bene, e vogliamo evitare di far fare al server lavoro superfluo ed inutile, cosi facendo infatti il reject arriverà alla fine della sessione smtp, quando il mittente lancerà il comando DATA per inserire il corpo della mail per intenderci:
~# telnet mail.logubuntu.it 25
Trying 212.95.32.174…
Connected to mail.logubuntu.it.
Escape character is ‘^]’.
220 mail.logubuntu.it ESMTP Postfix (Debian/GNU)
helo mx.sgnaps.com
250 mail.logubuntu.it
mail from:<sgnaps@spunz.de>
250 2.1.0 Ok
rcpt to:<morfeus@ilportalinux.it>
554 5.1.8 <sgnaps@spunz.de>: Sender address rejected: Domain not found
e questo non va bene perchè in server che gestiscono grossi volumi di traffico (e di spam) questo può causare un carico di lavoro totalmente inutile, noi possiamo impostae postfix in modo che il 554 venga rilasciato già dal MAIL FROM e non alla fine dell’autenticazione, troncando quasi subito la connessione
torniamo al nostro main.cf ed aggiungiamo la stringa:
vi /etc/postfix/main.cf
…
smtpd_delay_reject = no
Come al solito salviamo e riavviamo postfix, ed otterremo quanto desiderato:
~# telnet mail.logubuntu.it 25
Trying 212.95.32.174…
Connected to mail.logubuntu.it.
Escape character is ‘^]’.
220 mail.logubuntu.it ESMTP Postfix (Debian/GNU)
helo mx.sgnaps.com
250 mail.logubuntu.it
mail from:<sgnaps@spunz.de>
554 5.1.8 <sgnaps@spunz.de>: Sender address rejected: Domain not found
Update: Bloccare i timidoni…
Stasera tornato dal lavoro mi sono ritrovato nella casella 6 mail che mi promettevano lavori da 1000 euri la settimana (-.-’), mi sono chiesto come minchia facessero a passare tutti i controlli antispam/phishing, e la soluzione è presto data, oltre che ad usare come mittente la mia stessa casella di posta (e su questo purtroppo non si può fare niente), mi è bastato dare un occhiata ai log per capire il punto debole della loro tecnica:
Nov 25 00:03:10 212-95-32-174 postfix/smtpd[13685]: connect from unknown[124.236.241.64]
Nov 25 00:03:12 212-95-32-174 postfix/smtpd[13685]: 0212F3D4754: client=unknown[124.236.241.64]
praticamente gli infami si presentano in fase di saluto (HELO), senza hostname o con un hostname inventato.
Basta quindi bloccare le connessioni entranti da host sconosciuti ed il gioco è fatto (in grassetto le parti aggiunte):
vi /etc/postfix/main.cf
…
smtpd_helo_restrictions = permit_mynetworks, reject_unknown_client, \
reject_unknown_hostname, reject_invalid_hostname, \
regexp:/etc/postfix/helo.regexp, permit
cosi chi è timido e non vuole presentarsi viene prontamente calciato altrove:
morfeus@zion:~$ telnet mail.logubuntu.it 25
Trying 212.95.32.174…
Connected to mail.logubuntu.it.
Escape character is ‘^]’.
220 mail.logubuntu.it ESMTP Postfix (Debian/GNU)
helo
501 Syntax: HELO hostname
helo 210.91.231.11
554 5.7.1 <210.91.231.11>: Helo command rejected: Host not found
helo 81.208.60.201
554 5.7.1 <81.208.60.201>: Helo command rejected: Host not found
helo mx.repubblica.it
250 mail.logubuntu.it
![]()
| |













