StefanoLaguardia.eu

[Guida]Realizziamo un server a basso costo per mail, torrent e condivisione files (Parte 3)

Nella “parte 3” di questa serie di articoli-guida, vi mostrerò in che modo procedere con l’installazione e la configurazione di un completo server di posta elettronica con supporto SSL, autenticazione SASL, antivirus ed antispam. In particolare, installeremo Postfix, Dovecot, DSpam e Clamav. Solo successivamente, in una prossima parte della guida,  procederemo con l’installazione e la configurazione di Fetchmail per lo scaricamento delle mail dai vostri attuali indirizzi e la loro redistribuzione sugli account in locale sul server.

Prima di procedere ci tengo a precisare che il sistema che vi sto proponendo di installare può andar bene se dobbiamo gestire un unico dominio di posta e se gli utenti che utilizzeranno i servizi del server sono pochi. Diversamente bisognerebbe optare per soluzioni diverse e configurare un mail server in stile ISP. Non solo quest’ultima opzione è eccessiva per un server casalingo o di un piccolo ufficio, ma di guide in tal senso ce ne sono a decine su Internet e sarebbe inutile scriverne un’ennesima! Detto ciò, proseguiamo collegandoci tramite SSH al server configurato in precedenza.

  • Installazione di Postfix con supporto SSL e autenticazione SASL

Stiamo usando una Debian, quindi è tutto di una semplicità disarmante. Infatti, come sempre sarà sufficiente, da utente root, lanciare il comando apt-get:

# apt-get install postfix postfix-tls libsasl2 sasl2-bin libsasl2-modules

Per il momento non dobbiamo fare null’altro se non sapere che i files di configurazione di Postfix sono il main.cf ed il master.cf che si trovano nella directory /etc/postfix e che provvederemo ad editare in un secondo momento. Possiamo, dunque, iniziare ad installare e configurare Dovecot.

  • Installazione e configurazione di Dovecot

Dovecot è il software che ci consentirà di installare un server IMAP e POP3 per scaricare la posta tramite i noti client come thunderbird. Nel nostro specifico caso, poi, abiliteremo anche i server sicuri IMAPs e POP3s in modo da permettere l’accesso ai server attraverso un tunnel SSL. Ecco come procedere:

# apt-get install dovecot-imapd dovecot-pop3d dovecot-common

Adesso dobbiamo passare ad editare il file di configurazione /etc/dovecot/dovecot.conf in modo da avere le seguenti righe come le vedete qui:

# specify protocols = imap imaps pop3 pop3s
protocols = pop3 pop3s imap imaps
# uncomment this and change to no.
disable_plaintext_auth = no
pop3_uidl_format = %08Xu%08Xv

Successivamente dovete individuare, sempre nel file dovecot.conf, la parte dove vengono date le direttive di autenticazione e che inizia con “auth default {“. Una volta individuata tale sezione del file di configurazione, procediamo con il rinominare “auth default” in “auth default2” ed aggiungiamo alla fine del file le seguenti direttive:

auth default {
mechanisms = plain login
passdb pam {
}
userdb passwd {
}
socket listen {
client {
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix
group = postfix
}
}
}

Fatto ciò, salviamo, chiudiamo e possiamo passare all’editing dei files di configurazione di Postfix.

  • Configurazione di Postfix e saslauthd

Con il vostro editor testuale preferito, aprite il file /etc/postfix/main.cf ed inserite le seguenti righe:

smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = vostro_dominio
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
smtpd_sasl_security_options = noanonymous

Fate attenzione a modificare “vostro_dominio” con l’opportuno dato. Il mio consiglio è quello di usare il dominio che useremo con la configurazione dei servizi di Dynamic DNS (a tal proporisito potete procedere già adesso con la registrazione di un servizio di DDNS con dyndns o no-ip).

Successivamente, dovrete creare il file smtpd.conf in /etc/postfix/sasl ed inserire nello stesso quanto segue:

pwcheck_method: saslauthd
mech_list: plain

Procediamo con la creazione della directory per saslauthd nella var di postfix:

# mkdir -p /var/spool/postfix/var/run/saslauthd

Infine, apriamo il file di configurazione “saslauthd” del demone di sasl che si trova in /etc/default/ e modifichiamo le righe OPTIONS e START in questo modo:

OPTIONS=”-c -m /var/spool/postfix/var/run/saslauthd”

START=yes

Adesso siamo pronti a riavviare i vari servizi per fargli leggere i nuovi files di configurazione:

# /etc/init.d/saslauthd restart
# /etc/init.d/postfix restart
# /etc/init.d/dovecot restart

Se avete seguito le precedenti parti di questa guida, sul server in questo momento è funzionante il solo utente root. E’ buona regola creare almeno un utente “normale” in questo momento anche al fine di testare il funzionamento del server di posta.

Potete creare un utente nuovo con il comando adduser seguito dal nome dell’utente da creare:

# adduser mail_test

Dopo aver creato l’utente, possiamo testare il funzionamento del server SMTP tramite telnet:

# telnet localhost 25
Trying 127.0.0.1…
Connected to localhost.
Escape character is ‘^]’.
220 debian-server ESMTP Postfix (Debian/GNU)
ehlo localhost
250-debian-desktop
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN CRAM-MD5
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit
221 2.0.0 Bye
Connection closed by foreign host.

