Archive for the ‘Server’ Category

Manuale Procmail

Un manuale molto facile da capire per introdursi a Procmail: Sito procmail

Qui invece vari esempi: Sito proctips

Archiviazione mensile mail

Questo script archivia la posta più vecchia di un mese in un file compresso, nominato con il nome del mese, di volta in volta.

#!/bin/bash
#touch -t 0701010001 /tmp/mailmark
touch -t $(date +%y%m%d --date='-1 month')0001 /tmp/mailmark
find /home/utente/Maildir/.ZBackup/cur/ ! -newer /tmp/mailmark -type f > lista
tar -cjv --remove-files -T lista -f /media/hdc1/backup/mailbackup/$(date +Backup_%y_%m.tar.bz2 --date '-1 month -1 day')
rm /tmp/mailmark
rm lista

La seconda riga dello script può essere usata al posto della terza, nel caso in cui vogliamo far partire lo script in modo manuale. Il comando touch modifica il file /tmp/mailmark (nell’esempio) alle ore 00:01 del 01-01-07, quindi tutte le mail presenti nella cartella ZBackup di maildir, più vecchie di quel momento verranno archiviate.
Nel caso invece si voglia un esecuzione automatica, abilitare la terza riga (e commentare la seconda), questa crea un touch vecchio di un mese rispetto all’esecuzione, quindi schedulando lo script con crontab ogni primo del mese, avremo un backup delle mail più vecchie di un mese.

Script di backup per estensioni

Quando la mole di dati diventa troppo onerosa per la cassetta, una soluzione può essere creare un backup che prenda solo determinate estensioni.
Questo ne è un esempio:

#!/bin/bash
echo "" >> /home/debs1/backup_log/$(date '+%Y_%m_%d_%a_backup').log
echo "------------------------------------------" >> /home/debs1/backup_log/$(date '+%Y_%m_%d_%a_backup').log
date '+Backup di %A %d/%m/%Y inizio ore %T' >> /home/debs1/backup_log/$(date '+%Y_%m_%d_%a_backup').log
echo "------------------------------------------" >> /home/debs1/backup_log/$(date '+%Y_%m_%d_%a_backup').log
echo "" >> /home/debs1/backup_log/$(date '+%Y_%m_%d_%a_backup').log
mt -f /dev/nst0 rewind
rm /home/debs1/backup_log/lista
for ext in $(cat /home/debs1/estensioni.txt)
        do find /media/sda1/dati/ -name "$ext" >> /home/debs1/backup_log/lista
