Postfix in pillole: Rigettare i domini sconosciuti

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…

Postfix in pillole: Rigettare i domini sconosciuti

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

:D


Altri articoli che potrebbero interessarti

Configuriamo un server di posta completo su Etch (Postfix) – Parte 1° In questi giorni mi sono dedicato al nuovo vps in quanto volevo mettere in piedi un servizio di posta...
Configuriamo un server di posta completo su Etch (Postfix) – Parte 2° Adesso passiamo alla vera e propria configurazione del sistema di posta, dovremo infatti dire a postfix...
Configuriamo un server di posta completo su Etch (Postfix) – Parte 6° Questa parte funge da approfondimento, propongo un tweak per aumentare la sicurezza e le prestazioni...
Configuriamo un server di posta completo su Etch (Postfix) – Parte 4° Adesso che abbiamo il nostro MTA bello e funzionante non ci resta che fornire ai nostri utenti i tool...
Creare un relay antispam Con oggi voglio partire con una serie di tutorial che spieghino come creare un relay antispam. Più...

About the Author

M0rF3uS al secolo Alex è un ggiovine 25enne appassionato di informatica e linux. Lavora come Network and System Administrator e nel tempo libero gioca un pò con la sua fotocamera (Canon EOS 1000D) riuscendo a volte, per sbaglio, a fare qualche scatto decente. Completano il corredo, degli hobbies "vorrei ma non posso" ossia l'astronomia e l'astronautica....si è uno di quelli che da grande vorrebbe fare l'astronauta (povero coglione vero?).