Per la ricezione ho già sistemato qualcosa di funzionante, mentre per quanto riguarda l'invio della posta ho faticato un po' di più a trovare informaioni per ottenere il comportamento desiderato.
L'idea è piuttosto semplice alla fine:
- ricevo tutto con fetchmail e passso il malloppo a procmail che smista la posta nelle mailbox stabilite. Fin qui niente di inconsueto e tutto stradocumentato...
- invio tutto impostando come "sendmail" lo stesso procmail che legge un file di configurazione ~/.procmailoutrc e smista la posta in uscita prima di inviarla. Per l'invio richiamo sendmail/esmtp attraverso una regola impostata proprio in "~/. procmailoutrc".
Premetto che ho in parte capito dove sta il problema ma non so come risolverlo di preciso...
Vediamo cosa funziona, ho fatto qualche test:
1- Invio di un messaggio email richiamando procmail da riga di comando. Il messaggio è scritto su un file di testo chiamato con molta fantasia "messaggio" e contiene gli headers "From:", "To:", "Subject:". Ecco il comando di invio:
Codice: Seleziona tutto
cat messaggio|formail -a "Date: `date -R`" -s /usr/bin/procmail -t -m /home/joe/.procmailoutrcCome vedete al posto di richiamare /usr/bin/sendmail viene richiamato /usr/bin/procmail il quale legge le regole di invio in ~/.procmailoutrc tra le quali ovviamente viene anche richiamato /usr/bin/sendmail che si occuperà dell'invio vero e proprio. Non volevo allegarlo per non fare confusione ma per chiarezza metto anche almeno la regola in procmailoutrc:
Codice: Seleziona tutto
~/.procmailoutrc
Codice: Seleziona tutto
:0:
* ^From.*mioindirizzo@gmail.com
{
:0 c
mioindirizzo@gmail.com
:0
| sendmail -t
}
:0:
*
$DEFAULT
In conclusione: questa semplice configurazione funziona utilizzando il comando soprariportato: il messaggio parte e viene anche copiato nella mbox mioindirizzo@gmail.com.
2- Invio da Mutt.
Anche in questo caso pare fuznionare alla grande. Ho specificato in .muttrc la direttiva:
Codice: Seleziona tutto
set sendmail="/usr/bin/procmail -m /home/joe/.procmailoutrc"
3- Invio da Mailx. Questo è proprio quello che volevo chiedere in questo topic nonostante il prologo lunghissimo.
Anche qui ho configurato il ~/.mailrc in modo analogo:
Codice: Seleziona tutto
set sendmail=/usr/bin/procmail -m /home/joe/.procmailoutrc
Codice: Seleziona tutto
$ echo "Questa prova usa mailx esmtp e procmail in uscita"|mailx -v -r mioindirizzo@gmail.com -s 'Prova procmail in uscita con esmtp' mioindirizzo@gmail.com
procmail: Unrecognised options: "i"
Usage: procmail [-vptoY] [-f fromwhom] [parameter=value | rcfile] ...
Or: procmail [-toY] [-f fromwhom] [-a argument] ... -d recipient ...
Or: procmail [-ptY] [-f fromwhom] -m [parameter=value] ... rcfile [arg] ...
Or: procmail [-toY] [-a argument] ... -z
Processing continued
procmail v3.22 2001/09/10
Copyright (c) 1990-2001, Stephen R. van den Berg <srb@cuci.nl>
Copyright (c) 1997-2001, Philip A. Guenther <guenther@sendmail.com>
Submit questions/answers to the procmail-related mailinglist by sending to:
<procmail-users@procmail.org>
And of course, subscription and information requests for this list to:
<procmail-users-request@procmail.org>
Locking strategies: dotlocking, fcntl()
Default rcfile: $HOME/.procmailrc
It may be writable by your primary group
Your system mailbox: /var/mail/joe
Ho provato ad aggiungere la direttiva "debug" nel .mailrc ed ecco cosa restituisce questa volta:
Codice: Seleziona tutto
$ echo "Questa prova usa mailx esmtp e procmail in uscita"|mailx -v -r mioindirizzo@gmail.com -s 'Prova procmail in uscita con esmtp' mioindirizzo@gmail.com
Sendmail arguments: "send-mail" "-i" "-v" "-r" "mioindirizzo@gmail.com" "mioindirizzo@gmail.com"
Aggiungendo le virgolette e togliendo il debug:
Codice: Seleziona tutto
set sendmail="/usr/bin/procmail -m /home/joe/.procmailoutrc"
Codice: Seleziona tutto
$ echo "Questa prova usa mailx esmtp e procmail in uscita"|mailx -v -r mioindirizzo@gmail.com -s 'Prova procmail in uscita con esmtp' mioindirizzo@gmail.com
/usr/bin/procmail -m /home/joe/.procmailoutrc: File o directory non esistente
"/home/joe/dead.letter" 11/411
. . . message not sent.
Codice: Seleziona tutto
$ cat mybin/procsendmail.sh
#!/bin/sh
/usr/bin/procmail -m /home/joe/.procmailoutrc
Codice: Seleziona tutto
set sendmail=/home/joe/mybin/procsendmail.sh
Codice: Seleziona tutto
$ echo "Questa prova usa mailx esmtp e procmail in uscita"|mailx -v -r mioindirizzo@gmail.com -s 'Prova procmail in uscita con esmtp' mioindirizzo@gmail.com
procmail: [4925] Thu Aug 13 13:46:18 2015
procmail: Assigning "PATH=/bin:/sbin:/usr/bin:/usr/sbin"
procmail: Assigning "SHELL=/bin/bash"
procmail: Assigning "MAILDIR=/home/joe/Mail"
procmail: Assigning "LOGFILE=/home/joe/Mail/.procmail.log"
procmail: Opening "/home/joe/Mail/.procmail.log"
- Perchè mai, mailx non riesce ad utilizzare la direttiva "set sendmail=/usr/bin/procmail -m /home/joe/.procmailoutrc" direttamente?
- E invece riesce a riciamare lo script contenente lo stesso comando?
- Per quale motivo compare dal nulla quel flag "-i" passato al comando "sendmail" (nel mio caso procmail) che io non ho impostato da nessuna parte?
- Come dovrei impostare meglio la direttiva "set sendmail=" nel ~/.mailrc senza ricorrere ad uno script esterno?
Grazie mille in anticipo!
