[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: /etc/aliases con numeros



On Fri, Jun 08, 2001 at 08:45:01AM +0200, Fernando wrote:
(...)
> 
> Estoy haciendo unos scripts para que me manden cosas a moviles y me
> gustaría usar los aliases.
> 
> Alguna idea más, y esta vez esfuerzate un poco ;-)
> 
	Lo mejor: usa qmail y utiliza una dirección usuario-movil, en el
$HOME del usuario pones un .qmail-movil
así
|preline /home/USUARIO/bin/resendmail -t XXXXX@test.com

	El resendmail es un programita que me hice que parte el correo
(recuerda la limitación de SMS de 160 caracteres) y lo envia a la dirección
específicada (hasta un máximo de cuatro cachos, para no saturar el movil)

	Lo envío adjunto.

	Javi


#!/usr/bin/perl -w
# Lee la entrada estandard corta las cabeceras de correo
# y coge el subject y el mensaje reenviandolo a
# la direccion indicada

# Autor: Javier Fernández-Sanguino Peña
# Distribuido bajo la GPL, ver www.gnu.org

use Getopt::Std;
getopts ('m:svht:');
if ( $opt_t and !$opt_h) {
	$send_to = $opt_t;
}
else {
        print <<EOM;
Uso: $0 [-hv] -t direccion de mail
Reenvia un mail
\t-h\testa ayuda
\t-t\tdirección de correo
\t-s\tSaca la salida por standard input
\t-v\tMensajes de depuracion activados
EOM
        exit 1;
}
$myself= "jfs";
$myself = $opt_m if $opt_m;
my $mensaje = "";
my $subject = "";
my $mail_program ="/usr/bin/mail";
# Máximo número de octetos a enviar
$MAX_OCT = 90;
$MAX_PART = 5;;
$PRE_PART = " (p ";
$POST_PART = " )";


my $head = 1;
print "Leyendo cabeceras\n" if $opt_v;
while ($head) 
{
	$line = <STDIN>;
	chomp $line;
# Cabeceras
	if ( $line eq "" ) 
	{ 
		$head = 0;
	}
	if ( $line =~ /^Subject:\s(.*)$/ ) {
		$subject = $1;
		print "El asunto es $subject\n" if $opt_v;
	}
	if ( $line =~ /^From:\s(.*)$/ ) {
		$origin = $1;
		print "El origen es $origin\n" if $opt_v;
	}
	if ( $line =~ /^[\w-]+:\s.*$/ or $line =~ /^\>/ )
	{ # El resto de las cabeceras se eliminan
		print "No añadirá al mensaje $line\n" if $opt_v;
	}
}
print "Leyendo cuerpo\n" if $opt_v;
while ( $line =<STDIN>) 
{
# Cuerpo
	chomp $line;
	# Y sino se guardan como mensaje
	$mensaje = $mensaje.$line."\n";
	print "Añadi $line al mensaje\n" if $opt_v;
}

if ( $origin !~ /movistar\.net/ and $origin !~ /DAEMON/ and  $origin !~ /$myself/) {

	$mensaje = "(de $origin) ".$mensaje;

	if (length $mensaje > $MAX_OCT)
	{ print "Es necesario partir el mensaje\n" if $opt_v; }

	my $posicion = 0 ; my $part = 1;
	while ($posicion < length ($mensaje) and $part<$MAX_PART) {

		$partMensaje =substr ($mensaje, $posicion, $MAX_OCT);
		$partMensaje = $partMensaje.$PRE_PART.$part.$POST_PART;
		$posicion = $posicion + $MAX_OCT;
		$part ++;
# TODO: Debería comprobar que el mensaje + el PRE_PART y POST_PART# y el número no se sale de MAX_OCT
# TODO: Poner un límite máximo al tamaño del mensaje (o decidir no poner
# PRE y POST si está en ciertos márgenes)
		print "Voy a enviar con $mail_program a $send_to el mensaje: $subject\n" if $opt_v;
		if (! $opt_s ){
			open (MAIL, "| $mail_program $send_to -s \"$subject\"") || die ("No puedo abrir el programa de correo $mail_program: $!");
			print MAIL $partMensaje;
			close MAIL;
		}
		else {
			print $partMensaje;
			print "\n"
		}

# Para que no nos carge la cosa
		$subject = "" if $part >1;
	}

}

exit 0;


Reply to: