Monitoriamo il Sistema: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
mNessun oggetto della modifica
mNessun oggetto della modifica
Riga 1: Riga 1:
==Introduzione==
==Introduzione==
Con questa guida intendo spiegare all'utente debian come configurare un server mail basato su Postfix (http://www.postfix.org).
Postfix un MTA abbastanza sicuro e di recente sviluppo, molto semplice da usare e per alcuni considerato il successore di sendmail per altro troppo complicato da gestire e con noti problemi di sicurezza.


Il Wake On Lan � una funzione molto utile che permette di accendere il proprio computer a distanza dall'interno della propria rete locale. Molte schede
==Installazione di Postfix==
di rete, soprattutto gli ultimi chip integrati, supportano questa caratteristica che in alcuni casi si pu� rivelare davvero molto utile. Immaginate ad esempio di avere due pc in due stanze/uffici diverse dello stesso piano o perch� no, proprio in due piani diversi e di essere impegnati sulla prima postazione.. vi ricordate per� che avete bisogno di andare a controllare un documento che sta sull'altro computer e pensate di aprire vnc ma purtroppo la seconda postazione e' ancora spenta quindi non vi potete collegare.. a questo punto solo una cosa vi pu� aiutare: il '''MagicPacket(tm)'''!
Prima di tutto abbiamo bisogno di due demoni uno per la gestione del protocollo pop3 e uno per l'imap. Io consiglio popa3d e imapd


<pre>
# apt-get update
# apt-get install popa3d uw-imapd
</pre>
fatto questo in /etc/inetd.conf verranno aggiunti i servizi per il pop3 e l'imapd.
Procediamo all'installazione dell'MTA vero e proprio


==Software necessario==
<pre>
# apt-get install postfix
</pre>


Avremmo bisogno di due programmi:
==Configurazione base==
* ethtool
Quasi tutte le opzioni di configurazione di Postfix si trovano nel file /etc/postfix/main.cf
* etherwake


Per installarli � sufficiente un:
Ecco i principali tag a cui conviene prestare attenzione:


<pre>
<pre>
# apt-get install ethtool etherwake
myhostname = valore indica il nome che assumer� il vostro server mail (es: mail.nomedominio.it).
myorigin = valore indica il dominio usato per la posta inviata dal server.
mydestination = localhost, altri_valori indicano i domini che il server dovr� riconoscere come locali e che smister� internamente.
mydomain = valore indica il dominio a cui appartiene il server.
relayhost = valore indica a quale server inoltrare le mail che non si riconoscono come locali.
mailbox_size_limit = 0 indica la dimensione massima delle caselle mail, 0 per nessun limite.
mynetworks = valore altri_valori indica le reti nelle quali il server deve operare (es. 127.0.0.1/8 192.168.0.1/24).
mynetworks_syle = host/subnet/class
</pre>
</pre>


Su questi ultimi due punti il caso di soffermarsi. Stiamo considerando ora quali ip considerare validi per l'invio della posta.
Postfix non autorizza l'invio della posta da parte di client non autorizzati a farlo e/o di domini sconosciuti, ovvero non un open-relay. Questo un gran vantaggio perch impedisce che il vostro server possa essere usato per spam o peggio.
Tranute mynetworks abilito gli ip presenti nella lista a spedire mail, con mynetworks_style posso specificare uno tra i seguenti tre valori:


==Utilizzo di ethtool==
;host: l'invio sar� consentito solo per la macchina locale.
;class: l'invio sar� consentito a tutti i client appartenenti al network di classe A, C o C a cui il server appartiene.
;subnet: indica che Postfix autorizza alla trasmissione tutti i client che appartengono alla stessa sottorete locale del mailserver e costituisce il valore di default.


