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: