Adesso che abbiamo installato e configurato il db e l’smtp vero e proprio, tocca configurare i programmi “accessori”, partiamo da Courier il demone che permetterà ai nostri utenti di autenticarsi attraverso i protocolli pop ed imap.

Configurazione Courier
la prima cosa da fare è dire “al corriere” (courier ndr.), di effettuare l’autenticazione sul db e non sul sistema, andiamo quindi a modificare la stringa authmodulelist del file /etc/courier/authdaemonrc.
authmodulelist="authmysql"
adesso dobbiamo cancellare il contenuto di /etc/courier/authmysqlrc e sostituirlo con altri valori, dopo averne fatto una copia di backup ovviamente:
cp /etc/courier/authmysqlrc /etc/courier/authmysqlrc_orig
cat /dev/null > /etc/courier/authmysqlrc
e incolliamoci dentro:
MYSQL_SERVER localhost
MYSQL_USERNAME mail_admin
MYSQL_PASSWORD mail_admin_password
MYSQL_PORT 0
MYSQL_DATABASE mail
MYSQL_USER_TABLE users
MYSQL_CRYPT_PWFIELD password
#MYSQL_CLEAR_PWFIELD password
MYSQL_UID_FIELD 5000
MYSQL_GID_FIELD 5000
MYSQL_LOGIN_FIELD email
MYSQL_HOME_FIELD "/home/vmail"
MYSQL_MAILDIR_FIELD CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/')
#MYSQL_NAME_FIELD
MYSQL_QUOTA_FIELD quota
fatto questo diamo il restart al demone courier:
/etc/init.d/courier-authdaemon restart
/etc/init.d/courier-imap restart
/etc/init.d/courier-imap-ssl restart
/etc/init.d/courier-pop restart
/etc/init.d/courier-pop-ssl restart
adesso per testarne il funzionamento possiamo effettuare un telnet su localhost sulla porta pop3, e se otterremo risposta allora significa che tutto è andato bene:
logubuntu:/var/log# telnet localhost pop3
Trying 127.0.0.1…
Connected to localhost.
Escape character is ‘^]’.
+OK Hello there.
quit
+OK Better luck next time.
Connection closed by foreign host.
Per la gestione dei sistemi di posta, generalmente viene utilizzato un account “fittizio” chiamato mailer_deamon o postmaster, o come si vuole…noi in questo tutorial abbiamo scelto di utilizzare il postmaster, però non può essere un vero e proprio account finto, deve puntare a qualcosa, ed essendo l’account di management dell’MTA dobbiamo definire in /etc/aliases che esso punti al nostro account root del server:
postmaster: root
root: postmaster@yourdomain.tld
ricordiamoci che ogni volta modifichiamo il file degli alias dobbiamo ricaricarlo col comando newaliases. Definito l’alias riavviamo postfix…
Amavisd-new, ClamaV e Spamassassin difendiamoci dallo spam con il content analyzing:
Secondo me dopo l’aids il secondo virus del nuovo millennio sono gli spammer, gente che molesta la serenità altrui con stupidi messaggi pubblicitari, spesso dietro compenso. Al giorno d’oggi non esiste server di posta che non abbia un servizio antispam, e giorno dopo giorno questo servizio si deve evolvere e migliorare. Sul nostro server abbiamo deciso di implementare un meccanismo di content analyzing accoppiando con amavisd-new sia ClamaV per i virus, che spamassassin per le mail di spam:
apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 unzoo libnet-ph-perl libnet-snpp-perl libnet-telnet-perl nomarch lzop pax
dopo averli installati quindi andiamo a decommentare le stringhe che attivano il check antivirus ed antispam nel file di amavisd /etc/amavis/conf.d/15-content_filter_mode:
@bypass_virus_checks_maps = (
\%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);
——
@bypass_spam_checks_maps = (
\%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
eventualmente potete anche dare una modifica alle policy antispam/antivirus nel file /etc/amavis/conf.d/20-debian_defaults, di default i valori vanno bene per gli usi più generali, ma è bene sapere che potete gestirlo come meglio credete.
Dopodiche andiamo a modificare /etc/amavis/conf.d/50-user aggiungendo una stringa:
$pax='pax';
modificata la configurazione andiamo quindi a riavviare sia clamav che amavisd:
adduser clamav amavis
/etc/init.d/amavis restart
/etc/init.d/clamav-daemon restart
/etc/init.d/clamav-freshclam restart
adesso andiamo ad istruire postfix in modo che esso passi tutte le mail ad amavisd per il content filtering:
postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
postconf -e 'receive_override_options = no_address_mappings'
cosi facendo qualsiasi mail che arriverà, verrà prima spedita verso 127.0.0.1 alla porta 10024, verso amavisd, dopo che clamav e spamassassin avranno fatto il loro lavoro, se la mail non è di spam, questa verrà rispedita a postfix attraverso 127.0.0.1 sulla porta 10025, per fare questo però dobbiamo aggiungere al file /etc/postfix/master.cf alcune righe:
amavis unix – - – - 2 smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
127.0.0.1:10025 inet 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
-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
-o smtpd_bind_address=127.0.0.1
fatto questo riavviamo postfix; adesso se diamo “netstat -tap” vedremo che si sono aperte due porte, rispettivamente la 10024 e la 10025, la prima è ascoltata da amavis, la seconda da master, che altri non è che postfix:
tcp 0 0 localhost.localdo:10024 *:* LISTEN 14491/amavisd (mast
tcp 0 0 localhost.localdo:10025 *:* LISTEN 14869/master
Phishing: Aiutiamo spamassassin con pyzor razor e dcc:
Spamassassin da solo non ce la può fare, sebbene sia un ottimo motore antispam. Possiamo quindi affiancarlo con altri spamfilters che sono mirati soprattutto all’antiphishing:
apt-get install razor pyzor dcc-client
e poi modifichiamo /etc/spamassassin/local.cf per dire a spamassassin di fare riferimento a loro per un ulteriore livello di content filtering, aggiungiamo quindi:
# dcc
use_dcc 1
dcc_path /usr/bin/dccproc
dcc_add_header 1
dcc_dccifd_path /usr/sbin/dccifd
#pyzor
use_pyzor 1
pyzor_path /usr/bin/pyzor
pyzor_add_header 1
#razor
use_razor2 1
razor_config /etc/razor/razor-agent.conf
#bayes
use_bayes 1
use_bayes_rules 1
bayes_auto_learn 1
e poi restartiamo amavis:
/etc/init.d/amavis restart
Quota excedance notification:
Se vi ricordate ad inizio tutorial vi ho fatto patchare i sorgenti di postfix, in quanto questo di default non ha abilitata la gestione delle quote delle caselle, ma non possiamo, una volta che il sistema è a regime, andare ogni giorno a verificare quante e quali caselle sono “over quota”. Andiamo quindi a scaricare uno script da inserire in crontab per la notifica automatica:
cd /usr/local/sbin/
wget http://puuhis.net/vhcs/quota.txt
mv quota.txt quota_notify
chmod 755 quota_notify
poi andiamo a modificarlo per adattarlo alle nostre esigenze, in particolare modificando le prima righe:
my $POSTFIX_CF = “/etc/postfix/main.cf”;
my $MAILPROG = “/usr/sbin/sendmail -t”;
my $WARNPERCENT = 80;
my @POSTMASTERS = (‘postmaster@yourdomain.tld’);
my $CONAME = ‘My Company’;
my $COADDR = ‘postmaster@yourdomain.tld’;
my $SUADDR = ‘postmaster@yourdomain.tld’;
my $MAIL_REPORT = 1;
my $MAIL_WARNING = 1;
e dando un occhio alle ultime due:
print “Subject: WARNING: Your mailbox is $lusers{$luser}% full.\n”;
[...]
print “Your mailbox: $luser is $lusers{$luser}% full.\n\n”;
fatto questo aggiungiamo la seguente stringa al nostro crontab:
0 0 * * * /usr/local/sbin/quota_notify &> /dev/null
adesso facciamo una piccola verifica, dobbiamo vedere se il nostro postfix è configurato correttamente per l’autenticazione tramite starttls:
logubuntu:/var/log# telnet localhost smtp
Trying 127.0.0.1…
Connected to localhost.
Escape character is ‘^]’.
220 mail.logubuntu.it ESMTP Postfix (Debian/GNU)
ehlo localhost
250-mail.logubuntu.it
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit
221 2.0.0 Bye
Connection closed by foreign host.
se vediamo le due stringhe in grassetto allora possiamo tranquillizzarci
Bene, adesso il sistema è pronto e funzionante, non ci resta che popolare il database per le varie caselle, ma siccome il sistema che voglio configurare deve essere il più possibile completo, nei prossimi articoli andremo a vedere come installare una webmail e un pannello di controllo per amministratori di dominio, cosi da non doverci impelagare in query sql illeggibili