Newsgroup: it.comp.os.linux.sys
Titolo: Exim: remote host address is the local host

Problema alquanto singolare.
centralino freeswitch con ricezione fax tramite spandsp.
ho creato uno script che al termine della ricezione fax,
lo converte in PDF e lo invia tramite mail.
Sul server è installato nullmailer
Invio un fax di prova, viene ricevuto, il TIF viene creato,
freeswitch alla chiusura della chiamata esegue lo script.
Il mio script logga tutti i passaggi fino a quello di invio
email:
/usr/bin/mutt -n -f /dev/null -F /usr/local/freeswitch/scripts/muttrc -a 
$TMPFAX.pdf -s "FAX in arrivo" $DEST < /dev/null
muttrc:
set from = 'm...@indirizzo.tld'
set realname = 'Sono Io'
set folder = /dev/null
/etc/nullmailer/remotes:
mio.smarthost.tld smtp --user=miou...@ttt.xxx --pass=miapass
Ora, la mail sembra arrivare al mio smarthost con sopra exim, ma
viene rifiutata con questo spettacolare errore:
2010-11-04 13:17:02 1PDykY-0001X4-1N <= ro...@mio.smarthost.tld 
H=(mio.helo.tld) [111.222.333.444] P=esmtpa 
A=plain_server:miou...@ttt.xxx S=849 
id=1288873021.49337...@mio.smarthost.tld
2010-11-04 13:17:02 1PDykY-0001X4-1N remote host address is the local 
host: mio.smarthost.tld
2010-11-04 13:17:02 1PDykY-0001X4-1N == ro...@mio.smarthost.tld 
R=dnslookup defer (-1): remote host address is the local host
2010-11-04 13:17:02 1PDykY-0001X4-1N ** ro...@mio.smarthost.tld: retry 
timeout exceeded
2010-11-04 13:17:02 1PDykY-0001X6-5R <= <> R=1PDykY-0001X4-1N 
U=Debian-exim P=local S=1680
2010-11-04 13:17:02 1PDykY-0001X4-1N Completed
Dove veda che il "remote host address is the local host: 
mio.smarthost.tld" lo sa solo lui, sinceramente.
La cosa davvero buffa è che se eseguo lo script di invio FAX a mano,
tutto funziona. Non c'è alcuna differenza tra l'esecuzione fatta da
freeswitch e l'esecuzione fatta manualmente.
Che può essere?
-- 
Non tocca a noi dominare tutte le maree del mondo,
il nostro compito è di fare il possibile per la
salvezza degli anni nei quali viviamo,
sradicando il male dai campi che conosciamo.

 Che può essere?
FS non ci azzecca nulla.
é qualcosa che ha a che vedere con exim o con il tuo script.
Step 1) sniffa le due mail con tcpdump per capire che differenza c'è
le due mail sono quella lanciata a mano e quella automatica
Step 2) Exim ha uno zillione di configurazioni possibili quindi molto 
probabilmente il motivo lo trovi là.
Quell'errore è generato quando un ROUTER di exim riceve un errore del tipo
HOST_FOUND_LOCAL quando fa il lookup di un host remoto.
Quindi il tuo mutt sta probabilmente, mandando mail con un envelope sender 
sbagliato o senza FQDN.
Utilizza il punto 1) per capire quale sia il problema.

 R=dnslookup defer (-1): remote host address is the local host
A me ricorda tanto la quantità di rutti che il buon vecchio sendmail ti
tirava quando avevi scazzato a configurare i DNS (CNAME et similia).
Ma non conosco Exim per nulla...
-- 
Paranoia is a disease unto itself. And may I add: the person standing
next to you may not be who they appear to be, so take precaution.
-----------------------------------------------------------------------------
http://bofhskull.wordpress.com/

 Utilizza il punto 1) per capire quale sia il problema.
Ok. Ma ripeto, mutt viene invocato dallo script. E lo script invocato
è sempre quello li. Ovvero:
sendfax.sh:
mutt ...........
se sendfax.sh lo richiamo io, va, se lo chiama FS non va.
Comunque, ora faccio un po di debug.


 Ma non conosco Exim per nulla...