In grassetto vi ho riportato i comandi che dovrete digitare. Se dopo aver digitato “ehlo localhost” riceverete gli stessi messaggi che vedete riportati, vuol dire che il server SMTP (Postfix) è in funzione.

Possiamo adesso procedere con la configurazione dei sistemi antispam ed antivirus.

  • Installazione e configurazione di DSPAM e Clamav.

Una premessa: ho deciso di utilizzare come sistema antispam DSPAM. Il motivo per cui la scelta è ricaduta su tale software è l’utilizzo molto basso di risorse hardware (in particolare poca RAM) e la grande affidabilità nell’individuare con altissime percentuali la posta indesiderata. Si sarebbero potuti utilizzare ben più documentati e blasonati sistemi come Spamassassin in accoppiata con Amavisd, ma ho preferito pensare a diminuire l’uso eccessivo di RAM e CPU visto che stiamo lavorando su una scheda embedded Alix che, per quanto potente, non ha a disposizione le stesse capacità di un moderno PC. Fatta questa breve premessa, passiamo ad installare e configurare quanto necessario.

In primo luogo dobbiamo inserire alcuni nuovi repositories nel file /etc/apt/sources.list. Quindi aprima quest’ultimo file ed inseriamo le seguenti righe:

#Kirya for DSPAM
deb http://packages.kirya.net/debian/ etch main contrib non-free
deb-src http://packages.kirya.net/debian/ etch main contrib non-free
#Debian Volatile
deb http://volatile.debian.org/debian-volatile etch/volatile main contrib non-free

Poi, carichiamo lo chiavi GPG dei due nuovi repositories in questo modo:

# wget -O – http://packages.kirya.net/Kirya.netDebianpackagesVerificationKey.asc | apt-key add –
# wget http://www.debian.org/volatile/etch-volatile.asc -O- | apt-key add –

Procediamo, quindi con un aggiornamento della lista dei pacchetti:

# apt-get update

Adesso dobbiamo installare il software necessario ai nostri scopi, cominciando dal server MYSQL:

# apt-get install mysql-server

Creiamo a questo punto una password per l’utente root di mysql:

# mysqladmin -u root password “nuova_password”

Procediamo con l’installazione di DSPAM:

# apt-get install dspam libdspam7-drv-mysql clamav-daemon

Durante la fase di installazione vi verrà chiesto di configurare libdspam7-drv e dovrete inserire la password di root di mysql modificata con il precedente comando ed una password di gestione del database di dspam. Purtroppo, occorrerà, poi, intervenire a mano sul database mysql che non accetterà il nome completo dell’utente impostato da DSPAM in automatico durante la fase di installazione. Possiamo intervenire entrando sulla CLI di mysql e creando il “nuovo” utente in questo modo:

# mysql -u root -p
Password:

mysql> GRANT ALL PRIVILEGES ON libdspam7drvmysql.* to ‘libdspam7-drv-my’@”localhost’ IDENTIFIED BY ‘password_di_libdspam’;
….
mysql> FLUSH PRIVILEGES;

Passiamo adesso alla configurazione di DSPAM e, dunque, all’editing del file /etc/dspam/dspam.conf. Nel mio caso ho lasciato attive queste impostazioni:

Home /var/spool/dspam
StorageDriver /usr/lib/dspam/libmysql_drv.so
DeliveryHost        127.0.0.1
DeliveryPort        10026
DeliveryIdent       localhost
DeliveryProto       SMTP
OnFail error
Trust root
Trust dspam
Trust mail
Trust mailnull
Trust smmsp
Trust daemon
TrainingMode teft
TestConditionalTraining on
Feature whitelist
Algorithm graham burton
PValue bcr
SuppressWebStats on
Preference “spamAction=tag”
Preference “signatureLocation=headers”    # ‘message’ or ‘headers’
Preference “showFactors=off”
Preference “spamSubject=[SPAM]”
Notifications    off
LocalMX 127.0.0.1
SystemLog off
UserLog   off
Opt out
TrackSources spam
ParseToHeaders off
ChangeModeOnParse on
ChangeUserOnParse off
ClamAVPort    3310
ClamAVHost    127.0.0.1
ClamAVResponse accept
ServerPID              /var/run/dspam/dspam.pid
ServerMode auto
ServerPass.Relay1    “secret”
ServerParameters    “–deliver=innocent”
ServerIdent        “localhost.localdomain”
ServerDomainSocketPath  “/var/run/dspam/dspam.sock”
ClientIdent    “secret@Relay1”
ProcessorBias on
Include /etc/dspam/dspam.d/

Creiamo, poi, il file “group” nella directory /var/spool/dspam ed inseriamo in tale file il seguente contenuto:

dspam:shared:*

Adesso dobbiamo configurare Postfix in modo che esso utilizzi DSPAM. Per fare ciò, dobbiamo in primo luogo installare il pacchetto postfix-pcre:

# apt-get install postfix-pcre

A questo punto creiamo il file dspam_filter_access nella direcotory /etc/postfix ed inseriamo questo contenuto:

# Everything beginning with either ham or spam avoids the filter
/^(spam|ham)@.*$/ OK
# The rest is redirected to be filtered
/./ FILTER dspam:dspam

Adesso apriamo il file main.cf che si trova, come già detto, in /etc/postfix ed inseriamo le righe:

smtpd_client_restrictions = check_client_access pcre:/etc/postfix/dspam_filter_access
dspam_destination_recipient_limit = 1

Procediamo con l’aggiunta delle seguenti righe in /etc/postfix/master.cf:

dspam                 unix    –       n       n       –       –    pipe
flags=Ru user=dspam argv=/usr/bin/dspam –client –deliver=innocent,spam –user ${recipient} –mail-from=${sender}
localhost:10026 inet  n –       n       –       –        smtpd
-o content_filter=
-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
-o smtpd_helo_restrictions=
-o smtpd_client_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o smtpd_authorized_xforward_hosts=127.0.0.0/8

Adesso apriamo il file /etc/aliases ed aggiungiamo queste due righe:

ham: ham@ham.ham
spam: spam@spam.spam

Terminata questa operazione lanciamo il seguente comando:

# postalias /etc/aliases

Poi, creiamo il file  /etc/postfix/transports ed inseriamo questo contenuto:

spam.spam       dspam-retrain:spam
ham.ham         dspam-retrain:innocent

Torniamo, poi a modificare i file /etc/postfix/main.cf ed inseriamo questo contenuto:

transport_maps = hash:/etc/postfix/transports

E poi lanciamo il comando:

# postmap /etc/postfix/transports

Modifichiamo, ancora una volta il file /etc/postfix/master.cf inserendo quanto segue:

dspam-retrain         unix    –       n       n       –      –     pipe
flags=Rhq user=dspam argv=/usr/bin/dspam –client –mode=teft –class=$nexthop –source=error –user dspam

Al fine di evitare che DSPAM crei problemi con eventuale posta che proviene da un server che ha già effettuato un test con il medesimo DSPAM o con posta che qualche spammer ha preparato appositamente per superare il DSPAM training, dobbiamo creare il file header_checks nella directoiry /etc/postfix ed all’interno del file inseriamo questa riga:

/^(X-DSPAM-.*)/      IGNORE

Poi, dobbiamo inserire questa riga nel file main.cf:

nested_header_checks =

Non ci resta che inserire alcune righe nel file di configurazione di Clamav antivirus. In particolare, nel file /etc/clamav/clamd.conf va inserito quanto segue:

TCPSocket 3310
TCPAddr 127.0.0.1

Adesso riavviamo tutti i server configurati:

