PDA

View Full Version : procmail: creare regola che salvi tutte le mail in file di testo


Poix81
26-11-2005, 09:23
ciao a tutti.
Con procmail vorrei creare una regola che mi salvi tutte le mail in una determinata cartella.

ho provato con una cosa del genere

:0c:
| >> mailarrivo

pero' non salva niente.

ciao ciao e grazie

wubby
26-11-2005, 10:30
Una lettura utile:

man procmailex

:cool:

fgr
26-11-2005, 10:52
ciao a tutti.
Con procmail vorrei creare una regola che mi salvi tutte le mail in una determinata cartella.
oltre alla man page che ti hanno gia' suggerito, con la seguente regola salvi tutte le e-mail in ingresso in file zippato.


:0c:
| gzip -9cf >> $ARCHIVEDIR/backup.gz

Poix81
26-11-2005, 11:18
mi sono inviato una mail, poi ho lanciato procmail (echo | procmail), crea l'archivio, pero' vuoto.

Anche se gli dico di stampare le mail sullo stdout stampa sempre delle righe vuote,

dove sbaglio?

ciao e grazie

Poix81
27-11-2005, 11:06
mi basterebbe un aiutino per partire...

ho creato il file .forward pero' quando mi invio una mail questa sparisce :cry:

ciao

wubby
27-11-2005, 11:19
prova a postare .procmailrc

Poix81
27-11-2005, 11:27
.forward

|IFS=' ' && exec /usr/bin/procmail || exit 75 #root


.procmailrc

VERBOSE=on
DEFAULT=/var/spool/mail/root
MAILDIR=$HOME/MAIL
LOFGILE=$MAILDIR/log

:0:
prova


grazie per l'aiuto

wubby
27-11-2005, 11:30
Mi spieghi bene cosa intendi fare?
Quale utente deve ricevere la posta ( è root?) e dove vuoi che vada a finire?

Poix81
27-11-2005, 11:32
vorrei che tutta la posta in ingresso fosse messa in una cartella: ogni mail un file.

Il discorso dei filtri lo affronto dopo.

ciao e grazie

PiloZ
27-11-2005, 11:36
usa:

:0
* .*
Inbox


e dai un occhiata a questo link dove ci sta tutto procmailrc:
LINK (http://www.piloz.it/index.php?page=howto&num=14)
vedo che ti mancano alcune cose importanti.

Ciao

PiloZ
27-11-2005, 11:40
ogni mail un file.

allora è sbagliato quello che ti ho detto prima che userebbe mbox.
mi pare sia Inbox/ o .Inbox ma non trovandomi a casa non per ora non posso dartene conferma :(

wubby
27-11-2005, 11:42
Esempio. io utilizzavo questo:


# Debian

:0:
* ^List-Id: <debian-italian.lists.debian.org>
$MAILDIR/Lists/debian/

PiloZ
27-11-2005, 12:03
dunque nel suo caso:

:0
* .*
Inbox/

Poix81
27-11-2005, 12:18
mi crea i file per ogni mail, pero' sono vouti e le mail finiscono lo stesso in /var/spool/mail/root

wubby
27-11-2005, 12:27
ma il .forward serve ancora?

wubby
27-11-2005, 12:28
mi crea i file per ogni mail, pero' sono vouti e le mail finiscono lo stesso in /var/spool/mail/root
Devi specificare dove vuoi che finiscano le mail, vedi il mio esempio.

Poix81
27-11-2005, 12:33
il file .forward e' corretto?
con il file che ho scritto sopra non arriva niente.

ciao e grazie

wubby
27-11-2005, 12:46
il file .forward e' corretto?
con il file che ho scritto sopra non arriva niente.

Boh io non lo utilizzavo :)

Aggiorna qui il tuo .procmailrc e vediamo.

Poix81
27-11-2005, 12:54
ho copiato quello sul sito di Piloz.

Ho notato che le mail vanno a finire in /var/spool/mail/nobody

stranissimo

wubby
27-11-2005, 13:02
Hai creato le directory come indicato nel file .procmailrc?

Poix81
27-11-2005, 13:08
si si

wubby
27-11-2005, 13:27
Ho fatto un test qui da me e funziona:

~/.procmailrc

PATH=/usr/local/bin:/usr/bin:/bin
MAILDIR=$HOME/Mail #youd better make sure it exists
DEFAULT=$MAILDIR/Inbox/ #completely optional

#varie
FORMAIL=/usr/bin/formail

#log
VERBOSE= yes
LOGABSTRACT= yes
LOGFILE=$MAILDIR/log/procmail.log #raccomandato

#regola principale

:0
* .*
$MAILDIR/Inbox/


Ho scritto una mail di prova:

echo "prova messaggio" |mail -s "prova" root


All'interno di ~/Mail ho la directory Inbox che contiene tre directory cur new tmp. All'interno di new è presente la mail che ho appena inviato.

Poix81
27-11-2005, 13:54
potresti postare anche il tuo file main.cf di postfix?

ciao e grazie

wubby
27-11-2005, 14:04
potresti postare anche il tuo file main.cf di postfix?


# See /usr/share/postfix/main.cf.dist for a commented, more complete version

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

myhostname = amd64
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = amd64, localhost.localdomain, localhost
relayhost = out.virgilio.it
mynetworks = 127.0.0.0/8
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

# SASL SUPPORT FOR SERVERS
#
# The following options set parameters needed by Postfix to enable
# Cyrus-SASL support for authentication of mail servers.
#
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd
smtp_sasl_security_options =

Poix81
27-11-2005, 14:21
funziona qualcosa solo se lanio procmail in manuale, pero' i file che crea sono vuoti...


se utilizzo il tuo file main.cf fallisce l'avvio di postfix

booo

wubby
27-11-2005, 14:24
funziona qualcosa solo se lanio procmail in manuale, pero' i file che crea sono vuoti...

Ma non devi lanciarlo a mano... :mc:

se utilizzo il tuo file main.cf fallisce l'avvio di postfix
dove fallisce postfix?
mostra il tuo main.cf e controlliamo! :)

Poix81
27-11-2005, 14:58
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
mail_owner = postfix
myhostname = linux.universita-unogrex.no-ip.org
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
home_mailbox = Maildir/
mailbox_command = /some/where/procmail
smtpd_banner = $myhostname ESMTP $mail_name
debug_peer_level = 2

debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
xxgdb $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/sbin/sendmail
newaliases_path = /usr/bin/newaliases
mailq_path = /usr/bin/mailq
setgid_group = maildrop
html_directory = /usr/share/doc/packages/postfix/html
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/packages/postfix/samples
readme_directory = /usr/share/doc/packages/postfix/README_FILES
inet_protocols = all
biff = no
mail_spool_directory = /var/spool/mail
canonical_maps = hash:/etc/postfix/canonical
virtual_maps = hash:/etc/postfix/virtual
relocated_maps = hash:/etc/postfix/relocated
transport_maps = hash:/etc/postfix/transport
sender_canonical_maps = hash:/etc/postfix/sender_canonical
masquerade_exceptions = root
masquerade_classes = envelope_sender, header_sender, header_recipient
myhostname = linux.site
program_directory = /usr/lib/postfix
inet_interfaces = all
masquerade_domains =
mydestination = $myhostname, localhost.$mydomain
defer_transports =
disable_dns_lookups = no
relayhost = smtp.tiscalinet.it
mailbox_transport =
strict_8bitmime = no
disable_mime_output_conversion = no
smtpd_sender_restrictions = hash:/etc/postfix/access
smtpd_client_restrictions =
smtpd_helo_required = no
smtpd_helo_restrictions =
strict_rfc821_envelopes = no
smtpd_recipient_restrictions = permit_mynetworks,reject_unauth_destination
smtp_sasl_auth_enable = no
smtpd_sasl_auth_enable = no
smtpd_use_tls = no
smtp_use_tls = no
alias_maps = hash:/etc/aliases
mailbox_size_limit = 0
message_size_limit = 10240000

wubby
27-11-2005, 15:17
:confused: :confused: :confused:

wubby
27-11-2005, 15:18
mailbox_command = /some/where/procmail

mailbox_command = procmail -a "$EXTENSION"

Poix81
27-11-2005, 15:20
questo non fallisce, mentre se uso il tuo si.
come faccio a fare un debug per vedere dove fallisce?

grazie e scusa se ti stresso

wubby
27-11-2005, 15:38
questo non fallisce, mentre se uso il tuo si.

Si, ma il comando è errato e devi correggerlo altrimenti non funzionera' MAI procmail


come faccio a fare un debug per vedere dove fallisce?

apri una shell:

tail -f /var/log/syslog

e leggi eventuali errori

Poix81
27-11-2005, 17:13
grazie 1000.

ho fatto come hai deto tu lavorando con un altro utente e tutto funziona alla grande.

adesso imparo per bene le regole... :D