Discussione: HOWTO avanzati
View Single Post
Old 30-05-2005, 08:09   #12
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Postfix, Fetchmail, Procmail,Spamassassin, Solid-pop3d e Mutt

Autore: PiloZ
Thread originale: http://www.hwupgrade.it/forum/showthread.php?t=944062
Formato pdf: http://www.piloz.it/index.php?page=download



# premessa:

Cercherò di raccogliere i passi base per poter gestire le mail sul pc usando Debian GNU/Linux. Tutto sarà basato su 6 programmi principali dove ognuno avrà un suo scopo e una sua funzionalità. Questa mini guida vuole semplicemente essere una bozza on line del risultato del mio apprendimento usando Mutt da 1 mese e 10 girni, dopo svariate ricerche di documentazione tramite google, sfogliando la mailing list di Debian-Italian e per finire consultando e confrontandomi con amici sul canale #linux-world sul server irc.ircland.org (colgo l'occasione per salutarli/ringraziarli).

Scendendo più sul dettaglio la posta sarà così strutturata:
postfix invierà le mail, fetchmail scaricherà la posta di uno o più account di posta esterni, procmail penserà a smistarla in locale in formato mbox dopo averla passata a spamassassin per il controllo sullo spam, solid-pop3d farà da server pop3 ed infine mutt essendo un client non farà altro che visualizzarla.
si parte:

# postfix - MTA (Mail Transfer Agent) program

Postfix e Qmail sono i due MTA più usati su linux, il primo risulta sicuramente semplice e più facile da configurare mentre il secondo ha come scopo principale la sicurezza, pertanto è più complesso e più articolato nella configurazione iniziale. Da dire comunque che postfix non tralascia comunque la sicurezza.
Si installa l'occorrente:

$apt-get install postfix

il file di configurazione sul quale bisogna metter mano è /etc/postfix/main.cf , apritelo con un editor ed iniziate ad editarlo

Codice:
# I M P O S T A Z I O N I

# Banner di connessione del demone smtp
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU Linux)

# Usare o no il servizio locale biff per la notifica dell'arrivo di nuove mail
biff = no

append_dot_mydomain = no

# Il nome del server di posta, se usate dyndns, no-ip o un altro servizio di aggiornamento
# del vostro ip dinamico inserite l'host completo.
myhostname = pinco_pallino.homelinux.org

# Il nome del dominio locale
mydomain = pinco_pallino.homelinux.org

# I domini locali per i quali si riceve la posta
mydestination = $myhostname, localhost.$mydomain, $mydomain

# Dominio di partenza delle e-mail
myorigin = $myhostname

# Interfacce in ascolto per la riccezione della posta
inet_interfaces = all

# Host al quale si consegna la posta in uscita per la consegna
# Sever smpt del vostro ISP.
relayhost = mail.tin.it

# rete a cui appartengono gli host locali che devono usare postfix
# mynetworks = 127.0.0.1/32, 192.168.1.1/24

# i client che possono usare il server smtp (class, subnet, host)
# sostituisce l'impostazione mynetworks commentata poco sopra.
mynetworks_style = host

# Tabella degli alias
alias_maps = hash:/etc/aliases

# Database degli alias da creare tramite il tool newaliases
alias_database = hash:/etc/aliases

# Tipo di mailbox da usare
home_mailbox = Mailbox
mail_spool_directory = /var/spool/mail

# Programma che si occiperà di consegnare la posta in locale
mailbox_command = /usr/bin/procmail

# Utente che esegue tutti i processi di postfix
mail_owner = postfix

# Restrizione sui collegamenti al server
smtpd_helo_restriction = reject_invalid_hostname, reject_unknown_hostname

# verifica dell'esistenza degli utenti
disable_vrfy_command = yes
Inizializzare il database degli alias

$newaliases

Avviare il server smtp con:

$/etc/init.d/postfix start

e provate subito una connessione telnet alla porta 25, se il server è attivo e ben configurato dovreste riuscire ad inviare una mail.
In caso contrario consiglio di analizzare il file di log /var/log/syslog e di dare un occhiata a questo link: Postfix Configuration Parameters .

# fetchmail - fetch mail from a POP, IMAP etc.

