Os scripts abaixo devem ter permissão de execução para que possam funcionar. Em breve colocarei um manual sobre shell script, awk e sed, que são os programas mais utilizados para esse tipo de administração.
#!/usr/bin/awk -f
#
# Get first message in a mbox.
# Author: Geilson Coutinho Figueiredo.
#
BEGIN {
first = 0
}
{
if ($0 ~ /From /) { first += 1 }
if (first > 1) { exit }
print
}
Esse script foi escrito em awk. Basta passar o nome da mbox como argumento, que ele retornará a primeira mensagem dessa mbox.
#!/bin/sh
#
# Get last message in a mbox.
# Author: Geilson Coutinho Figueiredo.
#
awk '/From / {last = NR} END { print "tail -" NR - last + 1 " '"$1"'" }' $1 | /bin/sh
Esse script foi escrito em shell script. Basta passar o nome da mbox como argumento, que ele retornará a última mensagem dessa mbox.
#!/bin/sh
#
# Send mail with attachment.
# Author: Geilson Coutinho Figueiredo.
# Changelog:
#
if [ $# -ne 5 ]; then
echo "Usage: `basename $0` mail-from mail-to subject bodyfile attachfile"
exit 1
fi
mailfrom=$1
mailto=$2
subject=$3
bodyfile=$4
attachfile=$5
export mailfrom mailto subject bodyfile attachfile
if [ ! -f $bodyfile ]; then
echo "Error: $bodyfile does not exist."
exit 1
fi
if [ ! -f $attachfile ]; then
echo "Error: $attachfile does not exist."
exit 1
fi
{
echo "From: $mailfrom"
echo "To: $mailto"
echo "Subject: $subject"
echo "MIME-Version: 1.0"
echo "Content-type: multipart/mixed; boundary=\"xxxyyyzzz${$}zzzyyyxxx\""
echo
echo "If you are seeing this text, your mail reader is non-MIME conformant."
echo "--xxxyyyzzz${$}zzzyyyxxx"
echo "Content-Type: text/plain"
echo "Content-Transfer-Encoding: base64"
echo
uuencode -m $bodyfile $bodyfile | egrep -v "begin-base|===="
echo
echo "--xxxyyyzzz${$}zzzyyyxxx"
echo "Content-Type: application/octet-stream"
echo "Content-Transfer-Encoding: base64"
echo "Content-Disposition: attachment; filename=$attachfile"
echo
uuencode -m $attachfile $attachfile | egrep -v "begin-base|===="
echo
echo "--xxxyyyzzz${$}zzzyyyxxx--"
echo "If you are seeing this text, your mail reader is non-MIME conformant."
} | /usr/sbin/sendmail $mailto
Esse script é um pouco mais complexo que os anteriores. Consulta as RFC's 2822 e 1521, disponíveis em www.ietf.org, para saber como funciona o script. Espero em breve colocar um tutorial explicando como funcionam esses importantes protocolos: SMTP e MIME. Caso não tenhas o programa uuencode, ou este não tenha a opção -m (MIME), podes eliminar a linha contendo Content-Transfer-Encoding e trocar a linha que contém o referido comando por cat $attachfile. O único problema é que anexos binários não poderão ser enviados.