Newsgroup: it.comp.os.linux.sys
Titolo: smtp relay gestito - cercasi soluzione alternativa

Ciao Raga,
  il problema è questo... devo permettere a certe sedi (ip dinamici) in 
giro di poter inviare tramite il mio server della posta. questo però 
senza che loro abbiano una casella di posta come succede con smtp_after_pop.
Avendo già l'elenco degli ip da abilitare, e non vorrei fare questo da 
firewall creando un relay open, mi sapete dire un demone smtp che mi 
permette di gestire il relay da database (sarebbe il massimo, visto che 
cambiano a volte).. o da qualche altro modo ma comunque interagendo con 
questo?
Grazie
Max


QUOTO tutto, poiche' non si capisce niente!
Prima di tutto, tutti i mailer tradizionali fanno gia' uso di database 
(di tipo transazionalei, come BDB). Tu vorresti usare un database 
relazionale? Perche'? Gestisci forse migliaia e migliaia di dati, o 
forse milioni?
Ma tu lo sai che Netscape Directory server, tramite un database 
transazionale, e' in grado di gestire milioni di entries?
Che ci devi fare con questo db di particolare? Sei convinto che e' piu' 
facile gestire le entries? Non capisco come.
Ad ogni modo, i range di indirizzi in (esempio) postfix sono gestiti in 
un file separato, che e' semplicissimo da amministrare.
-- 
il capitano dei carabinieri chiede a un appuntato: "quanto fa 1+1"
l'appuntato: "3"
I colleghi in coro "gli dia un'altra chance. Gli dia un'altra chance!"
Il capitano ci riprova. Quanto fa "2+1".
l'appuntato: "3"
I colleghi in coro "gli dia un'altra chance, gli dia un'altra chance!"

 Sendmail o postfix con ldap come backend.
sono daccordo, in linea teorica, ma tu tireresti su ldap per gestire, 
anche 100 indirizzi IP ?? :)


 anche 100 indirizzi IP ?? :)
fra le altre cose .... ldap fa uso ancora una volta di un db 
transazionale, quindi siamo al punto di partenza :)


 discorso.
qualsiasi DB ci metti non otterresti alcun vantaggio tangibile, nel 
gestire qualche centinaio di dati.. anzi dovresti sprecare altre risorse 
per gestire un demone in piu'. Ad ogni modo .... non so se siamo 
daccordo con lo scrivente appresso, ma questo e' quanto ho trovato e 
cosideriamo anche la premessa che abbiamo gia' un db transazionale nei 
nostri mailer:
This question is raised many times in different forms. The most common, 
however, is: Why doesn't OpenLDAP drop Berkeley DB and use a relational 
database management system (RDBM) instead? In general, expecting that 
the sophisticated algorithms implemented by commercial-grade RDBM would 
make OpenLDAP be faster or somehow better and, at the same time, 
permitting sharing of data with other applications.
The short answer is that use of an embedded database and custom indexing 
system allows OpenLDAP to provide greater performance and scalability 
without loss of reliability. OpenLDAP 2.1 (back-bdb) uses Berkeley DB 
concurrent / transactional database software. This is the same software 
used by leading commericial directory software.


> Authenticated smtps: smtp con crittografia ed autenticazione.
Non posso fare autenticazione... nelle sedi devo nattare la porta smtp 
sul mio server, senza modificare nulla sui client quindi niente 
autenticazione...
Visto che devo creare una specia di "software" vorrei fare le cose in 
modo chiaro semplice. ho provato con qmail+vpopmail+mysql, ma se 
modifico la tabella relay non mi accetta comunque...
quindi volevo provare con qualcosa di alternativo...
Max


come ti e' stato detto: usa ldap
poi al posto di editare un file di testo (con un comando del tipo: vi 
miofile -c :s/vecchioip/nuovoip/ -c :wq), dovrai lanciare ldapsearch, 
ldapmodify, ldappadd... vedi tu cosa e' piu' conveniente per gestire 
alcuni range di ip e poi soprattutto, facci sapere se le prestazioni 
aumentano o diminuiscono...


 Avendo già l'elenco degli ip da abilitare,