Fetchmail è un importante utility che permette di scaricare la posta da account remoti "flushandola" nel pc locale.
Supporta svariati protocolli: POP2, POP3, APOP, RPOP, KPOP, IMAP2bis, IMAP4, IMAP4-K4, IMAP-GSS, ESMPT e ETRN.

$apt-get install fetchmail

La configurazione di uno o più account di posta viene fatta tramite il file /etc/fetchmailrc che deve essere presente e ben configurato.
Supponiamo che l'utente ipoteticamente chiamato pinco sia in possesso di due account di posta esterni, uno residente sui server tin.it e l'altro su gmail e in più voglia anche scaricare le mail del dominio puramente inventato pinco@pinco_pallino.homelinux.org .
Dopo aver creato il file /etc/fetchmailrc si vanno ad impostare i vari parametri che lo regolano.


$touch /etc/fetchmailrc

$vim /etc/fetchmailrc

Codice:
# I M P O S T A Z I O N I
# poll (inizializza la connessione al server e imposta il tempo di attesa di connessione)
# proto (tipo di protocollo da usare)
# authenticate (tipo di autenticazione)
# user (nome utente per l'autenticazione)
# password (password per l'autenticazione)
# mda (mail delivery agent al quale passare la posta)
# is user here options (utente al quale destinare la posta più eventuali opzioni)

# ACCOUNT TIN.IT
poll box.tin.it timeout 60
proto POP3
authenticate password
user "pinco@tin.it"
password "xxxxxxx"
mda '/usr/bin/procmail -d %T' 
is pinco here options keep

# ACCOUNT GMAIL
poll pop.gmail.com timeout 60
proto POP3 port 995
user "pinco@gmail.com"
password "xxxxxxx"
mda '/usr/bin/procmail -d %T' 
is pinco here options keep flush no rewrite stripcr ssl

# ACCOUNT DYNDNS
poll localhost
proto POP3
user "pinco"
password "xxxxxxx"
mda '/usr/bin/procmail -d %T' 
is pinco here

# OPZIONI
# keep Tale opzione serve a non fare cancellare i messaggi sul server
# fetchall serve a scaricare anche i messaggi vecchi e non solo quelli non letti
Uno sguardo ora al file di init.d /etc/init.d/fetchmail che permetterà l'avvio automatico di fetchmail ogni qual volta si accende il pc:

Si prenda spunto da questo file FETCHMAIL .

# procmail - mail processor

Procmail non fa altro che regolare tutte le mail ricevute smistandole e filtrandole in locale, altrimenti rimarrebbe tutto in /var/spool/mail.
Si procede ad installarlo:

$apt-get install procmail

La configurazione ho voluto basarla su più file solo al fine di rendere la gestione più chiara.
Il file principale è /etc/procmailrc che stando in /etc/ rimane valido per qualsiasi utente presente sul pc. Ovvio che se il file non esiste va creato a mano tramite il comando touch. Ecco come andrebbe configurato:

Codice:
# Assicurarsi che la directory esista perche' le email finiranno qui.
MAILDIR=$HOME/Mail

# mailbox di default per le email in entrata.
#Finiscono quì tutte le mail non sono elaborate o non hanno rispecchiato le regole impostate.
# Se non si definisce le email finiranno in /var/spool/mail/nomeutente.
DEFAULT=$MAILDIR/Inbox

# directory dei file che avranno le regole
PMDIR = $MAILDIR/.Pm
PMSRC = $PMDIR

# gestione dei log
VERBOSE=no # impostare a no dopo il debug (yes | no)
LOGABSTRACT = no # produce log MOLTO estesi, impostare a no in seguito (all | no)
LOGFILE=$MAILDIR/.Pm/procmail.log # file di log

# varie
LOCKFILE=$HOME/Mail/.Pm/lockmail
MONAT=`date +%b-%Y`
SHELL=/bin/sh
PATH=$HOME/bin:/bin:/usr/bin:/usr/local/bin
DATE = `date +%B-%Y`

