Con oggi voglio partire con una serie di tutorial che spieghino come creare un relay antispam.
Più semplicemente creeremo un server da interporre tra il nostro Mail server ed Internet, in modo che le mail passimo prima per questo relay, vengano scannerizzate, e se ritenute buone mandate al nostro mail server.
I vantaggi sono evidenti, un relay antispam dedicato a fare solo quello è meglio di un mail server tuttofare, soprattutto per chi ha a che fare con volumi di traffico molto grossi, e quindi con volumi di spam altrettanto grossi.
Secondariamente il nostro mail server dovrà solo fare il recapito in locale, ne risulta quindi una macchina molto più agile e scattante.
I tutorial saranno di livello medio-alto, si presuppone quindi che conosciate già una determinata terminologia ed abbiate idea di come funziona un sistema di posta.
Giusto per avere idea di cosa andremo a fare: Il nostro sarà un relay antispam di tipo Bayesiano, con controlli aggiuntivi di tipo Backscatter (contro i cosiddetti open-relay, pozzi pieni di spam), controlli SPF del mittente, anti-phishing nelle firme xsl/pdf, greylisting, ed altro ancora.
Disabilitare app-armor
App armor è una estensione di sicurezza simile ad SELinux, solo che purtroppo sembra dare problemi con alcuni dei software che andremo ad installare, è consigliabile quindi disabilitarlo:
/etc/init.d/apparmor stop
update-rc.d -f apparmor remove
aptitude remove apparmor apparmor-utils
Installazione del software
aptitude install binutils cpp fetchmail flex gcc libarchive-zip-perl libc6-dev \
libcompress-zlib-perl libdb4.6-dev libpcre3 \
libpopt-dev lynx m4 make ncftp nmap openssl perl perl-modules unzip zip zlib1g-dev \
autoconf automake1.9 libtool bison autotools-dev g++ build-essential unrar
N.B. E’ consigliabile tenere l’orario del server sincronizzato con ntpdate, consiglio tempo.ien.it
DNS Caching
apt-get install dnsmasq
Editiamo la configurazione in /etc/dnsmasq.conf e facciamolo ascoltare in localhost
listen-address=127.0.0.1
aggiustiamo /etc/resolv.conf di conseguenza
nameserver 127.0.0.1
Apache2 + PHP5
apt-get install apache2 apache2-suexec apache2-doc apache2-mpm-prefork apache2-utils \
libexpat1
aptitude install libapache2-mod-php5 php5 php5-common php5-curl php5-dev \
php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache \
php5-mhash php5-ming php5-mysql php5-pspell php5-recode php5-snmp php5-sqlite \
php5-tidy php5-xmlrpc php5-xsl
Adesso modifichiamo /etc/apache2/mods-available/dir.conf
<IfModule mod_dir.c>
#DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
DirectoryIndex index.html index.htm index.shtml index.cgi index.php index.php3
index.pl index.xhtml</IfModule>
Prima del riavvio dobbiamo abilitare alcuni moduli di apache…
a2enmod rewrite
a2enmod suexec
a2enmod include
e quindi…
/etc/init.d/apache2 restart
Postfix e MySQL
apt-get install postfix postfix-mysql postfix-doc mysql-server mysql-client procmail
Durante la configurazione di mysql verremo interrogati su quale password di root assegnare. Mentre per postfix ci verranno fatte due domande:
General type of mail configuration: <– Internet Site
System mail name: <– nome.dominio.tld
cambiate ovviamente il dominio con quello che utilizzate voi.
Finita l’installazione dobbiamo togliere il listening in localhost di mysql commentando in /etc/mysql/my.cnf
#bind-address = 127.0.0.1
Restartiamo MySQL e stoppiamo postfix, questo perchè dobbiamo fare alcune configurazioni, prima di tutto aggiungiamo al file /etc/postfix/main.cf:
pickup fifo n – - 60 1 pickup
-o content_filter=
-o receive_override_options=no_header_body_checks
e poi lanciamo in sequenza i comandi:
postconf -e "alias_maps = hash:/etc/aliases"
newaliases
postconf -e "myorigin = dominio.tld"
postconf -e "myhostname = nome.dominio.tld"
postconf -e "mynetworks = 127.0.0.0/8, 192.168.0.0/24"
postconf -e "message_size_limit = 10485760"
postconf -e "local_transport = error:No local mail delivery"
postconf -e "mydestination = "
postconf -e "local_recipient_maps = "
postconf -e "virtual_alias_maps = hash:/etc/postfix/virtual"
Ricordatevi di settare correttamente il parametro mynetworks ed eventualmente cambiate il size limit delle email in entrata, qui è settato a 10Megabyte.
Creiamo il file /etc/postfix/virtual ed incolliamoci dentro:
postmaster postmaster@dominio.tld
abuse abuse@dominio.tld
root root@dominio.tld
e diciamo a postfix di prendere in considerazione anche questo file:
postmap /etc/postfix/virtual
postconf -e "relay_recipient_maps = hash:/etc/postfix/relay_recipients"
Creiamo il file /etc/postfix/relay_recipients e mettiamoci dentro:
@dominio.tld OK
@dominio2.tld OK
e come sopra:
postmap /etc/postfix/relay_recipients
postconf -e "transport_maps = hash:/etc/postfix/transport"
questo file serve per dire a postfix che deve rigettare tutte le mail destinate a caselle non appartenenti ai domini elencati.
Creiamo il file /etc/postfix/transport e mettiamoci dentro:
dominio.tld smtp:[192.168.0.x]
questo file indica l’ip da risolvere per il dominio relativo, in questo caso il nostro relay deve consegnare la posta filtrata al server che c’è sotto quindi è inutile che esca di nuovo su internet, glielo facciamo risolvere internamente con questo file.
postmap /etc/postfix/transport
postconf -e "relay_domains = hash:/etc/postfix/relay_domains"
creiamo il file /etc/postfix/relay_domains e mettiamoci dentro:
dominio.tld OK
è importante settare bene questi due file (relay_domains e relay_recipient) per evitare che il nostro antispam si trasformi in un open relay (il parco giochi per gli spammer).
postmap /etc/postfix/relay_domains
postconf -e "smtpd_helo_required = yes"
postconf -e "smtpd_sender_restrictions = reject_non_fqdn_sender, \
reject_unknown_sender_domain, permit"
postconf -e "smtpd_recipient_restrictions = reject_non_fqdn_sender, \
reject_non_fqdn_recipient, reject_unknown_recipient_domain, \
permit_mynetworks, reject_unauth_destination, reject_unauth_pipelining, \
reject_rbl_client zen.spamhaus.org, reject_rbl_client bl.spamcop.net, \
permit"
postconf -e "smtpd_data_restrictions = reject_unauth_pipelining"
dopo aver controllato di non aver scritto str**** nella configurazione di postfix possiamo avviarlo:
/etc/init.d/postfix start
Per oggi direi che è abbastanza, domani iniziamo ad installare i vari sistemi di controllo della posta.
|
|












