¿Alguien sabe como hace resto?
Si nos explicas que es correos internacional ... Puede ser que alguien
te ayude.
--
Menos mal que IP no es IP( Intelectual Property)
Digamos que lo que quiero hacer es que solo un grupo de usuarios que
yo selecciones pueda enviar correos a dominios como yahoo.es,
gmail.com..etc y los demás que solo tengan acceso nacional y local....
Quieres que unas direcciones de correo no puedan enviar mas que a
ciertos dominios.
El problema es �que direcciones de pertenecen al grupo nacional? �La
tuya de google esta en ese grupo? �La universidad local con top domain
edu? �Tu lug con org?
El grupo con solo correo local es trivial basta con desahbilitar el
relay para esas cuentas.
Exactamente, por ejemplo yo como administrador si puedo enviar correos
a dominios .com, .net así como los usuarios autorizados para ello,
pero hay otro grupo que solo puede envíar correos digamos .cu
Me gustaría que me mostraras la forma de hacerlo. Ya logré más o menos
lo que quería pero usando un script de perl...
Te lo voy a agradecer.
Mira http://www.exim.org/howto/relay.html y
http://www.exim.org/exim-html-4.20/doc/html/spec_37.html
y asegurate que bloqueas en el corafuegos las salidas a los servicios
smpt que no tengan origen en tu servidor.
Ok. Veré esos enlaces. Muchas gracias, luego te cuento.
##
## -*- Mode: Perl; indent-tabs-mode: t; c-basic-offset: 4; tab-width:
4 -*-
##
## perl_code.pl
## Copyright (C) Leinier C. Salfran 2009 <salf...@yahoo.es>
##
## perl_code.pl is free software: you can redistribute it and/or
modify it
## under the terms of the GNU General Public License as published by
the
## Free Software Foundation, either version 3 of the License, or
## (at your option) any later version.
##
## perl_code.pl is distributed in the hope that it will be useful, but
## WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
## See the GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
along
## with this program. If not, see <http://www.gnu.org/licenses/> or
write
## to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
Floor
## Boston, MA 02110-1301, USA
##
use POSIX;
#
# Variables globales
my $global_dominio = 'midominio';
#
# ID de los grupos
my $grupo_correo_nacional = "correo-nacional";
my $grupo_correo_internacional = "correo-internacional";
#
# Valores del tamano de envio
my $tamano_mensaje_nacional = 1048576;
my $tamano_mensaje_internacional = 716800;
sub UsuarioPerteneceAlGrupo
{
my $grupo = shift;
my $usuario = shift;
($nombre,$contrasena,$gid,$miembros) = getgrnam($grupo);
if ($miembros =~ m/$usuario/x) { return 1; }
return 0;
}
sub obtenerusuariodesdecorreo
{
($usuario, $dominio) = split('@', shift);
return $usuario;
}
sub obtenerdominiodesdecorreo
{
($usuario, $dominio) = split('@', shift);
return $dominio;
}
sub obtenerdominio1erniveldesdedominio
{
my $dominio = shift;
my $dominio1ernivel = (substr($dominio, -4, 1) eq '.' ? substr
($dominio, -3) : substr($dominio, -2));
return $dominio1ernivel;
}
sub estadirigidoalista
{
my $remitente_dominio = shift;
my $dominio = shift;
if ($remitente_dominio eq "listas.". $global_dominio) { return
1; }
if ($remitente_dominio eq "listas.". $global_dominio) { return
1; }
if ($remitente_dominio eq "listas.". $global_dominio) { return
1; }
if ($remitente_dominio eq "listas.". $global_dominio) { return
1; }
if ($dominio eq "listas.". $global_dominio) { return 1; }
if ($dominio eq "listas.in.". $global_dominio) { return 1; }
if ($dominio eq "listas.el.". $global_dominio) { return 1; }
if ($dominio eq "listas.gd.". $global_dominio) { return 1; }
return 0;
}
sub obtenerpermisoenvio
{
my $remitente = Exim::expand_string('$sender_address');
my $remitente_dominio = Exim::expand_string
('$sender_address_domain');
my $dominio = Exim::expand_string('$domain');
if (estadirigidoalista($remitente_dominio, $dominio)) { return
true; }
my $usuario = obtenerusuariodesdecorreo($remitente);
my $dominio1ernivel = obtenerdominio1erniveldesdedominio
($dominio);
my $resultado = false;
if ($dominio eq $global_dominio)
{
return true;
} else {
if ($dominio1ernivel eq "cu")
{
if (UsuarioPerteneceAlGrupo($grupo_correo_internacional,
$usuario)) { return true; }
if (UsuarioPerteneceAlGrupo($grupo_correo_nacional, $usuario))
{ return true; }
return "El usuario '$usuario' no posee privilegios
suficientes para enviar correo al dominio especificado: $dominio";
} else {
if (UsuarioPerteneceAlGrupo($grupo_correo_internacional,
$usuario)) { return true; }
return "El usuario '$usuario' no posee privilegios
suficientes para enviar correo al dominio especificado: $dominio";
}
}
return "El usuario '$usuario' no posee privilegios para enviar
correo que no sea local: 'ipigto.rimed.cu'.";
}
sub mensajetamanopermitido
{
my $remitente = Exim::expand_string('$sender_address');
my $remitente_dominio = Exim::expand_string
('$sender_address_domain');
my @destinatarios = split(', ', Exim::expand_string
('$recipients'));
my $tamano = Exim::expand_string('$message_size');
my $usuario = obtenerusuariodesdecorreo($remitente);
my $dominio1ernivel = obtenerdominio1erniveldesdedominio
($dominio);
if ($remitente_dominio ne $global_dominio)
{
return true;
}
for (my $i = 0; $i < scalar(@destinatarios); $i++)
{
if (obtenerdominiodesdecorreo($destinatarios[$i]) ne $global_dominio)
{
if (obtenerdominio1erniveldesdedominio
(obtenerdominiodesdecorreo($destinatarios[$i])) eq "cu")
{
if ($tamano > $tamano_mensaje_nacional)
{
return "El mensaje ha superado el limite de tamano (".
($tamano_mensaje_nacional / 1024) ."KB) para el destino especificado:
'$destinatarios[$i]'.";
}
}
else
{
if ($tamano > $tamano_mensaje_internacional)
{
return "El mensaje ha superado el limite de tamano (".
($tamano_mensaje_internacional / 1024) ."KB) para el destino
especificado: '$destinatarios[$i]'.";
}
}
}
}
return true;
}
> Bueno antes que nada disculparme por no escribir antes. Te cuento que
> resolví todo esto con un script en perl, aquí se los dejo por si
> alguien lo necesita:
Espero no ser pedante por ello, pero te recomiendo que al dar nombres
tan largos a las funciones separes_las_palabras_con_subrayado
o bien CapitalicesCadaPalabra. Resulta maś fácil de leer.
--
Gonzalo Pérez de Olaguer Córdoba <gp...@iies.es> --- www.gpoc.es
PGP key 2861C704 --- F206 5671 6789 425D 111C 1302 214F 1934 2861 C704
No entiendo que quieres decir.
Que resulta más fácil de leer si en vez de usar nombres de funciones
como éste:
obtenerusuariodesdecorreo
les pones nombres como éstos:
obtener_usuario_desde_correo
o bien
ObtenerUsuarioDesdeCorreo
Nada, un detalle nomás :-)
--
Gonzalo Pérez de Olaguer Córdoba <gp...@iies.es> --- www.gpoc.es