Nuestro equipo de especialistas despúes de algunos días de investigación y de juntar de datos, hemos dado con la respuesta, esperamos que resulte de gran utilidad en tu trabajo.
Solución:
Solución 1:
Bien, usando los comentarios de todos como punto de partida, se me ocurrió este lío tonto 🙂 …
openssl base64;
echo '.';
| telnet mx1.testdest.com 25
Solución 2:
Ick. Tendrá que codificar en base64 el archivo adjunto y crear los encabezados MIME.
En lugar de generar un nuevo mensaje “sobre la marcha” cada vez, probablemente sería más fácil enviarse un mensaje de ejemplo muy corto de un programa de correo electrónico “real” (aprovechando el trabajo que hicieron las personas que lo escribieron para colocar el archivo adjunto en la codificación adecuada y creando los encabezados MIME).
Guarde ese mensaje en un archivo de texto con sus encabezados (eliminando el encabezado de transporte, por supuesto) y simplemente modifíquelo / cópielo / péguelo en telnet o netcat para futuras sesiones.
Solución 3:
Si bien es posible y viable probar manualmente los servidores SMTP, usar una herramienta diseñada para esto será mucho más fácil.
Este artículo explica SWAKS. swaks está diseñado para pruebas de servidor smtp. Admite archivos adjuntos, autenticación y cifrado.
Solución 4:
Reflexioné sobre esta entrada mientras buscaba algo similar. y de los lectores aquí y algunas investigaciones adicionales logré hacer este guión.
#!/bin/sh
# Default reception
TOEMAIL="[email protected]";
# Default Subject
SUBJECT="You got mail - $DATE";
# Default Contents
MSGBODY="Hello, this is the default message body";
# Default Attachment
#ATTACHMENT="/tmp/testoutput"
# Default smtp server
mailserver="smtp.server.ltd"
mailserverPort="25"
showUsage()
echo "$0 -a /file/to/attach [-m /message/file] [-M "Message string"] -s "subject" -r [email protected]"
echo
echo "The attachment (-a) is required, if no attachment is used then rather use sendmail directly."
fappend()
echo "$2">>$1;
DATE=`date`
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# This might need correction to work on more places, this is tested at a ubuntu 13.10 machine. #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
domain=`grep search /etc/resolv.conf | awk 'print $2;'`
computer=`hostname`
user=`whoami`
FREMAIL="[email protected]$computer.$domain"
while getopts "M:m:a:s:r:" opt; do
case $opt in
s)
SUBJECT="$OPTARG - $DATE"
;;
r)
TOEMAIL="$OPTARG"
;;
m)
MSGBODY=`cat $OPTARG`
;;
M)
MSGBODY="$OPTARG"
;;
a)
ATTACHMENT="$OPTARG"
;;
:)
showUsage
;;
?)
showUsage
;;
esac
done
if [ "$ATTACHMENT" = "" ]; then
showUsage
exit 1
fi
MIMETYPE=`file --mime-type -b $ATTACHMENT`
TMP="/tmp/tmpmail_"`date +%N`;
BOUNDARY=`date +%s|md5sum|awk 'print $1;'`
FILENAME=`basename $ATTACHMENT`
DATA=`cat $ATTACHMENT|base64`
rm $TMP 2> /dev/null
fappend $TMP "EHLO $computer.$domain"
fappend $TMP "MAIL FROM:<$FREMAIL>"
fappend $TMP "RCPT TO:<$TOEMAIL>"
fappend $TMP "DATA"
fappend $TMP "From: $FREMAIL"
fappend $TMP "To: $TOEMAIL"
fappend $TMP "Reply-To: $FREMAIL"
fappend $TMP "Subject: $SUBJECT"
fappend $TMP "Content-Type: multipart/mixed; boundary="$BOUNDARY""
fappend $TMP ""
fappend $TMP "This is a MIME formatted message. If you see this text it means that your"
fappend $TMP "email software does not support MIME formatted messages."
fappend $TMP ""
fappend $TMP "--$BOUNDARY"
fappend $TMP "Content-Type: text/plain; charset=UTF-8; format=flowed"
fappend $TMP "Content-Disposition: inline"
fappend $TMP ""
fappend $TMP "$MSGBODY"
fappend $TMP ""
fappend $TMP ""
fappend $TMP "--$BOUNDARY"
fappend $TMP "Content-Type: $MIMETYPE; name="$FILENAME""
fappend $TMP "Content-Transfer-Encoding: base64"
fappend $TMP "Content-Disposition: attachment; filename="$FILENAME";"
fappend $TMP ""
fappend $TMP "$DATA"
fappend $TMP ""
fappend $TMP ""
fappend $TMP "--$BOUNDARY--"
fappend $TMP ""
fappend $TMP "."
fappend $TMP "quit"
netcat $mailserver $mailserverPort < $TMP >> $TMP
rc="$?"
if [ "$rc" -ne "0" ]; then
echo "Returncode: $rc"
echo "Please inspect $TMP"
else
rm $TMP;
fi
Una cosa que quizás desee agregar es la autenticación. No lo necesito, así que no lo he agregado.
Creo que solo requiere md5sum, netcat, expediente, awk y el base64 comandos, supongo que son bastante estándar en la mayoría de los sistemas.
Solución 5:
Telnet: envíe correo electrónico con varios archivos adjuntos
cat attachment.zip | base64 > zip.txt cat attachment.pdf | base64 > pdf.txt # Content-Type: text/csv; name="$FILE" # for CSV files # Content-Type: application/x-msdownload; name="$FILE" # for executable # Content-Type: text/xml; name="$FILE" # for xml files or try application/xml telnet smtp.server.dom 25 HELO MAIL FROM: [email protected] RCPT TO: [email protected] DATA Subject: Test email From: [email protected] To: [email protected] MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="X-=-=-=-text boundary" --X-=-=-=-text boundary Content-Type: text/plain Put your message here... --X-=-=-=-text boundary Content-Type: application/zip; name="file.zip" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="file.zip" UEsDBBQAAAAIAG1+zEoQa.... copy/paste zip.txt --X-=-=-=-text boundary Content-Type: text/pdf; name="file.pdf" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="file.pdf" UEsDBBQAAAAIAG1+zEoQa.... copy/paste pdf.txt --X-=-=-=-text boundary . QUIT
Al final de la post puedes encontrar las referencias de otros administradores, tú además tienes la opción de dejar el tuyo si te gusta.