Ciao a tutti, ho un problema; ho messo quanto doveso in /etc/postfix/main.cf (ho aggiunto le tre righe in fondo) ma quando do il comando newaliases mi viene fuori questo errore:
newaliases: fatal: /etc/postfix/main.cf, line 43: missing '=' after attribute name: “pickup fifo n ??? – 60 1 pickup” come mai?
Grazie.
Giuseppe
Non c'è nessuno che mi può aiutare?
leggiamoli i messaggi di errore quando compaiono:
te lo dice lui stesso cosa succede.
Questo è ovvio! Se io ti dico una cosa in Tedesco e tu non lo sai o lo stai imparando e non capisci e mi chiedi delucidazioni è inutile che ti risponda che basta capire cosa ho detto……
ok manca = dopo il nome dell'attributo….. cioè? ho fatto delle prove ma non ho risolto…
ti sei risposto da solo
manca l'uguale dopo il nome dell'attributo. ti dice anche dove è che hai sbagliato, ossia nel file main.cf alla riga 43. Controlla quella riga e correggi di conseguenza per risolvere
leggiamoli i messaggi di errore quando compaiono:
te lo dice lui stesso cosa succede.
Questo è ovvio! Se io ti dico una cosa in Tedesco e tu non lo sai o lo stai imparando e non capisci e mi chiedi delucidazioni è inutile che ti risponda che basta capire cosa ho detto……
ok manca = dopo il nome dell'attributo….. cioè? ho fatto delle prove ma non ho risolto…
ti sei risposto da solo
manca l'uguale dopo il nome dell'attributo. ti dice anche dove è che hai sbagliato, ossia nel file main.cf alla riga 43. Controlla quella riga e correggi di conseguenza per risolvere