Newsgroup: it.comp.os.linux.sys
Titolo: Stranezza con exim

Sto cercando di configurare un exim per fare
il relay autenticato tramite TLS.
Ho giï¿œ messo
tls_advertise_hosts = *
che dovrebbe mostrare STARTTLS a tutti gli host
che cercano di collegarsi.
Se io faccio un telnet sulla porta 25 dal mio computer
in effetti vedo il STARTTL
$ telnet 1.2.3.4 25
Trying 1.2.3.4...
Connected to 
aaaaaaaaaaa.it
.
Escape character is '^]'.
220 
aaaaaaaaaaa.it
 ESMTP Server
EHLO 
prova.it
250-aaaaaaaaaaa.it
. Hello 
prova.it
 [1.2.3.5]
250-SIZE 52428800
250-PIPELINING
250-STARTTLS
250 HELP
QUIT
221 
aaaaaaaaaaa.it
 closing connection
Se perï¿œ provo da un secondo computer, sempre nella stessa
LAN, sempre tramite telnet, non vedo lo STARTTLS.
Che diavolo 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.

>> host in tls_advertise_hosts? yes (matched "*")
Dai QUIT e rifai la prova dando l'IP di una macchina che e' invece
tagliata fuori dal TLS.
Poi compara (o manda qui) i risultati.
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

>>> host in tls_advertise_hosts? yes (matched "*")
A proposito di queste regole...
Ho temporaneamente disattivato il TLS in modo da poter fare
un debug su SMTP AUTH senza altre cose che potrebbero
generare problemi.
Molti client (ad occhio tutti quelli con outlook) non riescono
ad inviare posta beccandosi un bel relay non permitted.
Stando ai log:
09:07:58 23636 host in pipelining_advertise_hosts? yes (matched "*")
09:07:58 23636 host in auth_advertise_hosts? yes (matched "*")
09:07:58 23636 host in tls_advertise_hosts? no (option unset)
l'AUTH viene sparato fuori a tutti, ed � vero:
09:07:58 23636 SMTP>> 
250-aaaaaaaaaaaaaaaaa.it
 Hello
x.business.telecomitalia.it
 [1.2.3.4]
09:07:58 23636 250-SIZE 52428800
09:07:58 23636 250-PIPELINING
09:07:58 23636 250-AUTH PLAIN
09:07:58 23636 250-AUTH=PLAIN
09:07:58 23636 250 HELP
Come vedi ho messo anche "AUTH=PLAIN" specifico per outlook.
Eppure i client non fanno proprio l'autenticazione, non
inviano nemmeno AUTH PLAIN.
si, i client sono configurati per usare l'autenticazione
della posta in uscita e tramite postfix, tutto funzionava.
Cosa diavolo pu� essere?
(Basta il PLAIN giusto? Non ci vuole anche il LOGIN vero?)

 (Basta il PLAIN giusto? Non ci vuole anche il LOGIN vero?)
Temo proprio che Outlook usi LOGIN e NTLM...
Usando NTLM comunque funziona. Prova a implementare quello...
Con Exim e' semplicissimo, supponendo di avere una tabella account con i
campi accountname e passwd, puoi fare l'autenticazione cosi':
# SPA/NTLM-Authentication
spa:
  driver = spa
  public_name = NTLM
  server_password = ${lookup mysql{SELECT passwd FROM account WHERE
accountname='$1'}{$value}fail}


 accountname='$1'}{$value}fail}
Sarebbe quello che Outlook chiama "Utilizza password di protezione SPA?"
Altra domandina:
sto cercando di registrare il numero di mail inviate.
Ho creato uno script in perl (funzionante) che viene richiamato
ogni volta da dentro il router che si occupa di fare il relay smtp.
Ho per� due problemi:
1) il router � invocato probabilmente prima dell'autenticazione, tant'�
che mi vengono loggate anche le mail che finiscono in relay not permitted.
2) vorrei espandere la variabile inerente lo username usato in fase
di autenticazione SASL, non il mittente della mail. Questo perch�
molti nostri clienti usano lo stesso account SMTP su pi� mail, e
devo conteggiare complessivamente gli invii.
Ho provato ad espandere "authenticated_user" ma a quanto pare non
esiste a livello router, probabilmente per il problema al punto 1,
ovvero: il router viene interpretato prima dell'autenticazione?
Come posso eseguire uno script ad ogni mail inviata correttamente
*dopo* l'opportuna autenticazione?
Comunque, � una figata exim.
Un po contorto da capire come configurazione, ma fa anche il caff�.

 Un po contorto da capire come configurazione, ma fa anche il caff�.
Lo so! E' per quello che ho buttato alle ortiche Postfix!
Comunque non sei l'unico a usare queste parole...
Nel 2005 ho partecipato ad una Mailkonferenz a Magdeburg (presenti, tra
gli altri Witse Wenema e Marc Martinec). La conferenza, purtroppo, era
quasi tutta basata su Postfix (essendo molto dura trovare docenti
preparati su Exim), ma qualcuno lo usava.
Un tipo, SysAdmin dell'universita' di Chemnitz (che usa Exim) ha definito
questo programma "la macchina del caffe' delle E-Mail".


 questo programma "la macchina del caffe' delle E-Mail".