done
tar -cvf /dev/nst0 --files-from /home/debs1/backup_log/lista >> /home/debs1/backup_log/$(date '+%Y_%m_%d_%a_backup').log
mt -f /dev/nst0 rewind
mt -f /dev/nst0 eject
echo "" >> /home/debs1/backup_log/$(date '+%Y_%m_%d_%a_backup').log
echo "------------------------------------------" >> /home/debs1/backup_log/$(date '+%Y_%m_%d_%a_backup').log
date '+Backup di %A %d/%m/%Y fine ore %T' >> /home/debs1/backup_log/$(date '+%Y_%m_%d_%a_backup').log
echo "------------------------------------------" >> /home/debs1/backup_log/$(date '+%Y_%m_%d_%a_backup').log
echo "" >> /home/debs1/backup_log/$(date '+%Y_%m_%d_%a_backup').log
chmod 777 /home/debs1/backup_log/*
cd /home/debs1/backup_log/
echo "Backup di "$(date '+%a %d %m %Y')" concluso." > mail.log
echo "" >> mail.log
echo "Numero file in cassetta:" >> mail.log
cat /home/debs1/backup_log/"$(date '+%Y_%m_%d_%a_backup')".log | grep -c "media/sda1/dati" >> mail.log
echo "Numero file previsti:" >> mail.log
cat /home/debs1/backup_log/lista | grep -c "media/sda1/dati" >> mail.log
let dif=$(cat /home/debs1/backup_log/lista | grep -c "media/sda1/dati")-$(cat /home/debs1/backup_log/"$(date '+%Y_%m_%d_%a_backup')".log | grep -c "media/sda1/dati")
echo "Differenza:" >> mail.log
echo $dif >> mail.log
echo "" >> mail.log
echo "Di cui:" >> mail.log
echo -n "mp3 > " >> mail.log
find /media/sda1/dati/* -name *mp3 | grep -c \n >> mail.log
echo -n "wma > " >> mail.log
find /media/sda1/dati/* -name *wma | grep -c \n >> mail.log
echo -n "avi > " >> mail.log
find /media/sda1/dati/* -name *avi | grep -c \n >> mail.log
echo "" >> mail.log
echo "File log:" >> mail.log
ls *.log -hs1t >> mail.log
echo "" >> mail.log
echo "End of file" >> mail.log
cat mail.log | /usr/bin/nail -s "Backup di "`date '+%A'` utente@azienda.it

lo script come prima cosa cerca tutti i file con le estensioni riportate in estensioni.txt, tipo queste:

*.doc
*.xls

Poi tramite tar, fa un backup su nastro di questi file, e contemporaneamente crea un log di quello che ha copiato.
Infine crea un report e lo invia tramite posta elettronica ad un utente.

Mail server aggregator (Maildir/Imap4/Webmail)

Passare al protocollo Imap4 può dare dei vantaggi, uno fra i tanti la possibilità di leggere la posta da molti client mantenendola sul server, gestendo quindi mail lette, smistamento posta, cancellazione in modo indipendente dal punto di accesso.
Altro consiglio è il passaggio da Mailbox a Maildir, dove il sostanziale cambiamento è dato dal fatto che ora la posta è meglio gestita, in quanto è più difficile la perdita di messaggi in caso di danneggiamento file, perché in Maildir ogni mail è un file (mentre in Mailbox tutte le mail sono racchiuse in un file unico).
Per utilizzare Imap4 installare Courier-imap e in caso Courier-imap-ssl per una connessione più sicura. Mentre per usare Maildir, usare Postfix come MTA invece di Courier-mta, infine e lasciare Procmail per lo smistamento invece di courier-maildrop, in quanto è di più facile configurazione e meglio supportato a livello di comunity.

Per impostare Postfix all’uso di Maildir aggiungere in /etc/postfix/main.cf la seguente riga

home_mailbox = Maildir/

e creare la cartella Maildir nella home del proprio utente, in questo modo la posta viene gestita come Maildir dentro alla suddetta cartella.
Per configurare Procmail a smistare la posta in Maildir impostare /etc/procmailrc come segue:

MAILDIR=$HOME/Maildir
DEFAULT=$MAILDIR/
LOGFILE=$HOME/Procmail.log
DROPPRIVS=yes

:0fw
| /usr/bin/spamassassin

:0:
^X-Spam-Status: Yes
.Spam/

:0 c:
.Backup/

:0:
^From:.*sport@dominio\.com
.Mailinglist.Sport/

:0:
Maildir* ^TOutente@mailpersonale.com
.Personale/

Da qui si può intuire che lo spam viene deviato verso la cartella .Spam se la mail ha l’indicatore di spam presente. Indicatore che viene assegnato da Spamassasin.
L’uso di cartelle e sottocartelle dentro Maildir è gestito con i punti, posso avere la cartella ~/Maildir/.Mailinglist/ e la sua sottocartella come ~/Maildir/.Mailinglist.Sport/

In questo caso:
– La posta viene vagliata come spam o meno ed in caso girata alla cartella Spam
– Di tutta la posta che non è spam viene fatta una copia in Backup
– Tutta la posta che arriva da sport@dominioono.com viene spostata nella cartella Sport sotto a Mailinglist
– Tutta la posta che arriva ad utente@mailpresonale.com viene spostata dentro la cartella Personale

Questo permette quindi di eliminare le regole del client di posta (tipo Evolution) che smista la posta in locale, se scaricata in Pop3.
Infine non rimane che impostare Evolution come segue:
Evolution > Modifica > Preferenze, qui si deve creare un nuovo account o modificarne uno esistente, in ricezione impostare il protocollo Imap e aggiungere connessione protetta ssl. Mentre nelle opzioni di ricezione impostare il controllo in tutte le cartelle e selezionare solo le cartelle dove si vuole controllare la posta. Infine dentro sicurezza spuntare la fiducia alle chiavi del portachiavi personale.
Fatto questo cliccare su invia e ricevi ed in Evolution troveremo le mail e le cartelle presenti nel nostro Maildir, da qui si possono creare e cancellare cartelle, smistare mail, etc…

NB: Dopo aver modificato o spostato le cartelle, aggiornare la sottoscrizione da Cartella > Sottoscrizione, togliendo e rispuntando le cartelle che vogliamo vedere, per ultimo riavviare Evolution per ricaricare l’impostazione in modo corretto.

A questo punto non è più possibile usare Openwebmail, in quanto non supporta Maildir come formato, la cosa migliore da fare è usare Sqwebmail (la webmail di courier), di certo ha meno funzionalità di Openwebmail, ma la posta viene gestita nel modo migliore.
In caso installare anche courier-pcp oltre a Sqwebmail per poter gestire il calendario.
Quindi modificare /etc/apache2/sites-available/default per impostare Sqwebmail come sito di default, cambiando la riga 17 come segue:

RedirectMatch ^/$ /cgi-bin/sqwebmail/

Dentro la cartella /usr/lib/courier/sqwebmail/html/en-US si possono modificare le pagine html se si vuole personalizzare l’aspetto della webmail, ed in caso modificare /usr/share/sqwebmail/sqwebmail.css per cambiare i colori. Dentro /usr/share/sqwebmail/ si trovano anche le immagini se volgiamo modificarle.
Per inviare le mail da Sqwebmail modificare il file /etc/courier/defaultdomain con il proprio dominio, e modificare /etc/postfix/main.cf con i parametri:

myorigin = propriodominio.it
myhostname = propriodominio.it
mydomain = propriodominio.it
relayhost = mail.proprioisp.it
mynetworks = 192.168.1.0/8

Webdisk

Per creare un webdisk accessibile dalla rete installare i seguenti componenti:

proftpd proftpd-common webmin-proftpd

con questi verrà creato un server ftp, accessibile su porta 21.
Editare quindi /etc/proftpd.conf e aggiungere la riga

DefaultRoot ~

in modo da evitare agli utenti di risalire oltre la propria home.
A questo punto installare

apache2 libapache2-mod-php4 webmin-apache

per creare un server web-php.
Scaricare infine questo programma, che collega ftp://localhost ad una pagina web-php, senza quindi dover aprire all’esterno la porta 21 del server.

http://oliver.sourceforge.net/

scomprimerlo in /var/www e copiare config-dist.php in un nuovo file config.php
A questo punto la propria home sarà accessibile dalla pagina

http://server:porta/oliver/