Come gestire la coda di Postfix ???


Semplice ! Con qualche comando dato dalla shell !!!

Cancellare la coda di messaggi: postsuper -d ALL
Cancellare la coda di messaggi in entrata: postsuper -d ALL incoming (oppure “hold”, “deferred”, “active”)
Cancellare un messaggio: postsuper -d ID_messaggio

Per vedere quanti messaggi ci sono in coda: postqueue -p

Forzare la coda di messaggi (inviare tutti i messaggi che sono in coda): postqueue -f

Annunci

Filtrare le “ricevute di ritorno” con Postfix e Procmail (magari utilizzando Maildir …)


Chi non ha odiato le “ricevute di ritorno” delle mail ?
Di sicuro hanno una affidabilità parziale perchè l’utente deve cliccare su “invia la ricevuta”. Ma questo non ci fornisce la certezza che il destinatario effettivamente abbia letto la nostra mail.
Se, poi, spediamo massivamente mail con ricevuta di ritorno ci ritroveremo inondati di mail …
Linux con i suoi potenti mezzi ci mette a disposizione gli strumenti.
Partiamo da una configurazione “complessa”: abbiamo un server mail con Postfix ed abbiamo “approfittato” delle sue grazie utilizzando Maildir (ovvero ogni singola mail è identificata da un singolo file di testo – situazione comodissima per bypassare la limitazione ed i rischi dati dall’utilizzo dello standard Mailbox).

Iniziamo con la configurazione di Postfix editando il file /etc/postfix/main.cf

vi /etc/postfix/main.cf

ed andiamo a cercare il parametro “mailbox_command” andandolo a modificare in questo modo:

mailbox_command = /usr/bin/procmail -a “$EXTENSION” DEFAULT=/home/$USER/Maildir/ MAILDIR=/home/$USER/Maildir/

Successivamente entriamo nell’utente che ci ha richiesto il filtraggio ed andiamo a creare il file “.procmailrc”

vi .procmailrc

Mettiamo ora all’interno del file le nostre regolette 😀

#directory
MAILDIR = $HOME/Maildir/ # Le email finiranno qui

# sposta le ricevute di lettura in
# /home/utente/Maildir/.Notifiche\ lettura/

:0
* ^Subject.*Letto:*
#/dev/null
/home/utente/Maildir/.Notifiche\ lettura/

:0
* ^Subject.*Read -*
#/dev/null
/home/utente/Maildir/.Notifiche\ lettura/

:0
* ^Subject.*Notification for*
#/dev/null
/home/utente/Maildir/.Notifiche\ lettura/

:0
* ^Subject.*Recapitato:*
#/dev/null
/home/utente/Maildir/.Notifiche\ lettura/

Et voila ! Il filtraggio è servito !!!

Script per la comunicazione agli utenti della scadenza dell’account su un server basato su LDAP


Uno dei problemi più annosi nella gestione di server è quello della scadenza delle utenze.
In molti contesti vengono creati utenti temporanei (magari dipendenti a tempo determinato o stagisti).
LDAP molto agevolemente permette di gestire la scadenza dell’account.
Il problema resta quello di notificare all’utente che il suo account sta per scadere.
Questo è possibile effettuarlo tramite uno script da mettere in crontab …

#!/bin/bash

########################################################
#
# Script per la comunicazione via mail agli utenti
# della scadenza dell’account
#
# BoB 20-01-2010
# Rel. 1.200
########################################################

#############################
# Variabili
#############################
# A chi invio la mail per conoscenza (bcc) ?
bcc=”area-ict@dominio.it”

# variables for LDAP search
ldapHost=”localhost”
ldapContext=”dc=dominio,dc=it”
ldapUser=”cn=admin,dc=dominio,dc=it”
ldapPasswd=”password_server_ldap”
checkTime=”7 days”
checkTimeITA=”7 giorni”
expireDate=”8 days”

# Files di appoggio temporanei
tmpMsg=/root/passwordsToExpireMsg
tmpLdapResult=/root/passwordsToExpire

