Script Shell para Enviar Correo Masivo desde Terminal
El archivo ha sido modificado por razones de seguridad les agradecería mucho me ayudaran a explicar un poco de el significado de las líneas que conforman este script. Seguramente a algunos les servirá.
Se que es muy claro en algunas líneas pero no entiendo la parte en la que se integra a OpenLDAP, y lo de MIME (PERL).
Muchas gracias y Saludos!
#!/bin/sh
export export LANG=en_US
from=$1
text=$2
subject=$3
server=$4
if [ "$#" == "5" ]; then file1=$5; fi
if [ "$#" == "0" ]; then
echo ""
echo ""
echo "./envio.sh from <archivo> <subject> <server> [adjunto]"
echo ""
echo "from remitente del mensaje"
echo "archivo archivo texto plano con el cuerpo del mensaje"
echo "subject asunto del mensaje"
echo "server 1 o 2"
echo "adjunto archivo para adjuntar (opcional)"
echo ""
echo ""
echo "ejemplo:"
echo " ./envio.sh \"webmaster@zz.example.com\" aviso.txt \"Aviso importante\" 1"
echo ""
echo ""
exit
fi
if [ -f $text ]; then
if [ "$server" == "1" -o "$server" == "2" ]; then
for i in `ldapsearch -x -b "dc=zz,dc=example.com" "maildrop=*mail$server.zz.example.com" -D "cn=Manager,dc=mm,dc=example.com" mail -w password|grep "mail:"|cut -f 2 -d " "`; do
to=$i
### if [ "$to" == "fulanito.perez@zz.example.com" ]; then
echo $i;
(
echo 'X-Mailer: shell'
echo 'X-MimeOLE: shell'
echo 'From: '$from
echo 'Reply-To: '$from
echo 'MIME-Version: 1.0'
echo 'To: '$to
echo 'Subject: '$subject
echo 'Content-Type: multipart/mixed;'
echo ' boundary="------------080904020905020401020402"'
echo 'Status: '
echo ''
echo 'This is a multi-part message in MIME format.'
echo '--------------080904020905020401020402'
echo 'Content-Type: text/plain; charset=us-ascii; format=flowed'
echo 'Content-Transfer-Encoding: 8bit'
echo ''
cat $text
echo ''
if [ "$#" == "5" ]; then
if [ -f $file1 ]; then
echo '--------------080904020905020401020402'
echo 'Content-Type: application;'
echo ' name='$file1
echo 'Content-Transfer-Encoding: base64'
echo 'Content-Disposition: inline;'
echo ' filename='$file1
echo ''
perl -MMIME::Base64 -0777 -ne 'print encode_base64($_)' < $file1
fi
fi
#) >> mailss
)|/usr/sbin/sendmail -oi -t
### fi
done
else
echo "Server 1 o 2"
fi
else
echo "$text: el archivo no existe"
fi
- Inicie sesión o regístrese para enviar comentarios
- 723 lecturas


Para entender la parte de ldap lee:
man ldapsearchLo de Perl es para enviar un adjunto, que debe estar codificado adecuadamente.
En todo caso, mejor que este script yo usaría comandos específicos (¡para eso están!) mucho más sencillos que esta solución casera:
man mailman mpack
Quizás no es exactamente lo que buscas pero pudiera servirte un artículo que escribí:
"Cómo enviar mensajes de correo desde la terminal, usando EMail y Gmail"
http://sidd.homelinux.net/blog/index.php?post/2009/06/30/C%C3%B3mo-envia...
Saludos,
Sidd.