Sono scemo io o le due frasi di cui sopra non possono coesistere nella
stessa situazione?
Se hai IP dinamici hai 2 strade:
a) smtps (come già suggerito)
b) VPN come per esempio OpenVPN e fai riferimento all'indirizzo interno
che resta fisso
Se invece hai IP statici basta che configuri detti IP tra quelli
abilitati al relay.
Flavio Visentin

 che resta fisso
Non posso implementare vpn... :-(
Devo per forza gestirli... e preferivo adattare un server qmail 
esistente se era possibile... ma non so come inserire il server nel 
relay... se non nel file smtp.tcp...
c'è altra soluzione?
Grazie
Max


fatti una vpn

 giro di poter inviare tramite il mio server della posta.
http://postfix.state-of-mind.de/patrick.koetter/smtpauth/
-- 
Chaos A.D.		|	Raging crowd
Tanks on the streets	|	Burning cars
Confronting police	|	Bloodshed starts
Bleeding the Plebs	|	Who'll be alive?

 c'è altra soluzione?
Sì, installi un DNS dinamico sul tuo server e abiliti il relay per nome
invece che per indirizzo.
Poi fai puntare tutti i tuoi client al tuo server DNS in modo tale che
quando cambiano IP si riregistrino automaticamente e che quindi le tue
tabelle siano sempre aggiornate.
Resti scoperto solo tra un aggiornamento e l'altro.
Flavio

 invece che per indirizzo.
Forse mi sfugge qualcosa, ma il relay "per nome" come lo chiami, si 
applica alla zona inversa, che è un po' ardua da agganciare a un dynDNS...


Tradotto in "postfix":
mynetworks = 
127.0.0.1/8
, 
pippo.dyndns.org
, 
pluto.dyndns.org
,
 
paperino.dyndns.org
smtpd_recipients_restrictions = permit_mynetworks
Flavio

 smtpd_recipients_restrictions = permit_mynetworks
Ho presente. Ma -posto che non ci ho mai provato- temo che postfix tenti 
di applicare quella restriction alla zona inversa, ovvero:
- 1.2.3.4 si collega
- chi è il PTR per 4.3.2.1.in-addr.arpa?
- se è 
pippo.dyndns.org
 (o uno degli altri) consenti relay...
Già lo utilizzi in questa configurazione o era solo una idea?

 - se è 
pippo.dyndns.org
 (o uno degli altri) consenti relay...
A naso, mi pare piu' probabile che risolva 
pippo.dyndns.org
 alla partenza. 
Il che vorrebbe dire che il funzionamento non sarebbe quello atteso a meno
che il server non venga invocato tramite un superserver e che rifaccia, in
questo modo, il parsing del file di configurazione ad ogni invocazione.
Fabio (si vede tanto che non uso postfix?)

 questo modo, il parsing del file di configurazione ad ogni invocazione.
Boh. Il comportamento di default -ad esempio sulle ACL- è:
IP -> PTR
PTR -> A
E considera solamente il caso in cui i due coincidono, altrimenti lo 
tratta come un IP che non risolve...
Ribadisco, non ho mai provato a fare questo giochino in mynetworks 
(anche perchè non ne avrei ragione), ma mi pare plausibile che mantenga 
lo stesso comportamento.

 Già lo utilizzi in questa configurazione o era solo una idea?
Non lo utilizzo su server in produzione, ho solo controllato che
funzionasse inserendolo temporaneamente nella conf. di postfix di uno
dei miei server interni e testando che effettivamente permettesse il
relaying.
Non ho eseguito la verifica sul reverse, ma, almeno in linea teorica,
non dovrebbe aver alcuna attinenza con questa opzione; la risoluzione
inversa viene tirata in ballo per le restrictions, non nella definizione
delle networks.
Al più è sufficiente verificare nei log del DNS se arrivano anche le
query per il PTR.
Più che altro potrebbe essere necessario eseguire un reload della
configurazione ad ogni variazione di IP, perché non so se postfix
risolve il nome una sola volta al parsing della conf o se lo risolve ad
ogni connessione (come sarebbe logico facesse).
Flavio

 ogni connessione (come sarebbe logico facesse).
Ad ogni connessione sarebbe logico?
E se servi un migliaio di client, ad ogni connessione fai un migliaio di
risoluzioni?
A me non pare troppo logico ;-)

 A me non pare troppo logico ;-)
E' logico anche se meno efficiente.
Flavio

 cosa che già accade con le RBL, quindi non mi sembra un grosso problema.
Direi decisamente di no.
L'interrogazione di DNSBL scala linearmente con il numero di client: usi 
7 DNSBL, hai 1000 connsessioni, fai 7*1000 interrogazioni come worst case.
L'interrogazione al modo che dici, scala quadraticamente: hai 1000 
connessioni, effettui 1000*1000 risoluzioni come worst case.
Prestazionalmente, lo trovo disastroso, più che "poco efficiente"... ;-)

 connessioni, effettui 1000*1000 risoluzioni come worst case.
Dove la vedi la relazione quadratica?
Analizziamo la connessione:
Il client si connette al server
Il server rileva l'indirizzo IP del client
Il server esegue le query alle RBL e decide se chiudere o meno la
connessione
Il client inizia con l'ehlo
Il server esegue i check di validità dell'ehlo (tipo reverse mapping)
Il client invia il mail from
Il server esegue i check sul sender
Il client invia l'rcpt to
Il server esegue i check sui recipient ed inoltre interroga il DNS per
risolvere i nomi in mynetworks ed in base a quello accettare o rigettare
il relaying
Se tutto è OK avanti fino al Quit.
A me risulta che le interrogazioni DNS siano, per ogni connessione, pari
al numero di nomi da risolvere presenti in mynetworks.
Flavio

 al numero di nomi da risolvere presenti in mynetworks.
Appunto... ;-)
Se hai 5 nomi in mynetworks, avrai presumibilmente anche 5 macchine che 
si collegano per effettuare relay, quindi il numero di lookup che ti 
ritrovi ad effettuare è 5*5
Se sono 10 hai 10*10; se sono 1000, diviene 1000*1000...
Ovviamente l'effetto quardatico è limitato (nel caso tuo, almeno, dove 
hai -da quanto capisco- una sola macchina per traffico inbound e 
outbound) dal fatto che si applica solamente a client SMTP che tentino 
il relay.
In una macchina ipotetica (ma non troppo ipotetica, nel mio caso) il cui 
compito sia quello di fare solo relay, la cosa è decisamente poco 
scalabile ;-)
Byez!

 Se sono 10 hai 10*10; se sono 1000, diviene 1000*1000...
Ora ho capito cosa intendevi.
E' chiaro che non è una cosa fattibile con 1000 macchine esplicitate in
mynetworks, né è applicabile ad un grosso ISP.
Fino a una ventina di macchine, su un server che gestisca un centinaio
di utenti, le performance non sono un problema, soprattutto se installi
in locale un buon dns caching come pdnsd. Diciamo che ogni client
configurato per nome invece che per IP, impattera tanto quanto
l'aggiunta di una RBL.
Flavio

>>Se sono 10 hai 10*10; se sono 1000, diviene 1000*1000...
Grazie... mi mi sembra a dir poco un pò impegnativa...
in qmail e in altri mail server esistono gli utenti roaming... non 
potrei simulare una connessione pop da quegli ip o che altro inerendoli 
direttamente per estire il relay come se fossero utenti che avessero 
effettuato una conessione pop?
Grazie
Max

 effettuato una conessione pop?
Fai prima a provare.