Email Server · 8 min read · Oct 23, 2025
Impostare un Server Email Domestico a Prova di Spam (Il Metodo Alternativo) (Debian Squeeze)
Impostare un Server Email Domestico a Prova di Spam (Il Metodo Alternativo) (Debian Squeeze)
Introduzione
Lo spam email è un grande problema. Ho trovato per me stesso una soluzione piuttosto semplice, tuttavia ci vorrà del tempo per “migrare” completamente a essa.
La soluzione è creare un indirizzo email unico ogni volta che devo fornire un indirizzo email a qualcun altro o a qualche sito web per registrarmi. Se voglio un account su twitter, userei “[email protected]”. Per i servizi web, utilizzo il nome di dominio completo incluso il sottodominio (www) a sinistra della @ (alcuni siti web mal progettati non riconoscono il www. come indirizzo email valido, per quelli lo lascio semplicemente via).
Per le persone utilizzo un formato come questo: “[email protected]”. Potresti anche usare “[email protected]”. La cosa buona è che il lato sinistro della @ per gli indirizzi email è quasi “illimitato”.
Poiché genero indirizzi email unici per ogni contatto, posso facilmente scoprire dove il mio indirizzo email è stato divulgato e poi posso facilmente rimuoverlo.
Questo howto imposterà un server email completamente funzionante con script appropriati per semplificare la gestione delle email. Include anche la parte di configurazione DNS - anche se sei su un indirizzo dinamico - ad esempio, se vuoi eseguire il tuo piccolo server di posta da casa.
Riepilogo
In questo howto utilizzo Debian Squeeze come server. Per altre distribuzioni Linux dovrai apportare le modifiche appropriate da solo.
Un breve riepilogo di ciò che viene fatto in questo howto è il seguente:
- Ottenere un nome di dominio
- Gestire un IP dinamico - se necessario
- Gestire il DNS e il routing
- Impostare postfix
- Impostare procmail
- Impostare dovecot
- Impostare un server web per la gestione degli indirizzi email
- Impostare Thunderbird con addon
Crediti
In questo howto mi affido anche a pochi altri howto qui - specialmente riguardo alla configurazione del bind e del server email. Per quelli, ho copiato più o meno dai howto di Falko’s Perfect Debian Server. Anche la sezione del relay email è stata presa in prestito da un howto qui di sjau. Senza di questi, probabilmente non sarei stato in grado di impostare tutto questo.
Ottenere un Nome di Dominio
Prima di poter iniziare a eseguire il tuo server di posta, hai bisogno di un nome di dominio per il quale puoi anche impostare i record MX. Non voglio fare alcun suggerimento poiché ci sono tonnellate e tonnellate di registrar di domini là fuori. Uno dei più economici che conosco è GoDaddy.
Non uso GoDaddy personalmente, ma per quanto ne so forniscono un servizio solido.
Gestire IP Dinamici
Un’altra sfida da affrontare è come gestire le cose su un indirizzo IP dinamico. Se non hai una macchina dedicata affittata da qualche parte ma usi la tua connessione internet domestica, allora molto probabilmente non hai un IP statico.
Nel web è essenziale avere un IP statico in modo che gli altri sappiano sempre dove raggiungerti. Tuttavia ci sono servizi che ti aiutano con questo.
Uno dei servizi che utilizzo è EveryDNS. Mi permettono di ospitare il DNS per il nome di dominio.
Ad oggi offrono ancora il servizio gratuitamente. Anche se sono stati acquistati nel 2010, la promessa era che i clienti di allora che avevano donato denaro, possono anche in futuro utilizzare il sistema gratuitamente. Sulla loro pagina web, non menzionano ancora nulla che i nuovi clienti debbano pagare - ma non lo so con certezza.
Il motivo per EveryDNS è che offrono anche un piccolo script perl che può essere utilizzato per aggiornare il DNS. Questo è essenziale poiché il tuo IP cambia nel tempo se non hai un indirizzo IP statico. Puoi ottenere lo script perl da qui.
Quando hai un nome di dominio, vai prima su What Is My IP. Ti mostrerà il tuo attuale indirizzo IP pubblico. Poi crea un account su EveryDNS e fai almeno le seguenti voci dove MYDOMAIN.COM sarebbe il tuo nome di dominio:
(1) Crea un record di tipo “A”, impostato come nome di dominio completamente qualificato “MYDOMAIN.COM” e impostato come valore il tuo indirizzo IP pubblico
(2) Crea un record di tipo “CNAME”, impostato come nome di dominio completamente qualificato “*.MYDOMAIN.COM” e impostato come “MYDOMAIN.COM”
(3) Crea un record di tipo “MX”, impostato come nome di dominio completamente qualificato “MYDOMAIN.COM”, impostato come valore “MYDOMAIN.COM” e impostato come “MX Value” “10”
Ciò che abbiamo appena fatto è impostare il DNS per il dominio. Il dominio principale si trova al tuo indirizzo IP (record a), tutti gli altri domini si trovano anche lì (il * nel record cname punta al dominio principale) e gestiamo anche un server di posta lì (record mx).
utente root
Le seguenti operazioni vengono eseguite come utente root - a meno che non sia indicato diversamente.
Aggiornamento IP Dinamico
Come detto prima, se non hai un indirizzo IP statico dovrai aggiornare regolarmente le informazioni DNS.
(1) Ottieni lo script perl e rendilo eseguibile
cd /root
wget http://www.everydns.net/eDNS.pl
chmod 0755 eDNS.pl(2) Crea uno script bash che chiama lo script perl (ci sono altri modi, ma ho trovato che questo è il più semplice):
touch eDNS.sh
echo "#!/bin/bash" > eDNS.sh
echo "perl /root/eDNS.pl -u USERNAME -p PASSWORD -d MYDOMAIN.COM" >> eDNS.shSostituisci USERNAME e PASSWORD con le tue credenziali di accesso everydns.
(3) Imposta un cron per eseguirlo regolarmente
Mi piace lavorare con un file cron.txt che contiene tutti i cron. Penso sia molto più semplice mantenerlo in questo modo.
Prima devi controllare se c’è già un’entrata cron:
crontab -lSe non c’è ancora un’entrata cron, esegui semplicemente i seguenti comandi
touch cron.txt
chmod 0700 cron.txt
echo "*/5 * * * * /root/eDNS.sh >/dev/null 2>&1" > cron.txtSe ci sono già voci cron, copiale, crea un file cron.txt e inseriscile e aggiungi anche il seguente comando:
*/5 * * * * /root/eDNS.sh >/dev/null 2>&1 Ora carichiamo il cron.txt come cron:
crontab cron.txtE controlliamo se è stato aggiunto correttamente:
crontab -lLAN/Routing/Bind
Il prossimo problema che affrontiamo è come risolvere il dominio nella tua lan. Se il tuo server di posta è dietro un router, probabilmente avrà un IP locale come 192.168.0.x o 10.0.0.x.
Se sei dietro un router, dovrai inoltrare le seguenti porte al tuo server: 25, 80, 143, 443, 991. Potrebbero essere necessarie altre porte come 587.
Affrontiamo anche il problema di come risolvere il nome di dominio dall’interno della lan. Dall’esterno della lan hai l’entrata DNS che dovrebbe puntare al tuo attuale indirizzo IP. Tuttavia, quando sei all’interno della lan e fai una query DNS, restituirà solo il tuo IP pubblico e di solito fallirà quindi.
Ci sono diverse soluzioni per quel problema - se il problema esiste anche.
Un modo sarebbe l’uso di dnsmasq nei router (ad esempio dd-wrt o tomato-wrt). Tuttavia, poiché non posso garantire che funzioni, l’unica altra opzione che vedo è impostare un server DNS completo sul tuo server di posta.
In questo tutorial utilizzerò un Bind9 chrooted poiché sono il più familiare con esso. Per altri server DNS troverai molta documentazione online.
(1) Installa il software e fermalo
apt-get install bind9
/etc/init.d/bind9 stop(2) Cambia la configurazione /etc/default/bind9 in modo che la riga delle opzioni sia così:
OPTIONS="-u bind -t /var/lib/named" (3) Crea le directory necessarie sotto /var/lib:
mkdir -p /var/lib/named/etc
mkdir /var/lib/named/dev
mkdir -p /var/lib/named/var/cache/bind
mkdir -p /var/lib/named/var/run/bind/run(4) Poi sposta la directory di configurazione da /etc a /var/lib/named/etc:
mv /etc/bind /var/lib/named/etc(5) Crea un symlink alla nuova directory di configurazione dalla vecchia posizione (per evitare problemi quando BIND viene aggiornato in futuro):
ln -s /var/lib/named/etc/bind /etc/bind(6) Crea dispositivi null e random, e correggi i permessi delle directory:
mknod /var/lib/named/dev/null c 1 3
mknod /var/lib/named/dev/random c 1 8
chmod 666 /var/lib/named/dev/null /var/lib/named/dev/random
chown -R bind:bind /var/lib/named/var/*
chown -R bind:bind /var/lib/named/etc/bind(7) Modifica il file /etc/rsyslog.d/bind-chroot.conf e aggiungi
$AddUnixListenSocket /var/lib/named/dev/log (8) Riavvia i servizi
/etc/init.d/rsyslog restart
/etc/init.d/bind9 starte controlla /var/log/syslog per errori.
Ora abbiamo impostato Bind9 in un ambiente chrooted. La prossima cosa da fare è aggiungere effettivamente un file di zona per il tuo dominio.
(9) Modifica /etc/bind/named.conf.local e aggiungi
zone "MYDOMAIN.COM" IN {
type master;
file "/etc/bind/zones/MYDOMAIN.COM.db";
allow-update { none; };
};
(10) Crea la cartella della zona e il file di zona
mkdir /etc/bind/zones
touch /etc/bind/zones/MYDOMAIN.COM.db
chown -R bind:bind /etc/bind/zones/MYDOMAIN.COM.db(11) Aggiungi le informazioni del tuo file di zona a MYDOMAIN.COM.db
$TTL 86400
@ IN SOA @ MYDOMAIN.COM. (
1 ; serial
2600 ; refresh
15M ; retry
3600 ; expiry
360 ) ; minimum
@ IN NS ns.MYDOMAIN.COM.
ns IN A LOCALIP
www IN A LOCALIP
MYDOMAIN.COM. IN A LOCALIP
MYDOMAIN.COM. IN MX 10 LOCALIP
Ovviamente sostituisci MYDOMAIN.COM con il tuo nome di dominio reale e LOCALIP con il tuo indirizzo IP LAN statico. Fondamentalmente diciamo qui che il nameserver per quel dominio è ospitato su “ns.MYDOMAIN.COM” e “ns.MYDOMAIN.COM” si trova all’indirizzo IP locale statico.
(12) Riavvia Bind9
/etc/init.d/bind9 restart(13) Cambia la risoluzione NS del router
Mentre Bind9 è ora impostato, c’è un’ultima cosa da fare. Sul tuo router devi cambiare l’ordine di risoluzione del nameserver. Il primo nameserver deve ora essere il tuo “server di posta” con l’IP locale statico corrispondente. Altrimenti, l’intera configurazione di bind9 sarebbe stata inutile. Come secondo nameserver inserisci il valore di quello che era già lì come primo. A seconda del tuo router, potrebbe essere un po’ più complicato.
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.