Lo uso da 3 giorni e posso solo che confermare.
Puoi controllare tutto, in qualunque punto della sessione SMTP, in
qualunque modo, senza utilizzo di moduli esterni. Al massimo con un
po di perl. La stessa configurazione che ho adottato adesso va a
sostituire un postfix con decine e decine di mappe e svariati addon
esterni, tra cui i milter.
Per�, visto che � una macchina del caff�, voglio usare i check in
realtime, evitando di manipolare i log in un secondo tempo come
facevo con il caro vecchio postfix.
-- 
Non tocca a noi dominare tutte le maree del mondo,
il nostro compito � di fare il possibile per la


 con il caro vecchio postfix.
mi piacerebbe avere un exim evoluto con le code di postfix (che sono 
meglio) e col quale possa fare:
my $sender;
sub on_mailfrom() {
	my ($local_part, $domain, $params) = @_;
	my $sender = $local_part.'@'.$domain;
	return OK
}
sub on_rcpt() {
	my ($local_part, $domain, $params) = @_;
	my $sql = "
		UPDATE stats SET ....
	";
	$dbh->do($sql);
	return OK
}
etccc....
Questo sarebbe ancora meglio...
(ci sto lavorando)

 facevo con il caro vecchio postfix.
Prova come ti ho detto.
Altro non mi viene in mente, ma se ti iscrivi alla ML di Exim forse
qualcun altro ti sa dare altre dritte!


 }
Ossia per fare proprio quello che Gandalf vuole fare?
Guarda quanto ho scritto nel mio post di prima.
Metti una warn nella ACL per l'RCPT e nella condition gli metti il tuo
Statement SQL.
Occhio solo a ritornare yes in entrambi i casi.


 $sender_address...
No.
Avere ad ogni "stage" della transazione SMTP non una ACL in un 
"metalinguaggio" come Exim, ma avere proprio un linguaggio vero per fare 
quello che mi pare.
Max

 qualcun altro ti sa dare altre dritte!
Prover�, ma ad occhio, non mi sembrano soluzioni valide.
Sia perch� il sender_address a me non serve (serve il nome utente
usato per l'autenticazione) sia perch� non devo contare lo spam
che prova ad inviare mail senza autenticazione.


 quello che mi pare.
Perchè, in postfix quale linguaggio 'vero' avresti oltre al OK REJECT
delle mappe?
-- 
Non tocca a noi dominare tutte le maree del mondo,
il nostro compito è di fare il possibile per la


 delle mappe?
Appunto.

 Appunto.
E quindi perchè non ti van bene le ACL di
Exim?
Non puoi usare un file per gli OK, un file per
i REJECT e così via? Oppure potresti fare un
parser in perl (poche righe di codice) che cerca
un indirizzo e legge il valore corrispondente.


 un indirizzo e legge il valore corrispondente.
Ok, Ok.
O mi sono spiegato male io, oppure non hai capito tu.
In entrambi i casi, ne riparliamo fra un pò!
Max

 In entrambi i casi, ne riparliamo fra un pò!
E' più probabile che non abbia capito io :)


 che prova ad inviare mail senza autenticazione.
Quello non conta! Tu incrementi il contatore SOLO in caso di
autorizzazione.


 posto!
Si, avevo provato, ma usando il router, tale variabile non esisteva.
Posso usare la warn condition facendola puntare ad una subroutine
in perl che oltre a salvare il contatore mi verifica che l'utente
non abbia sforato? In tal caso la condizione sarebbe false, pertanto
l'ACL del recipient dovrebbe negare l'invio.

 l'ACL del recipient dovrebbe negare l'invio.
Si, certo! Diciamo che, se spezzi in due il processo, mettendo la routine
in PERL (che poi, perche' dev'essere in PERL? Non riesci a farla fare ad
Exim direttamente? Direi che non puo' essere molto di piu' di una INSERT o
una UPDATE nel DB...) nella ACL per RCPT e il controllo, seguito da un
DENY nell'ACL dell'EHLO, avresti una soluzione piu' pulita, rifiutando
direttamente l'E-Mail all'autenticazione e quindi tagliando fuori
eventuali problemi legati a Bugs noti e ignoti di Exim e/o della tua
routine.
Ti consiglio comunque l'ottimo Libro "The Exim SMTP Mail Server: Official
Guide to Release 4" scritto proprio da Philip Hazel (ISBN:
978-0954452971). E' un po' caro, ma vale tutti i soldi che paghi fino
all'ultimo centesimo!


 all'ultimo centesimo!
Vado subito a vedere.
Io ho il PDF, da qualche parte c'� un libro gratuito di exim che gira,
ma non ho avuto il tempo di leggerlo. Diciamo che son passato ad exim
"per caso" e non era previsto, ma � stato amore a prima vista :)

 "per caso" e non era previsto, ma � stato amore a prima vista :)
Anche per me... Avevo sempre usato Postfix, spesso bestemmiando per la
configurazione un po' rigida, ma non conoscevo Exim.
Poi ho trovato lavoro da un ISP che usava Exim e sono stato "costretto" ad
impararlo.
Un mese dopo aver iniziato (giusto il tempo di imparare i rudimenti di
Exim) ho cestinato Postfix su lucabert.de... :)


 Dimmi che libro e', per favore...
Sono le specifiche di exim in versione PDF:
http://www.exim.org/exim-pdf-current/doc/spec.pdf


 
http://www.exim.org/exim-pdf-current/doc/spec.pdf
Ah, la documentazione standard! Beh, e' ottima, ma credimi! Il libro di
Hazel contiene parecchio non compreso nella documentazione (perlopiu'
trucchi vari).


 trucchi vari).
Spero sia pi� "discorsivo" rispetto alla documentazione.


 Spero sia pi� "discorsivo" rispetto alla documentazione.
Direi di si!
