Página 1 de 1

Problema al autenticar SMTP del Postfix con Dovecot

Publicado: Mar, 15 Oct 2013, 09:39
por abdielalej
Hola a todos...soy nuevo en el foro, espero me puean ayudar..
Uso Debian 6 squeeze

Estoy tratando de autenticar el SMTP del postfix con dovecot...

--Ya active al daemon en dovecot.conf en auth default:

Código: Seleccionar todo

client {
      # The client socket is generally safe to export to everyone. Typical use
      # is to export it to your SMTP server so it can do SMTP AUTH lookups
      # using it.
      path = /var/spool/postfix/private/auth
      mode = 0660
      user = postfix
      group = postfix
    }
---Tambien puse lo parámetros SASL en el main del postfix:

Código: Seleccionar todo

#SASL parameters
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_authenticated_header = yes
broken_sasl_auth_clients = yes
--- Puse las restricciones del recipient:

Código: Seleccionar todo

smtpd_recipient_restrictions =
  check_policy_service inet:127.0.0.1:10040
  permit_mynetworks
  permit_sasl_authenticated
  reject_unauth_destination
---Hasta aquí todo bien...pero si lo dejo así...postfix no me obliga a mis clientes locales a autenticarse cuando van a enviar un email. Si le quito a mis clientes (outlook es el que utilizo en mi red) la pestaña "Mi servidor de salida (SMTP) requiere autenticación"...envían sin autenticarse...Si se la dejo marcada...verdad que tira contra dovecot perfecto, pero un listo puede desmarcar esa opción y envía sin permiso. Lo que quiero es que obligado tenga que marcar esa opción para poder enviar...

---Entonces puse esta sentencia:

Código: Seleccionar todo

smtpd_client_restrictions = permit_mynetworks,
                            permit_sasl_authenticated,
                            reject
Ahora lo hace perfecto...pero también lo hace para los correos que me quieren entrar a mi servidor desde fuera. Y obviamente no me entran porque tendrían que autenticarse...ya he probado de todo...necesito de la ayuda de ustedes..
Cómo hago para cuando el destino final sea mi servidor no pida contraseña y cuando algún correo quiera hacer relay entonces pida la contraseña...

Ayudaaaaa...gracias...

Re: Problema al autenticar SMTP del Postfix con Dovecot

Publicado: Vie, 18 Oct 2013, 13:13
por abdielalej
Gracias a todos ya resolví...

Re: Problema al autenticar SMTP del Postfix con Dovecot

Publicado: Jue, 31 Oct 2013, 07:55
por abdielalej
Bueno al final la solución que implementé no está del todo bien...porque entonces hay algo en la configuración que no deja que me entren bien los correos de gmail...de todos los otros dominios me entran perfecto (eso me preocupa)....pues bien en vez de utilizar:

Código: Seleccionar todo

 smtpd_client_restrictions
Utilicé :

Código: Seleccionar todo

smtpd_relay_restrictions =
      	permit_sasl_authenticated
	reject_unauth_destination
Ya con esto...cuando el correo intenta hacer relay pide contraseña...mientras si la finalidad es tu dominio no la pide..
O sea es la solución perfecta para cuando nuestros clientes quieran mandar correos externos exigirle contraseña...y sin embargo cuando un servidor smtp externo quiera conectarse con nosotros para mandarnos un correo...como el destino final es nuestro dominio...nuestro servidor no exigirá contraseña...que era el dolor de cabeza con: smtpd_client_restrictions

Si te das cuenta cual sería el error con gmail...te agradecería me lo hicieras saber. Ahora mismo tengo un quebradero de cabeza con eso..desde yahoo, hotmail, navistar, los dominios nacionales...en fin de todos me llegan bien...excepto gmail...

Espero te sirva...Saludos

Re: Problema al autenticar SMTP del Postfix con Dovecot

Publicado: Vie, 15 Nov 2013, 00:42
por Eddy Leonid
mira en smtpd_client_restrictions no le pusiste que no te permitiera auteticaciones planas en mi caso lo tengo asi y me funciona bien

Código: Seleccionar todo

smtpd_client_restrictions =
    permit_mynetworks,
    reject_plaintext_session,
    permit_sasl_authenticated,
    reject
cualquier cosa me dices

Saludos

Re: Problema al autenticar SMTP del Postfix con Dovecot

Publicado: Vie, 15 Nov 2013, 15:21
por abdielalej
Osea cuando pones eso...se pueden conectar desde fuera con tu servidor....porque ese es el problema..

Otra cosa:
Tienes implementado restricciones nacionales e internacionales, si es así ¿cómo?
Porque yo lo tengo controlado utilizando unas reglas en el postfwd.cf....pero no me gusta eso...hace su trabajo..pero es una de las cosas que me impiden exigir la autentificación...porque ya le doy permiso a determinados usuarios a enviar o a recibir y ya se mabraca todo..sale sin pedir contraseña...
quiero quitarlo...pero necvesito configurar bien esas restricciones...si las tienes ayúdame con eso..

Gracias..

Re: Problema al autenticar SMTP del Postfix con Dovecot