# file con le regole aggiuntivi, andranno letti nello stesso ordine come indicati sotto
1.regole generali. 2.controlli sullo spam. 3.regole di filtraggio.
INCLUDERC = $PMDIR/generale.rc
INCLUDERC = $PMDIR/spam.rc
INCLUDERC = $PMDIR/rules.rc
Si creano ora 2 cartelle: la prima molto importante chiamata "Mail" che starà nella $HOME directory (home di pinco nell'esempio) ed essa dovrà contenere tutte le mail nei vari file mailbox; la seconda chiamata ".Pm" che avrà i file di configurazione secondari di procmail con i dentro indicati i criteri e le regole al quale le mail saranno sottoposte per essere destinate in una mailbox anzichè un'altra.

$mkdir /home/pinco/Mail
$mkdir /home/pinco/Mail/.Pm
$touch /home/pinco/Mail/.Pm/generale.rc
$touch /home/pinco/Mail/.Pm/spam.rc
$touch /home/pinco/Mail/.Pm/rules.rc

di seguito i link a generale.rc, spam.rc e rules.rc . Modificateli secondo le vostre esigenze. I file sono puramente indicativi. generale.rc, spam.rc , rules.rc .

# spamassassin - Open-Source Spam Filter

Spamassassin non è altro che un programma che analizza tutte le mail indistintamente in ingresso (consegnategli da procmail) per identificare se vi è dello spam.
Il suo compito è quello di assegnargli un livello di spam (vedi required_score nel file di configurazione) e se questo livello supera il 5 come predefinito, verrà allora considerato spam, marcherà l'email e la disporà in una mailbox predefinita indicata in spam.rc.
Prima cosa da fare è installarlo:

$apt-get install spamassassin spamc razor

La configurazione è abbastanza intuitiva ed è gestita su un unico file che è: /etc/spamassassin/local.cf dunque apriamolo con un editor per configurarlo a nostro piacimento:

Codice:
# Imposta il punteggio che deve raggiungere la mail per essere considerato spam, più è tendente a "0" e più il filtro è aggressivo.
required_score 5.0

# Testo da aggiungere al subject delle e-mail identificate spam
rewrite_header Subject *****SPAM*****

# Se report_safe è impostato a "1", i messaggi ritenuti spam verranno allegati come file
report_safe 0

# Filtro Bayesiano
use_bayes 1

# Auto-apprendimento di filtro
auto_learn 1

# Controllo sulle RBL, se già l'isp che offre la mail fa questo, impostarloa "1" altrimenti a "0"
skip_rbl_checks 0

# Uso razor (certo!)
use_razor2 1

# File di configurazione di razor (controllatene l'esistenza)
razor_config /etc/razor/razor-agent.conf

# Tempo di time-out di razor
razor_timeout 10

# Controllo sul dns
dns_available yes

# Lingue da non considerare potenzialmente spam
ok_languages it

# Domini dal quale le mail NON verranno considerata spam
whitelist_from *@gmail.com
whitelist_from debian-italian@lists.debian.org

# Domini dal quale TUTTE le mail verranno considerata spam
# http://www.spam-blockers.com/SPAM-blacklists.htm
blacklist_from emailbusiness@email.it
rendiamolo funzionale cambiando il valore di default 0 su 1 nel file /etc/default/spamassassin
Codice:
...
# Change to one to enable spamd
ENABLED=1
...
Avviamo il demone spamd :
$/etc/init.d/spamassassin start

Ecco cosa succede l'header delle mail :
Codice:
mail sottoposta a controllo da spamassassin senza presenza di spam:
X-Spam-Checker-Version: SpamAssassin 3.0.3 (2005-04-27)
X-Spam-Level: ****
X-Spam-Status: No, score=4.4 required=5.0
mail sottoposta a controllo da spamassassin e ritenuta spam:
Codice:
X-Spam-Checker-Version: SpamAssassin 3.0.3 (2005-04-27)
X-Spam-Level: *********
X-Spam-Status: Yes, score=9 required=5.0
Andando a rivedere le prime righe del file spam.rc di procmail, si nota che tutte le mail passano per spamassassin
Codice:
:0fw:
| spamassassin
se nell'header della mail X-Spam-Status è impostato a Yes la mail viene filtrata nella mailbox spam, altrimenti continua il suo controllo da procmail.
Codice:
:0
* ^X-Spam-Status: Yes*
spam
# solid-pop3d - The Solid POP3 Server

Solid-pop3d che farà semplicemente da server pop3 non necessita di essere configurato, è più che sufficente per scopi casalinghi e sicuro, supporta sia mailbox che maildir a differenza di courier, virtual hosting, APOP authentication etc..
si installa ed è pronto per l'uso
$apt-get install solid-pop3d
dovrebbe avviarsi in automatico alla fine dell'installazione ma se così non fosse avviatelo subito e provate come con prostifx se funziona.

$/etc/init.d/solid-pop3d start

$nmap localhost
PORT STATE SERVICE
25/tcp open smtp (postfix)
110/tcp open pop3 (solid-pop3d)
783/tcp open hp-alarm-mgr (spamassassin)

$telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Solid POP3 server ready


in caso di problemi il file di configurazione è /etc/spop3d.conf mentre in /usr/share/doc/solid-pop3d/examples/ è presente un file di configurazione come esempio. E'sempre buona regola fare debugging tramite "$cat /var/log/syslog" .

# mutt - MUA (Mail User Agent) text-based

Reperiamo il "Materiale Occorrente" tramire la super mucca apt :P

$apt-get install mutt urlview gnupg

Vorrei premettere che il supporto in mutt di GNUPG presente in questa guida, nei file di configurazione tramite macro etc...ne permette solo la sua funzionalità. Nell'howto quindi non starò a spiegare come ottenere una chiave pubblica e privata e come configurare Privacy Guard in se stesso. Eventualmente per conoscere comandi base tramite il quale potete configurare GPG su linux vi consiglio di dare un occhiata a questo link Gpg (Gnu Privacy Guard) o una guida completa quà: Guida GnuPG .

La mia configurazione è basata su 6 file fondamentali:
.muttrc - file generale della configurazione di mutt che dovrà stare nella HOME directory;
colori_mutt - gestione colori;
alias - rubrica;
gnupg.mutt - implementazione di gpg con mutt;
mailcap - abbinamento di programmi esterni per la visualizzazione di allegati nelle mail etc;
signature - firma digitale.

# .muttrc
- il file gestisce i parametri e le regole fondamentali per invio, ricezione, risposta e tante altre opzioni.
Una volta creato il file editatelo secondo le vostre esigenze.

$touch ~/.muttrc

$vim ~/.muttrc

Si prenda spunto da questo file .MUTTRC .

Gli altri 5 file (colori_mutt, alias, gnupg.mutt, mailcap e signature) devono stare in /home/pinco/Mail/.mutt/ pertanto creiamo prima la cartella per poi customizzare i singoli file.
Si fa questo solo per evitare di avere un file di configurazione .muttrc enorme e disordinato, sicuramente meglio raggruppare altre variabili di configurazione su file a parte.

$mkdir ~/Mail/.mutt

# colori_mutt
- gestisce tutti i colori dell'interfaccia di mutt in riferimento allo sfondo, colore del testo, dei link etc.

$touch ~/Mail/.mutt/colori_mutt

$vim ~/Mail/.mutt/colori_mutt

Si prenda spunto da questo file COLORI_MUTT .

# alias
- per intenderci sarebbe la rubrica dei contatti email preferiti.

$touch ~/Mail/.mutt/alias

$vim ~/Mail/.mutt/alias

Si prenda spunto da questo file ALIAS .

# gnupg.mutt
- configurazione dei parametri in relazione all'uso di gpg con mutt.
Creiamo il file gnupg.mutt per la gestione delle chiavi pgp con mutt e apriamolo per editarlo:

$touch ~/Mail/.mutt/gnupg.mutt

$vim ~/Mail/.mutt/gnupg.mutt

Si prenda spunto da questo file GNUPG.MUTT .

# mailcap
- file di configurazione che contiene la mappa dei tipi di MIME per visualizzazioni esterne.

$touch ~/Mail/.mutt/mailcap

$vim ~/Mail/.mutt/mailcap


Si prenda spunto da questo file MAILCAP .


# signature
- firma digitale

$touch ~/Mail/.mutt/signature

$vim ~/Mail/.mutt/signature

N.B.La firma secondo netiquette deve iniziare con i caratteri "-- " (tratto,tratto,spazio)
Si prenda spunto da questo file SIGNATURE .


Consiglio inoltre di aggiungere il seguente alias in ~/.bashrc in modo che mutt vanga eseguito in modalità mailboxes invece che browser.
Codice:
alias mutt="mutt -y"
Per fare in modo che urlview precedentemente installato apra gli indirizzi internet presenti nelle mail usando firefox (nota che si deve premere ctrl+b per vedere gli url presenti) editate il file system.urlview.

$vim /etc/urlview/system.urlview

Aggiungete il seguente codice e salvate il file.
Codice:
REGEXP ((http|https|ftp|gopher):(//)?[^ <>"\t]*|www\.[-a-z0-9.]+)[^.,;\t<">\):]
COMMAND /usr/bin/nohup firefox -remote "openURL("%s", new-tab)" >/dev/null 2>&1&
# Comandi fondamentali:
m componi una nuova mail
$ aggiornare la mailbox
r rispondi ad una mail
. elenca le mailbox con nuova posta arrivata
f forwarda la mail
/ cerca testo
b rimbalza la mail
c, tab switcha da modalità browser in modalità mailboxes e viceversa
y inoltra la mail
s salva l'allegato della mail o sposta la mail di mailboxes
G controllo presenza nuova posta
v vedi allegato
ctrl+b gestisce gli url con urlview
! esegue un subcomando via shell
d cancella una mail
t flagga la mail
u disattiva la cancellazione della mail
e riedita una mail
invio legge la mail o entra in una mailboxes
a crea un alias dal mittente del messaggio
L rispondi alla mailing-list
h visualizza l'header della mail
x esce da mutt senza salvare le modifiche
ctrl+R segna la mail come già letta
q esce da mutt salvando le modifiche
p * menu MENU_PGP con le opzioni di cifratura, vedi tabella sotto per i dettagli

# PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, (i)nline, or (c)lear?
e cripta il nuovo messaggio
s firma il nuovo messaggio
a si sceglie che chiave usare per firmare il nuovo messaggio
b firma e cripta (PGP/MIME) il nuovo messaggio
i firma e cripta (in linea) il nuovo messaggio
c non cripta e non firma il messaggio (normal mode)
ctrl+F cancella la passphrase dalla memoria in caso di errata digitazione

# Leggenda attributi delle mail - (prima parte nella riga del messaggio)
N messaggio nuovo e non letto
O messaggio vecchio e non ancora letto
r messaggio con un reply
D messaggio da cancellare
! messaggio importante
* messaggio flaggato
s messaggio firmato con PGP/MIME
S firma PGP/MIME verificata con successo
P messaggio cifrato

Non resta che avviare il demone fetchmail:

$/etc/init.d/fetchmail start

dovrete avere un processo come questo:

$ps aux|grep fetchmail
/usr/bin/fetchmail -f /etc/fetchmailrc -m procmail -d %T -d 900 --syslog -i /var/mail/.fetchmail-UIDL-cache


-f /etc/fetchmailrc (file di configurazione di fetchmail attualmente in uso)
-m procmail -d %T (mda usato da fetchmail)
-d 900 (intervallo di controllo posta)
--syslog (loga tutto in /var/log/syslog)
-i /var/mail/.fetchmail-UIDL-cache (nome alternativo usato per salvare la sessione POP3)
per cambiare le opzioni rifarsi al file /etc/init.d/fetchmail o in alternativa $man fetchmail.

# Credits

Altre guide che sicuramente sono state per me come per altri degli ottimi sostegni nell'aiuto di chiunque si sia sbattuto e si imbatterà per la prima volta nel configurare la propria posta su linux.
Ringrazio gli autori che hanno già realizzato how-to come questi perchè è anche grazie a loro se ora scrivo mail come ho sempre desiderato
La posta con Mutt by Antonecchia Michele
Guida sotto licenza GNU Free Documentation License
Ataualpa for Debianers Guida sotto licenza GNU FDL. IMHO la bibbia di mutt
Mutt-i, GnuPG e PGP Howto Guida sotto licenza GNU General Public License
Postfix e Spamassassin by Incobus

L'autore non è responsabile di alcun danno dovuto alle azioni intraprese basatesi sulle informazioni contenute in questo documento.
Antonello Lo Cicero Alias PiloZ
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12

Ultima modifica di ilsensine : 30-05-2005 alle 20:10.
ilsensine è offline