All'avvio del computer entrate nel BIOS e attivate il Wake-On-Lan;  solitamente trovate l'impostazione sotto la voce
==Gestione degli Alias==
"Power Management Setup".
In teoria ad ogni utente locale del vostro server corrisponde una sola casella mail.
Si possono per� creare degli alias che corrispondano ad un particolare utente, un secondo indirizzo a cui inviare mail per quel dato user.
Di default esiste il file /etc/aliases che contiene una lista di alias a sinistra e i rispettivi utenti ai quali appartengono a destra.
In /etc/postfix/main.cf basta solo aggiungere


Una volta avviato Linux lanciate:
<pre>
<pre>
# ethtool eth0
alias_maps = hash:/etc/aliases
</pre>
</pre>


{{ Warningbox | in questo e nei futuri esempi, sostituite eth0 con il nome corrispondente alla scheda di rete che state usando! }}
e per rendere questo file una mappa utilizzabile da Postfix lanciamo il comando
 
<pre>
# postalias /etc/aliases
</pre>


==Multidominio, Virtual Domain e Sender Canonical==
Nel caso il vostro Server debba ricevre la posta per pi domini non dobbiamo fare altro che modificare la tag mydestination come segue


A questo punto dovreste vedere una serie di informazioni tra cui qualcosa di simile a questo:
<pre>
<pre>
        Supports Wake-on: g
mydestination = localhost, /etc/postfix/local-domain
        Wake-on: d
</pre>
</pre>


La voce "Supports Wake-on" specifica i metodi di wake-on supportati dalla vostra scheda di rete; se non la vedete � un brutto segno!
creare il file /etc/postfix/local-domain e inserire li i domini da considerare locali uno per riga senza virgole.
La voce "Wake-on" specifica il metodo in uso; d sta per disabled mentre g � quello che andremo ad usare (Wake on MagicPacket(tm)). ''Se per qualche motivo avete gi� la voce "Wake-on" impostata a "g" potete terminare qui la lettura di questa pagina ;)''


Fatto questo conviene preparare un file per la gestione dei domini virtuali in modo tale da associare il giusto dominio al dato utente
creiamo allora il file /etc/postfix/virtual
La sintassi da usare la seguente:


Per impostare il metodo a "g" assicuratevi di avere la lettera "g" tra quelle che seguono la voce "Supports Wake-on" e poi digitate:
<pre>
<pre>
# ethtool -s eth0 wol g
info@dominio1.it marco -> le mail in arrivo per tale indirizzo sono redirezionate a marco
webmaster@dominio2.it andrea@dominio4.it -> le mail verranno inviate a andrea@dominio4.it
@dominio3.com alessandro -> tutte le mail inviate a qualsiasi indirizzo @dominio3.com sono inviate all'utente alessandro
</pre>
</pre>


Se rilanciate
aggiungiamo in /etc/postfix/main.cf
 
<pre>
<pre>
# ethtool eth0
virtual_maps = hash:/etc/postfix/virtual
</pre>
</pre>


dovreste avere "'''Wake-on: g'''".
e prepariamo la map con il comando


<pre>
# postmap /etc/postfix/virtual
</pre>


A questo punto spegnendo il computer lo potrete accendere da un'altra postazione usando etherwake.
Pu� essere utile sempre per la gestione di pi� domini usare un file che associ ad un nome utente un indirizzo mittente particolare.
Creiamo perci� un file /etc/postfix/sender_canonical dove con la precedente sintassi associamo al nome utente l'indirizzo mittente da mostrare nelle mail inviate.
Aggiungiamo in /etc/main.cf la seguente riga:


==Utilizzo di etherwake==
<pre>
sender_canonical_maps = hash:/etc/postfix/sender_canonical
</pre>


etherwake serve per inviare il MagicPacket(tm) alla scheda di rete del pc che volete accendere, accendendolo.
ed infine prepariamo la map con
Ovviamente, dal momento che il pc � spento non vi potete basare sul indirizzo IP; dovrete usare il MAC Address.


Per trovare il MAC Address del pc di destinazione lanciate da quest'ultimo il comando:
<pre>
<pre>
# ifconfig
# postmap /etc/postfix/sender_canonical
</pre>
</pre>


ed individuate la riga:
==Antivirus - Amavis e ClamaV==
Passiamo ora alla configurazione dell'antivirus da installare sul vostro MTA.
Procediamo all'installazione:
 
<pre>
<pre>
eth0      Link encap:Ethernet  '''HWaddr 00:50:6D:EA:A2:DC'''
# apt-get install amavisd-new clamav clamav-daemon
</pre>
 
Dopo l'installazione dobbiamo dire a Postfix di far processare le mail dal vostro antivirus. Aggiungiamo a /etc/postfix/main.cf quanto segue:
 
<pre>
content_filter = amavis:[127.0.0.1]:10024
</pre>
mentre nel file /etc/postfix/master.cf:
<pre>
amavis unix - - n - 2 smtp
-o smtp_data_done_timeout=1200
-o disable_dns_lookups=yes
 
127.0.0.1:10025 inet n - n - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes
</pre>
</pre>


Il MAC Address e' la parte che segue la dicitura "HWaddr" ovvero, nel nostro esempio, "00:50:6D:EA:A2:DC" (senza virgolette).
Di per se non si richiedono altre modifiche per il corretto funzionamento, comunque pu� essere utile dare un occhiata al file /etc/amavis/amavisd.conf per eventuali modifiche.
Il Demone clamav-daemon (freshclam) tiene aggiornato il vostro antivirus aggiornandosi 12 volte al giorno, per eventuali modifiche /etc/clamav/fresclam.conf e /etc/clamv/clamavd.conf
 
==Antispam - Spamassassin==
Pu� essere utile installare un antispam che filtri le mail nel vostro server. Spamassassin � ci� che fa per voi. Installiamolo insieme a procmail:


<pre>
# apt-get install spamassassin procmail
</pre>


Segnatevi il MAC Address e dopo aver impostato il metodo di wake-on a "g" sul pc di destinazione, spegnetelo e recatevi sull'altra postazione.
a questo punto aggiungiamo in /etc/postfix/main.cf quanto segue
A questo punto lanciate:


<pre>
<pre>
# etherwake <mac address> -D
mailbox_command = /usr/bin/spamc | procmail -a "$EXTENSION"
</pre>


esempio:
abilitiamo spamassassin modificando in /etc/default/spamassassin
# etherwake 00:50:6D:EA:A2:DC -D
 
<pre>
ENABLE=1
</pre>
</pre>


L'opzione -D serve solo ad avere in ouput qualche informazione in pi� sull'operazione.
aggiungiamo al file /etc/procmailrc quanto segue:
Se tutto � andato per il verso giusto, il secondo pc dovrebbe essersi acceso..
 
<pre>
DROPPRIVS=yes
:0fw
| /usr/bin/spamassassin
</pre>


Per settaggi particolari di spamassassin vi consiglio di dare un'occhiata al file /etc/spamassassin/local.cf oppure consultare il sito web http://www.yrex.com/spam/spamconfig.php che vi consente di creare un file di configurazione personalizzato rispondendo alle varie domande.


==Ultimi ritocchi==
==WebMail - Openwebmail==
Per poter usufruire del servizio di webmail � necessario usare un server web.
Io vi consiglio apache con supporto php e cgi. In questa guida presumo che nel vostro server sia gi� presente apache configurato a dovere.
Esistono diversi servizi di WebMail, io ho scelto openwebmail, installiamolo dopo aver aggiunto la repository in /etc/apt/source.list


Ora, se il pc � partito, noterete che lanciando nuovamente "ethtool eth0" il metodo di wake-on � tornato a "d".
deb http://people.debian.org/~srua/openwebmail/stable/ ./
Per far si che ogni volta che accendete il computer il metodo usato sia "g" ci sono varie strade; di seguito spiegher� quella che ho scelto ovvero
la modifica del file di avvio della rete.


