Installazione Ubuntu Server 10.04 LTS come Mail Server
Questa guida descrive come installare e configurare un mail server in ambiente Linux utilizzando la distribuzione Ubuntu Server 10.04 LTS (Long Time Service) e i seguenti pacchetti software per offrire i vari servizi necessari allo scopo:
- Postfix: Server STMP (MTA)
- Dovecot: Server IMAP e POP3
- Mailscanner: servizio anti-spam (spamassassin) e anti-virus (ClamAV)
- Apache e SquirrelMail: servizio di WebMail
Questo tipo di configurazione permetterà la gestione di più domini e più account virtuali e si suddivide nei seguenti articoli:
Parte 1 – Installazione Mail server
Parte 2 – Configurazione e personalizzazione dei vari servizi di posta elettronica
Parte 3 – Creazione utenti e account e-mail
Parte 4 – Possibili problematiche e approfondimenti
Apendice A – Utilizzo di porte SMTP non starndard
Apendice B – Gestione risposte automatiche con l’auto-responder vacation
Installazione Ubuntu Server 10.04 LTS come Mail Server
Scaricare l’immagine ISO di Ubuntu Server 10.04 LTS e masterizzarla su CD quindi avviare con il CD inserito il PC che fungerà da server.
Seguire i passi necessari fornendo le seguenti informazioni quando richieste:
Choose language: Italia
Configurazione tastiera: Italiana
Nome host: <indicare il nome che volete attribuire alla vostra macchina> (esempio: mioserver)
Partizionamento dischi: Guidato – usa l’intero disco e imposta LVM (default)
dopo varie conferme esegue la formattazione del disco.
Creazione utente principale:
<nome-utente> (esempio: admin)
<password>
cifrare home directory: NO
Proxy HTTP: se non si ha un proxy premere Invio lasciando vuota la richiesta
Modalità di installazione degli aggiornamenti: Nessun aggiornamento automatico (default)
Quando chiede i servizi da installare scegliere i seguenti:
- LAMP Server (Linux, Apache, MySQL, PHP)
- Mail Server
- OpenSSH Server (servirà per accedere ed amministrare il server in remoto via SSH)
Proseguendo vengono richieste le seguenti informazioni per i vari servizi:
- LAMP Server:
- password per utente root di MySQL
- Mail Server Postfix
- Tipo installazione: Sito internet (ovvero un server collegato ad internet che invia e riceve posta direttamente senza passare da un relay server)
- Nome Mail Server: esempio mioserver.miodominio.local
- installare boot-loader GRUB: SI
Terminata l’installazione risultano già attivi e funzionanti i servizi SMTP, POP3 ed IMAP offerti da Postfix e Dovecot.
Inoltre è già possibile collegarsi in ssh.
Attribuire un IP statico alla macchina modificando il file interfaces. L’IP sarà pubblico se si vuole esporre il server direttamente in internet, altrimenti si può dare un IP privato della LAN (scelta che io preferisco) che poi va nattato con l’IP pubblico sul firewall.
vim /etc/network/interfaces
Al posto di “iface eth0 inet dhcp” inserire le seguenti righe (ovviamente con gli IP della vostra LAN, quelli indicati sono solo ad esempio):
iface eth0 inet static address 192.168.1.xxx netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.1.1
Quindi riavviare con il comando:
sudo shutdown -r 0
Mailscanner, Spamassassin e ClamAV
Mailscanner offre il servizio di filtro anti-spam e anti-virus utilizzando due capisaldi di Linux e del mondo open source: Spamassassin e ClamAV
NB: in realtà, come anti-virus, Mailscanner può utilizzare il motore di quasi tutti i principali anti-virus presenti in commercio come ad esempio TrendMicro, F-Prot, F-Secure, Kaspersky, Avast, …
Installare Mailscanner con il seguente comando:
sudo apt-get install mailscanner
verranno installati automaticamente anche i pacchetti relativi a clamav e spamassassin.
ATTENZIONE: Se al termine dell’installazione appare il seguente messaggio indicante che il demone di clamav non è stato avviato perchè non trova le firme (signatures):
Clamav signatures not found in /var/lib/clamav Please retrieve them using freshclam or install the clamav-data package Then run '/etc/init.d/clamav-daemon start'
riavviare il servizio freshclam con il comando
sudo /etc/init.d/clamav-freshclam restart
In questo modo vengono scaricati gli aggiornamenti. Quindi è possibile riavviare il demone di clamav col comando:
sudo /etc/init.d/clamav-deamon restart
SquirrelMail
SquirrelMail offre il servizio di webmail. Installarlo con il comando:
sudo apt-get install squirrelmail
Il servizio si appoggerà sul web server apache che risulta già installato avendo scelto anche l’opzione LAMP Server in fase di installazione di Ubuntu Server.
A questo punto bisogna configurare e personalizzare i vari servizi di posta elettronica.
Mail Server con Ubuntu, Postfix, Dovecot e Mailscanner – parte 2
Postfix
Postfix si preoccupa di fornire il servizio di MTA con il protocollo SMTP.
File /etc/postfix/main.cf
E’ il file principale di postfix. Vanno fatte le seguenti modifiche:
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.1.0/24
permette di indicare le reti da cui accettare il relay delle e-mail (solitamente la propria LAN).
commentare la seguente riga (anteponendo il carattere cancelletto #)
# mailbox_command = procmail -a "$EXTENSION"
ed aggiungere
home_mailbox = Maildir/
indica di registrare ed organizzare le e-mail con il sistema Maildir invece che MBOX (che è il default).
Maildir e MBOX sono i due metodi possibili per conservare le e-mail. MBOX conserva tutte le mail di un utente in un unico file (/var/spool/mail/<nomeutente>) mentre Maildir genera un file per ogni e-mail nella home dell’utente (/home/<utente>/Maildir/). Ci sono anche altre differenze ma fondamentalmente questa è quella che mi fa preferire Maildir evitandomi il rischio che danneggiando il mega file di MBOX perdo tutte le e-mail. Inoltre, per lo stesso motivo, è enormemente più vantaggio per backup incrementali della posta.
header_checks = regexp:/etc/postfix/header_checks
Fa in modo che Mailscanner esamini ogni e-mail prima che venga recapitata al destinatario.
Il file indicato in questa riga deve essere creato e verrà descritto più avanti.
Per gestire più domini aggiungere le seguenti righe:
virtual_alias_domains = dominio1.com, dominioo2.it, …. virtual_alias_maps = hash:/etc/postfix/virtual sender_canonical_maps = hash:/etc/postfix/sender_canonical
NB: in virtual_alias_domains bisogna elencare tutti i domini da gestire
I files virtual e sender_canonical sono da creare e verranno descritti più avanti nella sezione dedicata alla creazione degli utenti.
Per dare la possibilità agli utenti remoti di autenticarsi con SASL, aggiungere le seguenti righe:
smtpd_sasl_auth_enable = yes smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination smtpd_sasl_authenticated_header = yes smtpd_sasl_security_options = noanonymous broken_sasl_auth_clients = yes smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth-client
Ci sono moltissime altre opzioni non necessarie al funzionamento ma che possono essere utili a seconda della esigenze. Ad esempio:
message_size_limit = 102400000
imposta la dimensione massima di un allegato a 100 MB. Se non specificata, il default è 10 MB.
smtpd_recipient_limit = 5000
imposta il numero massimo di indirizzi di destinazione di una e-mail. Il default è 1000. Ha senso aumentarlo solo se il server può essere utilizzato anche per servizi di newsletter.
File /etc/postfix/header_checks
Creare /etc/postfix/header_checks inserendoci la seguente unica riga:
/^Received:/ HOLD
Serve per “depositare” le e-mail in ingresso nella directory “hold” (/var/spool/postfix/hold) in modo che possano essere controllate da mailscanner prima di essere recapitate.
Il riferimento a questo file, come già scritto in precedenza, viene indicato nel file di configurazione di Postfix (main.cf) con l’istruzione:
header_checks = regexp:/etc/postfix/header_checks
Dovecot
Dovecot è il pacchetto che si occupa di fornire il servizio POP3 ed IMAP.
File /etc/dovecot/dovecot.conf
Questo file contiene tutti i parametri di configurazione del servizio. Di seguito un elenco di alcuni parametri che può essere utile modificare:
disable_plaintext_auth = no
impostarlo a “no” per permettere il login da remoto con autenticazione senza SSL/TLS. Il default è “yes”, ovvero accetta solo login in SSL.
log_path = /var/log/dovecot.log info_log_path = /var/log/dovecot-info.log
indicano il percorso dei files dove registrare i log. Di default non è specificato niente quindi finisce tutto nel log di sistema (/var/log/syslog)
ssl = yes
indica se attivare il supporto a SSL/TLS. I valori possibili sono yes/no/required
mail_location = maildir:~/Maildir
fa si che i massaggi e-mail vengano archiviati con il sistema Maildir (invece di MBOX) nella directory Maildir nella home directory dell’utente.
maildir_copy_with_hardlinks = yes
fa si che la copia di una mail avvenga con gli hardlinks se possibile. Può migliorare le prestazioni.
Eliminare il cancelletto (#) di commento alle seguenti istruzioni:
socket listen { client {
ed aggiungere le seguenti istruzioni:
path = /var/spool/postfix/private/auth-client mode = 0660 user = postfix group = postfix } }
Mailscanner
File /etc/default/mailscanner
Editare questo file togliendo il cancelletto di commento (#) dalla seguente istruzione:
run_mailscanner=1
Questa modifica è fondamentale per attivare il servizio di Mailscanner.
File /etc/MailScanner/MailScanner.conf
E’ il file principale di Mailscanner a cui è possibile fare le seguenti personalizzazioni:
%org-name% = <nome-breve-mia-organizzazione>
associare a questo parametro un breve nome che identifichi la tua organizzazione. E’ utilizzato nella “costruzione” degli header X-Mailscanner
%org-long-name% = <nome-mia-organizzazione>
a differenza del precedente parametro qua va associata la descrizione estesa dell’organizzazione o azienda che fornisce il servizio. Questa informazione viene inserita automaticamente nella firma alla fine di ogni messaggio report, che sono messaggio inviati automaticamente dal server per informare di qualche azione compiuta coma ad esempio l’aver eliminato un file perchè trovato infetto da virus o perchè di un tipo non ammesso (esempio un allegato eseguibile .exe).
%web-site% = www.mia-organizzazione.com
associare l’indirizzo web dell’organizzazione. Anche questa informazione può essere inserita automaticamente sulla firma alla fine di ogni messaggio report.
%report-dir% = /etc/MailScanner/reports/it
modificare questa impostazione se si desidera che i vari report siano in lingua italiana. Di default sono nella directory etc/MailScanner/reports/en che ovviamente contiene i report in inglese.
I report si riferiscono a qualunque tipo messaggio automatico che il server invia per segnalare, ad esempio, che un allegato è stato rimosso perchè il suo nome non rispettava alcune regole previste o perchè è risultato infetto al controllo anti-virus o altro.
Max Children = 10
permette di indicare quanti processi di mailscanner possono essere attivi contemporaneamente. Il default è 1. In pratica quando arriva un e-mail, mailscanner attiva un processo per analizzarla. Se le e-mail sono molte e Max Children = 1 come di default, ogni e-mail resta in coda fino a quando non è terminata l’analisi della mail precedente. In caso di un forte traffico (dovuto anche allo spam) si rischia che le e-mail in coda diventino troppe causando un disservizio. Per questo, se la potenza del server lo permette, conviene aumentare questo valore in modo che più e-mail vengano analizzate contemporaneamente.
Run As User = postfix Run As Group = postfix
fa in modo che mailscanner lavori con utente e gruppo “postfix”.
Incoming Queue Dir = /var/spool/postfix/hold
indica il percorso della coda dove mailscanner trova le e-mail ricevute da elaborare.
Outgoing Queue Dir = /var/spool/postfix/incoming
indica il percorso della coda dove mailscanner deve depositare le e-mail controllate.
MTA = postfix
indica il servizio di gestione delle e-mail che viene utilizzato (MTA=Mail Transfer Agent). Il default è “exim”
Scan Messages = yes
indica che ogni messaggio e-mail dev’essere controllato. E’ anche possibile abbinare un file di regole per definire che i messaggi “provenienti da” o “destinati a” non devono essere controllati. Ad esempio nel caso in cui si voglia che i messaggi provenienti dalla LAN o da qualche specifico server sicuro non vengano monitorati per non perdere tempo e non appesantire il server. Per farlo basta specificare il percorso del file di regole al posto del valore “yes” (esempio: %rules-dir%/scan.messages.rules)
Maximum Archive Depth = 2
indica il massimo livello di analisi dei file compressi. In pratica con questa configurazione vengono analizzati i file fino al secondo livello di compressione. Il default è 3. Per non analizzare i file compressi impostare 0
Virus Scanning = yes
indica di verificare se il messaggio contiene virus. Anche per questo parametro è possibile personalizzare il comportamento in base ad un file di regole (Virus Scanning = %rules-dir%/virus.scanning.rules)
Virus Scanners = clamav
indica il motore anti-virus da utilizzare. In questo caso ClamAV. Come già anticipato è possibile utilizzare anche altri anti-virus.
Virus Scanner Timeout = 120
indica il tempo massimo in secondi concesso all’anti-virus per analizzare il messaggio.
Dangerous Content Scanning = yes
indica di verificare se il messaggio ha contenuti potenzialmente pericolosi come ad esempio tentativi di frode (phishing) o codice HTML pericoloso. Anche per questo parametro è possibile personalizzare il comportamento in base ad un file di regole (Dangerous Content Scanning = %rules-dir%/content.rules)
Filename Rules = %etc-dir%/filename.rules.conf
indica il file contenete le regole attraverso le quali esaminare il nome dei files allegati ed eventualmente eliminarli se non le rispettano. Ad esempio può essere utile cancellare eventuali file eseguibili allegati con estensione “.exe” o “.com”
Filetype Rules = %etc-dir%/filetype.rules.conf
indica il file contenete le regole attraverso le quali esaminare i tipi di files allegati ed eventualmente eliminarli se non le rispettano. Ad esempio può essere utile cancellare file eseguibili, di registro o altro.
Include Scanner Name In Reports = no
indica se includere nei report il nome motore anti-virus utilizzato, nel caso di questa configurazione sarebbe ClamAV. Può essere utile se si utilizzano più motori anti-virus. Usandone solo uno è inutile indicarlo.
Always Include SpamAssassin Report = yes
indica se includere lo Spam Report negli header del messaggio anche se non risulta essere SPAM. Esempio se includere negli header i punteggi che il messaggio ha ottenuto:
X-MailScanner-SpamCheck: non spam, SpamAssassin (not cached, punteggio=0.5, necessario 5, EXTRA_MPART_TYPE 0.40, HTML_MESSAGE 0.10).
Personalmente trovo comodo che venga sempre aggiunto perchè permette di vedere quali considerazioni sono state fatte su un messaggio passato come normale ma che avrebbe dovuto essere considerato spam.
Notify Senders Of Blocked Filenames Or Filetypes = no
indica se inviare al mittente un avviso nel caso in cui un suo allegato sia stato bloccato (quindi non recapitato) perchè non rispettava le regole richieste relative al nome o al tipo di file (vedi Filename Rules e Filetype Rules)
Preferisco che sia il destinatario a decidere se avvisare il mittente in quanto a volte è spam con allegati strani e rispondergli non farebbe che confermare che il nostro indirizzo e-mail esiste veramente.
Notify Senders Of Other Blocked Content = no
indica se inviare al mittente un avviso nel caso in cui la sua e-mail sia stata bloccata perchè si ritiene contenga contenuti pericolosi (vedi Dangerous Content Scanning). Come già spiegato in precedenza, preferisco evitare risposte automatiche.
Phishing Modify Subject = start Phishing Subject Text = {Fraud?}
indicano se mailscanner deve modificare il soggetto dell’e-mail se viene rilevato un tentativo di truffa. In questo caso, il valore start significa di modificare il soggetto aggiungendo all’inizio il valore espresso nel parametro Phishing Subject Text, ovvero “{Fraud?}”
Spam Modify Subject = start Spam Subject Text = {Spam?}
indicano se mailscanner deve modificare il soggetto dell’e-mail quando viene considerata SPAM. In questo caso, il valore start significa di modificare il soggetto aggiungendo all’inizio il valore espresso nel parametro Spam Subject Text , ovvero “{Spam?}”
Warning Is Attachment = no
indica se specificare il messaggio di avviso (warning) in caso di rimozione di un allegato per vari motivi come allegato o all’interno del corpo del messaggio. Con il valore “no” viene specificato nel corpo della mail.
Is Definitely Not Spam = %rules-dir%/spam.whitelist.rules
indica il file nel quale elencare gli indirizzi mittenti affidabili le cui e-mail NON devono essere soggette a controllo e quindi devono passare sempre (White List). Tale file è descritto meglio più avanti.
Is Definitely Spam = %rules-dir%/spam.blacklist.rules
indica il file nel quale elencare tutti gli indirizzi mittenti da considerare sempre come SPAM (Black List). Tale file è descritto meglio più avanti.
Definite Spam Is High Scoring = yes
indica di considerare lo spam ricevuto dalla black list come spam definitivo e certo (High Scoring) sul quale applicare le azioni definite per quel tipo di spam nel parametro “High Scoring Spam Actions” descritto più avanti
Ignore Spam Whitelist If Recipients Exceed = 40
indica di ignorare la white list se l’e-mail contiene più di 40 destinatari. In questo caso, anche se il mittente è in white list, il messaggio viene controllato da spamassassin e se fosse considerato come spam vengono applicate le azioni previste.
Max Spam Check Size = 1000k Max SpamAssassin Size = 1000k
fanno in modo che messaggi di dimensione superiore ai 1000 Kb non vengano esaminati dall’anti-spam perchè è assai raro che uno spammer invii messaggi così grossi visto che ne invia a milioni. ATTENZIONE: questo parametro NON influisce sul controllo anti-virus che viene comunque effettuato indipendentemente dalla dimensione del messaggio.
Required SpamAssassin Score = 5
indica il punteggio minimo oltre il quale l’e-mail viene considerata SPAM. Se il punteggio non supera quello indicato nel parametro High SpamAssassin Score, allora è considerato come PROBABILE SPAM.
High SpamAssassin Score = 12
indica il punteggio minimo oltre il quale l’e-mail viene considerata SPAM DEFINITIVO O CERTO (High Scoring Spam).
SpamAssassin Auto Whitelist = no
disabilita le funzioni di spamassassin che permettono di generare white-list automatiche.
Spam Actions = store forward guardia@mio-server.mio-domino.local attachment
in questo parametro vengono specificate le azioni da intraprendere per ogni messaggio considerato come spam “probabile”, ovvero tutti quei messaggi che ottengono un punteggio compreso tra i valori indicati nei parametri “Required SpamAssassin Score” e “High SpamAssassin Score ”.
Nell’esempio sopra indicato l’e-mail viene sempre inoltrata come allegato ad un indirizzo e-mail specifico. Questo prevede che una persona verifichi costantemente questo account per verificare che non sia un falso positivo. Inoltre prevede anche la creazione di un account dedicato a ricevere tutti lo spam probabile eseguendo i seguenti comandi:
sudo useradd -m -s /bin/false guardia
sudo passwd guardia
per indicare la password
Ovviamente è anche possibile far eseguire altre azioni tra cui la cancellazione del messaggio (sconsigliata per uno spam probabile) o l’inoltro del messaggio al reale destinatario modificando alcuni header del messaggio affinchè il client dell’utente possa riconoscerlo ed evidenziarlo come probabile SPAM.
High Scoring Spam Actions = delete
stesso discorso del parametro “Spam Actions” ma riferito ad e-mail considerate spam sicuro, ovvero e-mail che hanno ottenuto un punteggio uguale o superiore a quello indicato nel parametro High SpamAssassin Score .
In questo caso il messaggio viene cancellato definitivamente senza possibilità di recupero.
Log Spam = yes
indica se inserire nel log anche i messaggi considerati spam. Il default è “NO” ma personalmente preferisco loggarli perchè aiuta in caso di problemi.
File /etc/MailScanner/rules/spam.blacklist.rules
Questo file, a cui si fa riferimento nel parametro “Is Definitely Spam” del file di configurazione principale Mailscanner.cf, va creato inserendo l’elenco dei mittenti da considerare sempre come spammer (black list).
Le e-mail ricevute da questi mittenti saltano tutti i controlli anti-spam standard perchè vengono considerate immediatamente come spam sicuro o probabile in base al valore attribuito al parametro Definite Spam Is High Scoring: yes o no.
Ad esse vengono applicate le azioni definite nel parametro “High Scoring Spam Actions“ se considerate spam sicuro o nel parametro “Spam Actions“ se considerate spam probabile.
I mittenti possono essere inseriti come indirizzo e-mail, dominio mittente o anche come indirizzo IP. Esempio:
From: 130.246.xxx.xxx yes From: ginetto@dominio-cattivo.com yes From: *@dominio-spammer.com yes
File /etc/MailScanner/rules/spam.whitelist.rules
Questo file, a cui si fa riferimento nel parametro “Is Definitely Not Spam” del file di configurazione principale Mailscanner.cf, va creato inserendo l’elenco dei mittenti da considerare sempre come affidabili e sicuri (white list).
Le e-mail ricevute da questi mittenti saltano tutti i controlli anti-spam standard perchè vengono considerate immediatamente come affidabili e quindi inoltrate ai destinatari.
ATTENZIONE: per motivi di sicurezza questo parametro non influisce sul controllo anti-virus che viene eseguito anche alle e-mail provenienti da mittenti presenti nella white-list.
Anche in questo caso i mittenti possono essere inseriti come indirizzo e-mail, dominio mittente o anche come indirizzo IP. Esempio:
From: 127.0.0.1 yes From: 192.168.xxx. yes # la mia LAN From: ginetto@dominio-buono.com yes From: *@dominio-buonissimo.it yes
File /etc/MailScanner/spam.assassin.prefs.conf
Questo è il file con le preferenze di utilizzo di spamassassin da parte di Mailscanner. In questo file è possibile modificare alcuni comportamenti e/o aggiungere nuove regole per riconoscere lo spam.
Di seguito alcuni siggerimenti o esempi:
bayes_ignore_header unconfigured-debian-site-MailScanner bayes_ignore_header unconfigured-debian-site-MailScanner-SpamCheck bayes_ignore_header unconfigured-debian-site-MailScanner-SpamScore bayes_ignore_header unconfigured-debian-site-MailScanner-Information
sostituire la parte evidenziata con quanto indicato nel parametro %org-name% del file di configurazione Mailscanner.conf. Questo fa si che i filtri bayesiani ignorino gli header delle e-mail sopra indicati.
Spamassassin effettua controlli su black-list internazionali (RBL checks). Questi controlli sono abilitati di default ma impegnano CPU e banda quindi è possibile disabilitarli togliendo il commento (#) al parametro skip_rbl_checks 1.
Personalmente preferisco mantenere questo controllo e consiglio anche di abilitare l’opzione
score RCVD_IN_BL_SPAMCOP_NET 4
che assegna il punteggio 4 alle e-mail ricevute da mittenti presenti nelle black-list gratuite di spamcop.net. Tale punteggio verrà sommato ad eventuali altri andando a formare il punteggio globale assegnato alla mail e poi confrontato con i valori indicati in Mailscanner.conf per determinare se l’e-mail è affidabile o spam (probabile o sicuro).
E’ possibile anche modificare il punteggio assegnato di default di una certa caratteristica semplicemente indicando “score <caratteristica> <nuovo-punteggio>, esempio:
score FORGED_YAHOO_RCVD 1.0
Infine è possibile aggiungere nuove regole di valutazione della mail basate sull’analisi del contenuto degli header (soggetto, mittente, …) o del corpo della mail. Ogni nuova regola deve specificare quale tipo di contenuto deve essere analizzato, cosa cercare nel contenuto e possibilmente una descrizione dell’obbiettivo della regola. Di seguito alcuni esempi:
body OROLOGI /(?:Rolex|Cartier|gioielli senza fine|Quality watches|holiday gift/gioielli.*orologi|vendita.*orologi|commercio.*orologi|\bJewe[a-zA-Z]+ry.*\b|luxury watch)/i score OROLOGI 4.0 describe OROLOGI Proposte di vendita di orologi di marca (Rolex, ...)
in questa regola, chiamata “OROLOGI” viene analizzato il contenuto del corpo dell’e-mail (body) cercando la presenza di almeno uno dei contenuti elencati tra parentesi.
In caso di esito positivo gli viene assegnato il punteggio 4.
Notare ogni elemento dell’elenco è separato da uno slash (/) e può avere le seguenti caratteristiche:
- essere una parola o una frase ben precisa
- essere una porzione di parola o frase con una parte variabile utilizzando il carattere jolly “.*”. Nell’esempio, indicando “commercio.*orologi”, risulteranno positive tutte le e-mail che contengono frasi tipo: “… commercio di orologi …” oppure “… commercio di preziosi orologi …” e via dicendo.
- utilizzare espressioni regolari
Infine conviene terminare l’elenco con l’opzione “/i” per indicare che il controllo NON deve essere case sensitive, ovvero ignorare differenze tra MAIUSCOLO e minuscolo.
header SUBJ_OROLOGI Subject =~ /(?:Rolex|Cartier|orologi.*gioielli|\bJewe[a-zA-Z]+ry.*\b|luxury watch/i score SUBJ_OROLOGI 3.0 describe SUBJ_OROLOGI Proposte di vendita di orologi di marca (Rolex, ...)
questa regola è simile alla precedente ma agisce sull’header Subject, ovvero sull’oggetto dell’e-mail.
header FROM_SPAMMER From =~ /(?:\bcasino\b|Compra Ora|Orologi|\bExclusive Watch\b|\bFree money\b)/i score FROM_SPAMMER 6.0 describe FROM_SPAMMER Mittente indesiderato (probabile Spammer)
Infine questa regola esamina l’header From, ovvero il mittente.
Squirrelmail (webmail)
Per offrire il servizio di webmail con Squirrelmail è necessario modificare uno dei file di configurazione del web server Apache (/etc/apache2/sites-enabled/000-default) indicando la giusta Document Root:
Modificare le seguenti righe:
ServerAdmin webmaster@miodominio.com ServerName mail.miodominio.com DocumentRoot /usr/share/squirrelmail
Attivazione modifiche
Per rendere effettive le modifiche alla configurazione vanno riavviati tutti i servizi interessati con i seguenti comandi:
sudo /etc/init.d/postfix restart sudo /etc/init.d/dovecot restart sudo /etc/init.d/mailscanner restart sudo /etc/init.d/apache2 restart
A questo punto bisogna creare gli account e-mail da gestire sul server.
Mail Server con Ubuntu, Postfix, Dovecot e Mailscanner – parte 3
Terminata la configurazione di tutti i servizi bisogna finalmente creare e configurate tutti gli account utente ed i loro eventuali alias.
Creazione Utenti
Creare tutti gli account utente con il seguente comando:
sudo useradd -m -s /bin/false <utente>
L’opzione -m indica di creare automaticamente la home directory (/home/utente).
L’opzione -s /bin/false indica che l’utente NON può accedere alla shell di sistema e quindi ne aumenta la sicurezza (il default è /bin/bash). E’ importante assegnare agli utenti /bin/false perchè chiunque venisse in possesso di quelle credenziali non può “loggarsi” e quindi accedere al sistema.
ATTENZIONE: Se il server offrisse anche il servizio FTP e qualche utente avesse la necessità di disporre anche di tale servizio oltre a quello della posta, allora conviene utilizzare /sbin/nologin. Cercare di non lasciar mai /bin/bash perchè permette l’accesso completo.
Per ogni account va specificata una password con il comando:
passwd <nome-utente>
Abbinamento utenti e indirizzi virtuali e alias
File /etc/postfix/virtual
Un utente può essere abbinato a più indirizzi e-mail di uno o più domini gestiti dal server (tra quelli specificati in virtual_alias_domains del file main.cf di Postfix).
L’abbinamento tra indirizzi e-mail e l’utente va fatto nel file /etc/postfix/virtual (specificato in virtual_alias_maps del file main.cf di Postfix).
Esempio:
ginetto.cognome@dominio1.com ginetto utente1@dominio1.com utente1 amministrazione@dominio1.com utente1 utente2@dominio2.it utente2 amministrazione@dominio2.it utente2 export@dominio1.com utente3 sales@dominio1.com utente3 export@dominio2.it utente4 sales@dominio2.it utente4 .......
Ogni volta che questo file viene modificato bisogna aggiornare il file virtual.db con il comando:
sudo postmap /etc/postfix/virtual
File /etc/postfix/sender_canonical
Per fare in modo che quando “utente2” invia un’e-mail da webmail o dal server senza utilizzare un client specifico NON esca con utente2@dominio.local bensì, ad esempio, con amministrazione@dominio2.it è necessario editare il file /etc/postfix/sender_canonical indicando per ogni utente l’indirizzo e-mail di default con cui esce.
Esempio:
utente2 amministrazione@dominio2.it utente3 sales@dominio1.com .......
Ogni volta che questo file viene modificato bisogna aggiornare il file sender_canonical.db con il comando:
sudo postmap /etc/postfix/sender_canonical
Per finire, qualche approfondimento su alcuni concetti o problematiche che si possono incontrare.
Mail Server con Ubuntu, Postfix, Dovecot e Mailscanner – parte 4
Per concludere, conviene dedicare un piccolo spazio a descrivere eventuali problematiche che si possono incontrare e ad approfondire alcuni concetti
Possibili problematiche o anomalie
Apache e Squirrelmail
Se riavviando apache viene dato il messaggio di warning
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName ... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
modificare il file /etc/apache2/apache2.conf
aggiungendo in fondo la seguente riga:
ServerName localhost
quindi riavviare il servizio:
sudo /etc/init.d/apache2 restart
Mailscanner
Se nel log (/var/log/mail.info) si nota che per ogni e-mail da sempre la seguente segnalazione:
File checker failed with real error: Insecure dependency in exec while running with -T switch at /usr/share/MailScanner//MailScanner/SweepOther.pm line 374.
bisogna avviare mailscanner con utente “postfix”, quindi va modificato il file /etc/init.d/mailscanner nel seguente modo:
sostituire la riga:
start-stop-daemon --start --quiet --nicelevel $run_nice --exec $DAEMON --name $NAME -- $DAEMON_ARGS \
con:
start-stop-daemon --start --quiet --nicelevel $run_nice --chuid postfix --exec $DAEMON --name $NAME -- $DAEMON_ARGS \
Inoltre conviene aggiungere l’utente clamav al gruppo di postfix con il comando:
sudo adduser clamav postfix
quindi riavviare mailscanner:
sudo /etc/init.d/mailscanner restart
Approfondimenti
DNS
Per rendere pubblico il server è necessario avere un IP pubblico/statico a cui abbinarlo, quindi vanno fatte le seguenti modifiche ai DNS:
- record MX: sul DNS di chi ha in gestione i domini gestiti dal mail server (paramentro virtual_alias_domains del file di configurazione di postfix main.cf) bisogna configurare il record MX per creare l’associazione tra IP pubblico e nome del mail server (esempio: mail.miodominio.com)
- Record PTR: sul DNS dell’ISP che fornisce l’IP pubblico vanno configurate le stesse informazioni per il record PTR. A differenza del record MX, questo non è indispensabile per il funzionamento del server a livello pubblico ma è fortemente consigliato perchè serve a rispondere correttamente alle richieste di Reverse DNS fatte da molti SMTP server per capire se l’host che gli sta inviando la posta è veramente quello giusto. Il rischio è essere considerati spammer.
File di Log
I principali file di log si trovano in /var/log/ e si possono visualizzare con il comando “less” oppure in tempo reale col comando “tail”. Esempio:
tail -f /var/log/syslog
Sistema
syslog: in esso viene registrato anche il traffico SMTP già registrato in mail.info
SMTP
mail.warn, mail.err e mail.info
POP3
dovecot.log, dovecot-info.log
ClamAV (anti-Virus)
Sono in /var/log/clamav/.
- clamav.log
- freshclam.log
Comandi utili
mailq
visualizza la coda di e-mail in attesa di essere inoltrate ai rispettivi destinatari.
Per provare a forzare la riconsegna dei messaggi in coda utilizzare l’opzione “-q”:
sudo mailq -q
postsuper
Se per qualche motivo si ha bisogno di svuotare la coda da tutti messaggi in uscita basta eseguire il comando
sudo postsuper -d ALL
se, invece, si vuole cancellare una singola mail in coda:
sudo postsuper -t <ID messaggio>
esempio:
sudo postsuper -d E0FE7181D9F
dove l’ID-messaggio lo si trova con il comando mailq
userdel
Per eliminare un account di posta è sufficiente eliminare l’utente con il seguente comando:
userdel -r utente
l’opzione “-r” fa in modo di eliminare completamente anche l’home directory dell’utente.
Articolo tratto dal sito http://www.sefi.it/linux/mail-server-ubuntu-postfix-dovecot-mailscanner-parte-1