# Calcolo delle date
# datenow = data odierna + il checktime in formato gg/mm/aa
datenow=`date -d “$checkTime” “+%d/%m/%y”`
# unixtime_datenow = data odierna + il checktime in formato Unix
unixtime_datenow=`date -d “$checkTime” +%s`
# epoch = data di partenza dello UnixTime
epoch=’01/01/1970′
# unixtime_epoch = data di partenza dello UnixTime in formato Unix
unixtime_epoch=`date -d ‘Jan 01 1970 01:00:00’ +%s`

# Inizio della procedura di calcolo delle date
# e stampa a video delle informazioni
clear
echo “Epoch in data (data di nascita dello UNIXtime): “$epoch
echo “Epoch in UNIXtime (data di nascita dello UNIXtime): “$unixtime_epoch
echo “Data odierna: “$datenow
echo “Data odierna in UNIXtime: “$unixtime_datenow
echo “”
echo “Calcolo della differenze tra le date:”
echo “————————————-”
datediff=”$(( ($unixtime_datenow-$unixtime_epoch)/( 60*60*24) ))”
echo “Data arrivo:”$unixtime_epoch “- Data partenza:”$unixtime_datenow
echo “Risultato in giorni: ” $(( ($unixtime_datenow-$unixtime_epoch)/( 60*60*24) ))
echo “Data di riferimento della scadenza password: “$datediff

# Ricerca della data di scandenza delle utenze
# con riferimento ai parametri CN e UID
# cn = common name
# uid = user id
ldapsearch -x -D $ldapUser -w $ldapPasswd -b $ldapContext “(&(objectclass=posixAccount)(shadowExpire=$datediff))” cn uid > $tmpLdapResult

# Estrazione delle informazioni dal file di appoggio
# tmpLdapResult=/root/passwordsToExpire
# Estrai i dati UID e CN.
# Nel caso di “ldap_mail” aggiunge il dominio di riferimento
ldap_uid=`less $tmpLdapResult | gawk ‘/uid:/’`
ldap_mail=`less $tmpLdapResult | gawk ‘/uid:/ {print $2″@dominio.it”}’`
ldap_cn=`/usr/bin/less $tmpLdapResult | gawk ‘/cn:/ {print $2″ ” $3″ ” $4″ ” $5″ “}’`

# Per ogni UID trovato nel file manda una email all’utente
# ed una mail in ccn all’utenza definita come BCC all’inizio del file
for user in $ldap_mail; do
echo;
echo “Gentile utente,” >>$tmpMsg;
echo “si comunica che il tuo account di posta elettronica: $user scadra’ il giorno $datenow.”>>$tmpMsg;
echo “Si prega contattare l’Area servizi ICT aziendale entro $checkTimeITA dal `date +%d/%m/%y` per maggiori informazioni.” >>$tmpMsg;
echo “In caso contrario l’account sara’ sospeso a partire dalle ore 00:00 del `date -d “$expireDate” +%d/%m/%y`.”>>$tmpMsg;
echo “Cordiali saluti.”>>$tmpMsg;
echo>>$tmpMsg;
echo “Questa e’ una mail generata automaticamente dal sistema”>>$tmpMsg;
echo “———————————————————–“>>$tmpMsg;
echo “Area servizi ICT – famosa azienda informatica …”>>$tmpMsg;
echo “Riferimenti telefonici: 091/xxxxxxxxx – 335/xxxxxxxx”>>$tmpMsg;
echo “———————————————————–“>>$tmpMsg;
# Invia la mail preparata e manda una copia in BCC …
cat $tmpMsg | /bin/mail -s “Comunicazione scadenza account [Area ICT/$user]” $user -b $bcc;
# Rimuove il messaggio …
rm $tmpMsg
# Stampa a video le informazioni sugli account scaduti
echo $ldap_uid “- Nome utente: “$ldap_cn;
done

# Rimuove i risultati …
rm $tmpLdapResult

exit 0