# /etc/init.d/postfix restart
# /etc/init.d/clamav-daemon restart
# /etc/init.d/dspam restart

Adesso il server è funzionante con attivi l’antispam e l’antivirus su tutti i messaggi in ingresso

  • Configurazione di un relay SMTP per inviare la posta

L’attuale configurazione del server non permette di inviare correttamente la posta. Ciò non per un problema o per una limitazione di Postifx, ma perchè i providers dei servizi di posta elettronica non accettano le mail in arrivo da indirizzi IP e/o domini che sono per lo più sconosciuti. Tanto più che nell’ottenere assegnato l’indirizzo IP dal nostro provider può capitare di ottenere un IP inserito in qualche blacklist a causa del fatto che il precedente “possessore” di quell’indirizzo magari aveva un virus che inviava posta elettronica di SPAM a mezzo mondo. Per ovviare a tale problema la soluzione è davvero semplice e consiste nella configurazione della direttiva SMTP relay in Postifx. Vediamo come si procede…

Innanzitutto apriamo i file main.cf e rechiamoci dove troviamo la riga relayhost=. A questo punto inseriamo quanto segue:

relayhost= <dominio_del_vostro_provider_email> #es.: out.alice.it
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps=hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options =

A questo punto dobbiamo creare il file /etc/postfix/sasl_passwd ed al suo interno inserire i dati di autenticazione del provider inserito in relayhost in questo modo:

dominio_del_vostro_provider_email                 nome_utente:password

Dopo aver creato ed editato il file come sopra, per ragioni di sicurezza modifichiamo i permessi:

# chown root:root /etc/postfix/sasl_passwd
# chmod 600 /etc/postfix/sasl_passwd

Infine lanciate questo comando:

# postmap hash:/etc/postfix/sasl_passwd

e riavviate postfix:

# /etc/init.d/postfix restart

Tutto quello che abbiamo visto vi permetterà di usare il vostro nuovo server SMTP anche per inviare la posta. Sarà Postfix che, anzichè inviare direttamente al destinatario la mail, farà in modo che quest’ultima sia recapitata a mezzo del vostro provider mail preferito!

Voglio solo aggiungere che la configurazione del relay che vi ho proposto non funzionerà con i provider che fanno uso di autenticazione tramite TLS/SSL. Affinchè si possa far funzionare il relaying anche con auth SSL si dovranno usare le seguenti direttive al posto delle precedenti in main.cf:

relayhost = <dominio_del_vostro_provider_email>
smtp_sasl_auth_enable = yes
smtp_tls_security_level = may
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_cname_overrides_servername=no
smtp_sasl_security_options =
smtp_sasl_mechanism_filter = plain,login

Da questo momento in poi sarete ingrado di usare anche un relay host con supporto SSL 😉

Nella prossima parte di questa guida vedremo in che modo configurare fetchmai per il download della posta dai vostri attuali indirizzi e-mail al fine di redistribuirtli sul server in locale e poi procederemo con l’installazione del webmail client RoundCube più qualche altra piccola sorpresina 🙂

Ti è piaciuto questo articolo? Abbonati alla newslettere per ricevere i nuovi articoli inseriti nel sito:


 

3 Responses

  1. […] [Guida]Realizziamo un server a basso costo per mail, torrent e condivisione files (Parte 3) Author: admin | Categoria Blog Personale Nella “parte 3″ di questa serie di articoli-guida, vi mostrerò in che modo procedere con l’installazione e la configurazione di un completo server di posta elettronica con supporto SSL, autenticazione SASL, antivirus ed antispam. In particolare, installeremo Postfix, Dovecot, DSpam e Clamav. Solo successivamente, in una prossima parte della guida,  procederemo con l’installazione e la […] Vai alla Fonte […]

  2. […] la lettura con la fonte di questo articolo: [Guida]Realizziamo un server a basso costo per mail, torrent e condivisione files (Parte 3) Articoli correlati: [Guida]Realizziamo un server a basso costo per mail, torrent e […]

  3. Ayrie says:

    I totally agree. Ubuntu’s bnnadirg has been brilliant. The first two things you experienced, the login screen and the GNOME login sound both completely reset your expectations of using a. Linux and b. technology. This screen could be any old OS. And I would also treat the Ubuntu logo with a little more respect too it contains a representative meaning which will be lost on anyone who sees it in this context for the first time. For all that it still good.

Comments

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.