Aprite il file '''/etc/init.d/networking''' e modificatelo come segue:
<pre>
<pre>
#!/bin/sh
# apt-get install openwebmail
#
</pre>
# manage network interfaces and configure some networking options


PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
Dopo l'installazione recatevi in /etc/openwebmail e date un occhiata al file apache.conf che contiene le specifiche per configurare apache.
Apriamo ora /etc/openwebmail/openwebmail.conf e apportiamo le nostre personalizzazioni.
Attenzione alla voce domainnames, spesso auto pu� portare a dei problemi, vi consiglio di specificare il dominio di appartenenza.
Per altre modifiche consultate il file /usr/share/openwebmail/configs/openwebmail.conf


if ! [ -x /sbin/ifup ]; then
==Gestione Mailing-List Mailman + Hypermail==
    exit 0
Ogni mailserver che si rispetti ha anche un gestore di mailing-list. Io vi consiglio di installare mailman che possiede un ottimo supporto web per le varie configurazioni:
fi


spoofprotect_rp_filter () {
<pre>
    # This is the best method: turn on Source Address Verification and get
# apt-get install mailman hypermail
    # spoof protection on all current and future interfaces.
</pre>
   
    if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]; then
        for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
            echo 1 > $f
        done
        return 0
    else
        return 1
    fi
}


spoofprotect () {
Fatto questo modificate /etc/postfix/main.cf aggiungendo quanto segue:
    echo -n "Setting up IP spoofing protection: "
    if spoofprotect_rp_filter; then
        echo "rp_filter."
    else
        echo "FAILED."
    fi
}


ip_forward () {
<pre>
    if [ -e /proc/sys/net/ipv4/ip_forward ]; then
alias_maps = hash:/etc/aliases
        echo -n "Enabling packet forwarding..."
hash:/var/lib/mailman/data/aliases
        echo 1 > /proc/sys/net/ipv4/ip_forward
transport_maps = hash:/etc/postfix/transport
        echo "done."
relay_domains = lists.vostrodominio.com
    fi
mailman_destination_recipient_limit = 1
}
</pre>


syncookies () {
creiamo /etc/postfix/transport e trasformiamolo in una mappa
    if [ -e /proc/sys/net/ipv4/tcp_syncookies ]; then
        echo -n "Enabling TCP/IP SYN cookies..."
        echo 1 > /proc/sys/net/ipv4/tcp_syncookies
        echo "done."
    fi
}


doopt () {
<pre>
    optname=$1
# echo lists.vostrodominio.com mailman: > /etc/postfix/transport
    default=$2
# postmap /etc/postfix/transport
    opt=`grep "^$optname=" /etc/network/options`
</pre>
    if [ -z "$opt" ]; then
        opt="$optname=$default"
    fi
    optval=${opt#$optname=}
    if [ "$optval" = "yes" ]; then
        eval $optname
    fi
}


case "$1" in
Modificate ora il file /etc/postfix/master.cf:
    start)
doopt spoofprotect yes
        doopt syncookies no
        doopt ip_forward no


        echo -n "Configuring network interfaces..."
<pre>
        ifup -a
mailman unix - n n - - pipe flags=FR user=list argv=/var/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user}
ethtool -s eth0 wol g
</pre>
echo "done."
;;
    stop)
        if sed -n 's/^[^ ]* \([^ ]*\) \([^ ]*\) .*$/\1 \2/p' /proc/mounts |
          grep -q "^/ nfs$"; then
            echo "NOT deconfiguring network interfaces: / is an NFS mount"
        elif sed -n 's/^[^ ]* \([^ ]*\) \([^ ]*\) .*$/\1 \2/p' /proc/mounts | 
          grep -q "^/ smbfs$"; then
            echo "NOT deconfiguring network interfaces: / is an SMB mount"