Conversione delle mail da MBOX a MAILDIR


Durante la migrazione di un server ho avuto la necessità di trasformare le caselle di posta da MAILBOX a Maildir.
Per fare questo ho utilizzato mb2md (nella versione 3.20 scaricabile qui). Per i più curiosi la home page di riferimento è questa
In seguito mi sono realizzato uno script bash che converte tutto quello che trova in /var/spool/mail e lo mette in /home/$user/Maildir
Questo lo script:

#!/bin/bash
set -x
MAILBOX_DIR=”/var/spool/mail”
#MAILDIR_DIR=”/home/maildir-oldserver”
MAILDIR_DIR=”/home”
[ -d $MAILDIR_DIR ] || mkdir -p $MAILDIR_DIR
cd $MAILBOX_DIR
for user in *; do
mkdir -p $MAILDIR_DIR/$user/Maildir
done

for user in *; do
perl /root/mb2md-3.20.pl -s $MAILBOX_DIR/$user -d $MAILDIR_DIR/$user/Maildir
done

for user in *; do
perl /root/mb2md-3.20.pl -s /home/$user/mail/ -d $MAILDIR_DIR/$user/Maildir
done

for user in *; do
chown -R $user.users $MAILDIR_DIR/$user/
done

Non ho grande esperienza negli script bash … Pertanto si accettano suggerimenti per il miglioramento dello script !

Thunderbird e funzionalità avanzate del client di posta elettronica


La posta elettronica oggi ha assunto una notervole importanza all’interno degli uffici soppiantando il tradizionale fax.
I vantaggi della posta elettronica sono sicuramente l’economicità e l’immediatezza (ad esempio oggi è possibile leggere le mail anche sui cellulari Blackberry, Symbian e Windows Mobile).
Di programmi che permettono di leggere in assoluta comodità la posta elettronica ne esistono diversi: da quelli a pagamento come Microsoft Outlook (compreso nella suite Microsoft Office) a quelli storici come Eudora.
Una menzione speciale merita Thunderbird. E’ un client disponibile per diverse piattaforme molto flessibile (ad esempio importa configurazioni e rubrica da Outlook Express) che si può “accessoriare” con vari plugin scaricabili dal sito https://addons.mozilla.org/it/thunderbird/featured
E’ possibile, ad esempio, aggiungere dizionari per il controllo ortografico delle mail in diverse lingue (https://addons.mozilla.org/it/thunderbird/language-tools/), crittografare le mail (https://addons.mozilla.org/it/thunderbird/addon/71/), cambiare tema -skin- al programma (https://addons.mozilla.org/it/thunderbird/themes/).
Una funzionalità comoda all’interno di un ufficio in cui tutti gli utenti stampano su una unica stampante e quella di fare stampare il nome della “identità principale” dell’utente che utilizza il programma nella parte superiore della pagina (cosa che già Outlook Express e Outlook fanno). Questa funzionalità può essere aggiunta grazie ad un plugin chiamato “Printing tools” che può essere scaricato da questa pagina: http://www.extenzilla.org/scheda_estensione.php?id=435

Postfix e LDAP-aliases


Molto spesso risulta comodo gestire gli aliases di posta elettronica direttamente tramite LDAP.
Assunto che gli aliases di posta elettronica siano stati migrati da un precedente sistema tramite lo script migrate-aliases e che all’interno dell’albero LDAP sia stata creata la UO “Aliases” …
Queste sono le modifiche da apportare:

/etc/postfix/main.conf

alias_maps = hash:/etc/aliases, ldap:/etc/postfix/ldap-aliases.cf

/etc/postfix/ldap-aliases.conf

server_host = 127.0.0.1
search_base = ou=Aliases, dc=miosito, dc=it
bind_dn = cn=admin, dc=server, dc=miosito, dc=it
bind_pw = pappapronta
query_filter = (&(objectClass=nisMailAlias)(cn=%u))
result_attribute = rfc822MailMember
#result_format = %s
scope = sub
#cache = yes
bind = yes