Newsgroup: it.comp.os.linux.sys
Titolo: postfix sasl non mi funziona.

In dovecot ho settato:
socket listen {
     master {
       path = /var/run/dovecot/auth-master
       mode = 0600
       user = vmail
       group = vmail
     }
     client {
       path = /var/spool/postfix/private/auth
       mode = 0660
       user = postfix
       group = postfix
in postfix 
main.cf
:
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
Credo che non manchi niente eppure mi viene ancora consentito di spedire 
mail senza che mi venga richiesta autorizzazione.
Cosa mi manca ancora.

 Cosa mi manca ancora.
Continua a chiederti username/password o ti da relay access denied.?


Non mi chiede niente, mi permette di inviare senza chiedere 
l'autenticazione.
Lo sto testando dall'interno della mia struttura non e' che di default 
se il client appartiene alla stessa rete postfix non chiede nessuna 
autorizzazione?

 autorizzazione?
Dipende se la rete locale è listata in "mynetworks" e "permit_mynetworks" 
si trova prima di "permit_sasl_authenticated" in 
"smtpd_sender_restrictions".
Enrico


Il parametro mynetworks e' commentato quindi di default prende la rete 
in cui si trova il server, mentre ho messo permit_sasl_authenticated 
prima di tutte le altre regole in smtpd_recipient_restrictions ma 
continua a non chiedermi nessuna autorizzazione.
Come esempio ho preso 
http://wiki.dovecot.org/HowTo/PostfixAndDovecotSASL

 continua a non chiedermi nessuna autorizzazione.
posta le postfix restrictions.
e comunque, permit_sasl_authenticated è diverso da dire "se non è
autenticato non permettere".
ciao,
stefano

 Come esempio ho preso 
http://wiki.dovecot.org/HowTo/PostfixAndDovecotSASL
Quindi ti sei già risposto da solo.
mynetworks di default ti prende l'intera subnet, quindi se il client
da cui invii appartiene alla stessa subnet del server postfix ed hai
impostato smtpd_recipient_restrictions come da esempio sul sito Dovecot
è normale che ti faccia inviare senza autenticazione.
smtpd_recipient_restrictions = permit_mynetworks
                                permit_sasl_authenticated
                                reject_unauth_destination
vale a dire che come prima cosa lui autorizza tutti coloro che fan
parte di mynetworks, ovvero tutta la subnet, compreso il tuo client.
-- 
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.

 parte di mynetworks, ovvero tutta la subnet, compreso il tuo client.
Ho provato a mettere permit_sasl_authenticad prima di permi_mynetworks e 
niente.


smtpd_reject_unlisted_sender = yes
smtpd_restriction_classes = has_our_domain_as_sender
has_our_domain_as_sender =
   check_sender_access hash:/etc/postfix/maps/our_domain_as_sender,
   reject
smtpd_recipient_restrictions =
   permit_sasl_authenticated,
   check_client_access hash:/etc/postfix/maps/internal_networks,
   reject_non_fqdn_sender,
   reject_non_fqdn_recipient,
   permit_mynetworks,
   #permit_sasl_authenticated,
   reject_unauth_destination,
   reject_invalid_hostname,
   reject_non_fqdn_hostname,
   reject_unknown_sender_domain,
   check_sender_access hash:/etc/postfix/maps/sender_checks,
   check_helo_access hash:/etc/postfix/maps/helo_checks,
   reject_rbl_client 
zen.spamhaus.org
,
   reject_rbl_client 
bl.spamcop.net
,
   reject_rbl_client 
safe.dnsbl.sorbs.net
,
   check_policy_service inet:
127.0.0.1:60000
,
   permit
smtpd_data_restrictions = reject_unauth_pipelining,permit

 niente.
Ovviamente,
permit_sasl_authenticated autorizza se sei autenticato, ma se non lo
sei, lui non nega.
di coseguenza il permit_sasl_authenticated ritorna false, poi passa
alla regola seguente che ti approva.
Fai prima ad impostare il parametro mynetwork indicando solo il server.



Ti spiego qual'e' il problema che vorrei risolvere:
in azienda abbiamo server smtp e imap/pop3 pubblici.
Dall'esterno non e' possibile utilizzare l'smtp, solo dall'interno della 
nostra lan, dall'esterno ognuno utilizzera' l'smtp del proprio provider 
internet.
Mi sono posto il problema che ognuno potrebbe configurare il proprio 
client di posta utilizzando un account fittizio o addirittura un account 
di un collega e spedire posta a sua insaputa risultando lui come mittente.
La soluzione a questo credo che sia attivare l'autenticazione lato smtp, 
o sbaglio?

 di un collega e spedire posta a sua insaputa risultando lui come mittente.
e ti dice che poi da casa, usando l'smtp del suo provider, non lo farà
comunque?
ciao,
s


A quel punto non e' un problema mio, io devo tenere traccia di cio' che 
passa dal mio server.

 o sbaglio?
Attivare l'autenticazione rende questo tipo di abuso *tracciabile*, ma
non lo rende impossibile.
Per renderlo impossibile devi fare un passo in più, ovvero inibire a
ciascun utente di inviare con un envelope sender diverso dal proprio.
-- 
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/


Si e mi pare che tu stesso mi abbia indicato quale parametro per postfix 
utilizzare al riguardo.


Incredibile, ho impostato in mynetworks solo l'indirizzo del server ma 
non e' cambiato nulla, non riesco a capire cosa possa mancare ancora.

 non e' cambiato nulla, non riesco a capire cosa possa mancare ancora.
1000 a 1 che qui dentro:
/etc/postfix/maps/internal_networks,
stai accettando tutto ciò che arriva dalla tua subnet.



Commentato.....niente.

 Commentato.....niente.
stai per caso cercando di spedire verso un dominio gestito da quella
macchina?
ciao,
s

 macchina?
Beh si, come ho spiegato ho la necessita' di attivare l'autenticazione 
smtp per forzare gli utenti ad utilizzare solo i propri account ed 
evitare che si configurino account di altri utenti per poi spedire posta 
a nome loro.
Tutto questo all'interno dell'azienda poiche' il server smtp 
dall'esterno non puo', attualmente, essere utilizzato.

 a nome loro.
beh, se il tuo server è configurato per accettare tutte le mail
dirette a destinatari validi del dominio 
dominio.net
, allora
giustamente accetterà tutte le mail valide per quel dominio,
indipendentemente dall'autenticazione.
ciao,
s

 indipendentemente dall'autenticazione.
anyway, per fare quello che vuoi puoi giocare con le restriction
classes a seconda del client della connessione: se le connessioni
arrivano dalla tua rete interna userai una classe del tipo
from_internal = permit_sasl_authenticated, reject
my 2 cents
ciao
stefano


mynetworks = 
127.0.0.0/8
 172.16.10.10 quest'ultimo e' l'indirizzo del server
mtpd_recipient_restrictions =
   permit_sasl_authenticated,
   reject_non_fqdn_sender,
   reject_non_fqdn_recipient,
   permit_mynetworks,
   reject_unauth_destination,
   reject_invalid_hostname,
   reject_non_fqdn_hostname,
   reject_unknown_sender_domain,
   check_sender_access hash:/etc/postfix/maps/sender_checks,
   check_helo_access hash:/etc/postfix/maps/helo_checks,
   reject_rbl_client 
zen.spamhaus.org
,
   reject_rbl_client 
bl.spamcop.net
,
   reject_rbl_client 
safe.dnsbl.sorbs.net
,
   check_policy_service inet:
127.0.0.1:60000
,
   permit
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
se ora spedisco verso un dominio non gestito dal mio server mi dice 
relay denied, ovviamente perche' il mio client adesso non risulta far 
parte di mynetworks, l'autenticazione continua a non funzionare.

 parte di mynetworks, l'autenticazione continua a non funzionare.
i log, sia di dovecot che di postfix, che ti dicono?


Non riportano niente di particolare, nessun errore riguardante sasl, 
sembra che proprio di sasl non gliene possa fregare di meno, abilitato o 
no funziona come se non ci fosse.

 no funziona come se non ci fosse.
ti copio un pezzo di una mia configurazione, funzionante:
main.cf
:
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
in dovecot.conf setta
auth_verbose = yes
e magari anche
auth_debug = yes


E' la stessa che avevo io, forse sono un po impallato.
Quando tento di spedire mail non mi viene chiesta nessuna autenticazione 
da parte del server smtp e nei log non risulta niente.
Se faccio un telnet al server SMTP e poi do un AUTH PLAIN ffwefwefwf, mi 
dice authentication failed: quindi l'autenticazione risulta abilitata.
Com'e' che non mi viene chiesta dal server quando spedisco attraverso il 
mio client di posta?


Allora, se nel client di posta come configurazione per l'smtp gli dico 
di abilitare l'autenticazione la cosa funziona.
Il problema e' che se invece nel client non abilito l'autenticazione 
lato smtp l'utente puo' spedire ugualmente, io vorrei invece fare in 
modo che l'unica possibilita' per poter spedire sia quella di 
autenticarsi prima.

 autenticarsi prima.
senza autenticazione può spedire a tutti i domini o solo a quelli
locali?
se riesce a spedire a tutti senza autenticazione prova a lasciare solo
127.0.0.0/8
 in mynetworks.


A questo punto tutti quelli che non fanno parte di 
127.0.0.0/8
 devono 
autenticarsi altrimenti non e' consentito il relay.
Pero' in questo modo un utente puo' utilizzare l'smtp aziendale anche 
fuori dalla LAN.
Io vorrei che si potesse spedire attraverso l'smtp aziendale solo 
dall'interno della lan e per di piu' attraverso autenticazione.

 dall'interno della lan e per di piu' attraverso autenticazione.
forse non ti sono ben chiare le restrictions di postfix. ti consiglio
un ripassone.
se tu hai
permit_mynetworks,
permit_sasl_authenticated
e basta, allora se ti autentifichi spedisci, da qualsiasi parte tu
sia. scritte così sono regole a "corto circuito". se sei autenticato
passi il check.
ti ripeto, se vuoi fare quello che dici devi usare le restriction
classes, in modo che il permit_sasl_autenticated sia "destinato" solo
agli utenti della lan.

 agli utenti della lan.
Si hai ragione infatti stavo riflettendo sul suggerimento che mi avevo 
dato qualche post prima riguardo l'uso delle restriction classes.
Ora faccio qualche prova.