elif sed -n 's/^[^ ]* \([^ ]*\) \([^ ]*\) .*$/\2/p' /proc/mounts |
          grep -qE '^(nfs[1234]?|smbfs|ncp|ncpfs|coda|cifs)$'; then
            echo "NOT deconfiguring network interfaces: network shares still mounted."
        else
            echo -n "Deconfiguring network interfaces..."
            ifdown -a --exclude=lo
    echo "done."
        fi
;;
    force-reload|restart)
doopt spoofprotect yes
        doopt syncookies no
        doopt ip_forward no
        echo -n "Reconfiguring network interfaces..."
        ifdown -a --exclude=lo
        ifup -a
ethtool -s eth0 wol g
echo "done."
;;
    *)
echo "Usage: /etc/init.d/networking {start|stop|restart|force-reload}"
exit 1
;;
esac


exit 0
Modificate nel file /etc/mailman/mm_cfg.py i seguenti tag:


<pre>
DEFAULT_EMAIL_HOST = 'vostrodominio.com'
DEFAULT_URL_HOST = 'www.vostrosito.com'
MTA='Postfix'
PUBLIC_EXTERNAL_ARCHIVER = 'hypermail -L it -m /var/lib/mailman/archives/private/%(listname)s.mbox/%(listname)s.mbox -l %(listname)s -d /var/lib/mailman/archives/public/%(listname)s'
PRIVATE_EXTERNAL_ARCHIVER = 'hypermail -c -L it -m /var/lib/mailman/archives/private/%(listname)s.mbox/%(listname)s.mbox -l %(listname)s -d /var/lib/mailman/archives/private/%(listname)s'
PUBLIC_ARCHIVE_URL = '/archives/%(listname)s'
PRIVATE_ARCHIVE_URL = '/archives/%(listname)s'
ARCHIVE_TO_MBOX = 2
</pre>
</pre>


Le uniche due modifiche che ho fatto sono le due aggiunte del comando '''ethtool -s eth0 wol g''' nella sezione di start e restart delle interfacce di rete. Copiate solo quel comando nel vostro file nel punto corrispondente; evitate di fare il copia e incolla dell'intero file.
Fate attenzione alle voci PUBLIC_ARCHIVE_URL e PRIVATE_ARCHIVE_URL.
Sono i link che in mailman verranno associati all'archivio delle vostre mailinglist (www.vostrodominio.it/archives/nomelista). di conseguenza un mio consiglio � creare un link simbolico nella DocumentRoot del server apache in questione:


{{ Warningbox | gli utenti k/ubuntu hanno una versione leggermente diversa; il comando sopracitato va messo dopo il blocco "if" }}
<pre>
# ln -s /var/lib/mailman/archives/public/ archives
</pre>
 
Create poi una lista mailman di default per il server (altrimenti il suo demone si rifiuta di partire)


'''Esempio estratto dal file networking di kubuntu:'''
<pre>
<pre>
        if [ "$VERBOSE" != no ]; then
# newlist mailman
            ifup -a
        else
            ifup -a >/dev/null 2>&1
        fi
ethtool -s eth0 wol g
</pre>
</pre>


ed il gioco fatto.
Per creare nuove mailing-list basta usare il comando newlist e per rimuoverle rmlist.
Per le altre configurazione mailman crea nella vostra directory cgi-bin un programma che vi consente tramite web di accedere alle varie mailing-list per poter modificarne alcuni parametri, anche in questo caso si richiede una corretta configurazione di apache.


==Conclusioni==
----
 
Per qualsiasi informazione
La tecnologia Wake-On-Lan si pu� rendere utile solo nei rari casi in cui si disponga di una LAN con postazioni molto distanti tra loro, tuttavia in tali situazioni si rivela una risorsa davvero preziosa che pu� aiutare tra le altre cose a risparmiare energia, spegnendo i computer non usati "perch� tanto poi ...".


www.giorgioravera.it


---- [[Utente:Virtual DarKness|Virtual DarKness]] 16:58, Giu 23, 2005 (EDT)
giorgio@giorgioravera.it
[[Categoria:Networking]]