Publicado: Sab, 16 Nov 2013, 10:27
por Eddy Leonid
mira para el caso de las restricciones nacionales e internacionales en mi caso lo uso contra ldap, es mas cómodo a mi modo de ver, en main.cf te muestro +- como lo tengo

Código: Seleccionar todo

smtpd_restriction_classes =
                                         nacional-in,
                                         nacional-out,
                                         internac-in,
                                         internac-out
en mi caso lo tengo dividido asi porque puede que me convenga que un determinado usuario por ejemplo pueda recibir correos internacional pero a la vez no pueda enviarlos.

luego

Código: Seleccionar todo

nacional-in =
    check_sender_access regexp:/etc/postfix/filters/nacional-in,
    reject

nacional-out =
    check_recipient_access regexp:/etc/postfix/filters/nacional-out,
    reject

internac-in =
    check_sender_access regexp:/etc/postfix/filters/internac-in,
    reject

internac-out =
    check_recipient_access regexp:/etc/postfix/filters/internac-out,
    reject
donde por ejemplo en nacional-out pongo esto:

Código: Seleccionar todo

/\@*\.cu$/			        RELAY
/\@*/         		        REJECT Su mensaje no pudo ser entregado: Acceso nacional.
luego le añades esto a las restricciones

Código: Seleccionar todo

smtpd_sender_restrictions = 
                                         check_sender_access ldap:/etc/postfix/ldap/access-out.cf,
                                         .........
le pongo ..... para que le pongas el resto de las restricciones que tienes especificadas

Código: Seleccionar todo

smtpd_recipient_restrictions = 
                                            check_recipient_access ldap:/etc/postfix/ldap/access-in.cf,
                                            ...........
en access-in.cf:

Código: Seleccionar todo

server_host = ldap.an.ho.rimed.cu
search_base = dc=an,dc=ho,dc=rimed,dc=cu
query_filter = mail=%s
result_attribute = mailAccessIn
cache = no
bind = yes
en access-out.cf

Código: Seleccionar todo

server_host = ldap.an.ho.rimed.cu
search_base = dc=an,dc=ho,dc=rimed,dc=cu
query_filter = mail=%s
result_attribute = mailAccessOut
cache = no
bind = yes
claro esta que en ldap tienes que especificarle los atributos al usuario mailAccessIn y mailAccessOut

donde si quieres que el usuario solo tenga acceso nacional le espcificas: nacional-in y nacional-out, respectivamente, puedes añadirle otras restricciones como por ejemplo acceso limitado, etc.

Para lo que me comentas de que se te conecten directamente con tu servidor tienes que verificar aqui:

Código: Seleccionar todo

mynetworks = 

Cualquier duda me comentas.

Saludos

Re: Problema al autenticar SMTP del Postfix con Dovecot

Publicado: Sab, 16 Nov 2013, 10:46
por abdielalej
Edy gracias por contestar..
precisamente el problema mio es que no uso LDAP...entoces no se cómo decirle a cada usuario...tú eres nacional-in por ejemplo...
estoy rompiéndome la cabeza a ver...si me pudieras dar un norte...una sitaxis que yo pueda decirle al postfix..eres tal cosa..

Gracias...

Re: Problema al autenticar SMTP del Postfix con Dovecot

Publicado: Dom, 17 Nov 2013, 10:47
por Eddy Leonid
Mira en este caso puedes apoyarte en este script que utilizaba antes de usar ldap

Código: Seleccionar todo

#!/bin/bash
#####################################################################

#####################
#     Funcion: 0xDF06    #
#####################
Upgrade_db()
{
cat /etc/postfix/users/in/*.i > /etc/postfix/_usuarios_in
cat /etc/postfix/users/out/*.o > /etc/postfix/_usuarios_out
postalias /etc/aliases
postmap /etc/postfix/_filtro_nac
postmap /etc/postfix/_usuarios_in
postmap /etc/postfix/_usuarios_out
postmap /etc/postfix/transport
postmap /etc/postfix/adjuntos
newaliases
/etc/init.d/postfix reload
}

#####################
#     Funcion: 0xDF0A    #
#####################
Update_db()
{
case $2 in
	-i) echo -ne "Cuenta Internacional\n"
	Del_User_db $1
	;;
	*) echo -ne "Cuenta Nacional\n"
	echo -ne "$1@an.ho.rimed.cu\t\t\tnac_in\n" > /etc/postfix/users/in/$1.i
	echo -ne "$1@an.ho.rimed.cu\t\t\tnac_out\n" > /etc/postfix/users/out/$1.o
	Upgrade_db
	;;
esac
}

######################
#     Funcion: 0xDF1B     #
######################
Del_User_db()
{
if [ -f /etc/postfix/users/in/$1.i ]; then
rm /etc/postfix/users/in/$1.i
fi
if [ -f /etc/postfix/users/out/$1.o ]; then
rm /etc/postfix/users/out/$1.o
fi
Upgrade_db
}

######################
#     Funcion: 0xDF3D     #
######################
Info()
{
	echo -ne "Argumento no valido...\n"
	echo -ne "Sintaxis:  mail_user [User] [Opcion] [Access]\n"
	echo -ne "Opcion:\n"
	echo -ne "[-c] - Crear usuario\n"
	echo -ne "[-e] - Eliminar usuario\n"
	echo -ne "[-p] - Cambiar password\n"
	echo -ne "Access:\n"
	echo -ne "[-i] - Internacional\n"
	echo -ne "[Sin argumento] - Nacional\n"
}

######################
#     Funcion: 0xDF5C     #
######################
Verify_Home_Maildir_User()
{
if [ ! -d /home/$1/Maildir ]; then
	mkdir -p /home/$1/Maildir/new /home/$1/Maildir/cur /home/$1/Maildir/tmp
		if [ ! -f /home/$1/.procmailrc ]; then
		echo -ne "TATH=/usr/bin:/bin:/usr/local/bin:.\nMAILDIR=\$HOME/Maildir\nDEFAULT=\$MAILDIR/" > /home/$1/.procmailrc
		fi
fi
	chown $1 -R /home/$1
Update_db $1 $2
}

######################
#     Funcion: 0xDF2E     #
######################
Verify_Dirs_Files_Postfix()
{

if [ ! -d /etc/postfix/users/in ]; then
mkdir -p /etc/postfix/users/in
fi

if [ ! -d /etc/postfix/users/out ]; then
mkdir -p /etc/postfix/users/out
fi

if [ ! -f /etc/postfix/transport ]; then
echo –ne "an.ho.rimed.cu\tlocal:\nlocalhost\tlocal:" > /etc/postfix/transport
fi

if [ ! -f /etc/postfix/adjuntos ]; then
echo –ne "/filename=.*\.(rar|tar.gz|zip)/ OK\n/filename=.*\.*/ REJECT Adjuntos  permitidos (rar, zip, tar.gz)\n" >  /etc/postfix/adjuntos
fi

if [ ! -f /etc/postfix/_filtro_nac ]; then
echo -ne "/\@*\.cu/\t\t\tRELAY\n/^\@/\t\t\tREJECT 550 Formato no valido.\n/[!%\@].*\@/\t\t\tREJECT 550 Error Sintaxis\n/\@*/\t\t\tREJECT Correo Internacional no autorizado.\n" > /etc/postfix/_filtro_nac
fi
Main $1 $2 $3
}

######################
#     Funcion: 0xDFF1     #
######################
Main()
{
exist=`grep "^$1:" /etc/passwd`
case $2 in
		-c)	if [ -n "$exist" ] ; then
				echo "El usuario ya existe"
				Verify_Home_Maildir_User $1 $3
				else
					adduser --home /home/$1 --shell /bin/false $1
				        Verify_Home_Maildir_User $1 $3
			fi
		;;
		-e)	if [ -n "$exist" ] ; then
				deluser --remove-home --remove-all-files $1
				Del_User_db $1
				else
					echo "El usuario no existe"
			fi
		;;
		-p) passwd $1
		;;
		*) Info 
		;;
esac
}
Verify_Dirs_Files_Postfix $1 $2 $3

########## Fin del script
Comandos del script:

Sintaxis:
mail_user [user] [Opción] [Access]

Opciones:
-c    Crear usuario
-e    Eliminar usuario
-p    Cambiar Password del usuario

Access:
-i   Internacional
[Sin argumento]    Nacional

mail_user user1 -c -i             # Crea la cuenta user1 con acceso Internacional.
mail_user user2 -c                # Crea la cuenta user2 con acceso Nacional.
mail_user user1 -c                # Le cambia el acceso al usuario user1 de Internacional a
Nacional.
mail_user user1 -p                # Cambiar Password del usuario user1.
mail_user user2 -e                # Eliminar Cuenta del usuario user2.

y en postfix

Código: Seleccionar todo

smtpd_restriction_classes  =
 nac_in,
 nac_out

nac_out  =
 check_recipient_access regexp:/etc/postfix/_filtro_nac,
 reject

nac_in =
 check_sender_access regexp:/etc/postfix/_filtro_nac,
 reject

smtpd_sender_restrictions =
 check_sender_access hash:/etc/postfix/_usuarios_out,
 ...........

smtpd_recipient_restrictions =
 check_recipient_access hash:/etc/postfix/_usuarios_in,
 ..........
Cualquier duda puedes contactarme.

Saludos

Re: Problema al autenticar SMTP del Postfix con Dovecot

Publicado: Dom, 17 Nov 2013, 20:17
por hugo
Eddy, es bueno que ayudes, pero no seas holgazán y utiliza la etiqueta [code] cuando vayas a pegar un bloque de código.
Mira que tengo cosas mejores que hacer con mi tiempo que andar legibilizando posts innecesariamente. ;)

Re: Problema al autenticar SMTP del Postfix con Dovecot

Publicado: Lun, 18 Nov 2013, 09:54
por Eddy Leonid
Disculpa hugo, aún me estoy familiarizando con las etiquetas pues soy nuevo en un foro, ya copié para la próxima.

Saludos