Il motivo è quello.
Capita (anche) quando non ci sono gli MX configurati per la
destinazione, pertanto Exim cerca di spedire la mail in locale e muore.
Ma la destinazione NON E' quella indicata come "remote host address" da
Exim, quello è il mittente e NON ha MX configurati, visto che è una
macchina che non riceve posta ed ha il mio Exim configurato come smarthost.
Mi vien da pensare che l'errore sia riferito ad un bounce, ovvero:
la mail originale viene accettata da Exim, per qualche motivo non viene
recapitata, va in bounce ed a quel punto, è il bounce a non poter essere
recapitato perchè l'envelope originale non ha MX configurati.
E se così fosse, tutto quadrerebbe.
Ma non son capace ad identificare a quale mail originale faccia 
riferimento il bounce. Ho scartabellato il log in lungo ed in largo,
su quella macchina transitano migliaia di mail al giorno, trovare UNA
mail senza avere alcun riferimento è impresa ardua.


 Comunque, ora faccio un po di debug.
yourfriend = ( tcpdump || mailsnarf )

 prima o poi accetterà la mail.
propendo più per la prima ipotesi.


Che può essere?
Che TI SEMBRA che non ci sia alcuna differenza, ma invece c'e' :-)
Prova mettere, nello script:
	set > /tmp/set.log
e vedi che valore hanno le varie variabili, intanto.
Leonardo
-- 
Enough, enough!  But, stranger, ere we part,
Glancing farewell to each nefarious bier,
This warning would I beg you take to heart:
There is an end to e'en the worst career!

 destinazione, pertanto Exim cerca di spedire la mail in locale e muore.
Oppure quando tu hai configurato Exim per fare la verifica del mittente.
In quel caso Exim cerca di capire a che Server spedirebbe l'E-Mail se
dovesse veramente farlo.
Trova che il Server con il quale dovrebbe parlare e' lui stesso (ma non
conosce il dominio perche' non e' nella sua lista di domini da accettare)
e fallisce.
E' un normale controllo che si fa quasi sempre, visto che una buona
quantita' di Spammer crea domini che hanno un MX a 127.0.0.1 e in questo
modo si possono tranquillamente rifiutare le E-Mail.
Prova a scrivere una regola nella ACL del RCPT che controlla una lista di
mittenti e, se il mittente e' in quella lista, NON esegue il controllo.
Ciao
Luca Bertoncello
(
luca...@lucabert.de
)
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 e vedi che valore hanno le varie variabili, intanto.
Provo, poi aspetto il primo fax. :)
-- 
Non tocca a noi dominare tutte le maree del mondo,
il nostro compito č di fare il possibile per la


 e fallisce.
Ma questo non pu� essere.
L'Exim che rifiuta una mail � uno smarthost, senza alcun dominio locale.
Io invio una mail dal centralino, usando il mio smarthost, verso un 
terzo server, ovvero il mio server di posta.
freeswitch -> exim_smarthost -> server_di_posta
exim_smarthost muore dicendo che il "remoto" ovvero freeswitch
punta a localhost, cosa impossibile, sia a livello di helo, sia
a livello di ip, sia a livello di mx, sia a livello di reverse,
sia a livello di envelope, sia a livello di header mail.
Non c'� alcun riferimento allo smarthost di exim.
L'unica cosa che potrebbe far casino � la mancanza di un MX per il
mittente, da qui il mio discorso sui bounce: il delivery non � andato
a buon fine per qualche motivo, lo smarthost fa il bounce ed � il bounce
a non poter essere recapitato perch� gli MX del destinatario bounce,
ovvero il vecchio mittente della mail originale) non hanno MX ed
exim cerca di consegnare la posta in locale, ed ovviamente fallisce.
Mi sta bene, non me ne frega niente dei bounce in questo caso,
mi interesserebbe per� sapere quale � la mail originale non
andata a buon fine, ma dubito di riuscire a recuperarla tra i log.
-- 
Non tocca a noi dominare tutte le maree del mondo,
il nostro compito � di fare il possibile per la


 terzo server, ovvero il mio server di posta.
Guarda che puoi tranquillamente configurare Exim per fare da SmartHost
**E** fare la verifica del mittente.
E' un'idea scema, lo ammetto, ma e' possibile.
Sicuro che non sia attiva la verifica? In parecchie distribuzioni lo e'.
Se hai modificato un file di configurazione esistente, l'idea non e' cosi'
remota.


 remota.
Ok, staccato ovunque.
Ma ripeto, se invoco il comando a mano tutto funziona, ed il mittente
è uguale, questo lo vedo dai log.
-- 
Non tocca a noi dominare tutte le maree del mondo,
il nostro compito è di fare il possibile per la


 � uguale, questo lo vedo dai log.
Ma non e' necessariamente uguale la sessione SMTP!
