Пошлите электронное письмо с прикрепленным файлом с помощью telnet или netcat

Спасибо за обновление Alex. Самый новый 'Nehalem основанные на ' серверы, такие как модель, Вы смотрите на RAM тройного канала использования, заметьте, как у них есть 'divisible-three' слоты памяти (3, 6, 9, 12, 18 и т.д.), где предыдущие модели имели 'devisible-two' версии (2, 4, 8, 16 и т.д.). Можно вставить меньше чем три модуля за один раз, но Вы, вероятно, пропустите полную производительность нового 'QPI основанную на ' архитектуру памяти.

Также очень важный с этими новыми микросхемами должен сбалансировать Вашу память через процессоры - если у Вас только есть единственный процессор затем, Вы не должны помещать память в слоты, связанные с пустым слотом процессора, только с первым процессором - это эффективно половины возможность памяти однопроцессорных серверов. Если у Вас есть два процессора, необходимо УДОСТОВЕРИТЬСЯ, чтобы у них обоих были та же сумма И тип/размер памяти друг как друг.

Теперь на Ваш фактический вопрос. С этими новыми серверами, чем больше микросхем физической памяти Вы используете, тем медленнее они добираются - они еще быстрее, чем предыдущее поколение микросхем/памяти даже в их самом медленном, но необходимо стремиться использовать меньше самых просторных модулей, которые имеют смысл Вам в финансовом отношении.

При рассмотрении определенной машины, которую Вы хотите, я убедил бы Вас пойти или с Памятью на 48 ГБ Память на 24 ГБ или с (на 12x4 ГБ) (6x4 ГБ) на основе Ваших требований. Всего наилучшего.

15
задан 10 July 2009 в 16:55
9 ответов

Хорошо, таким образом с помощью общих комментариев в качестве начальной точки я придумал эту глупую путаницу :-)...

{ 
    sleep 5; 
    echo 'ehlo';
    sleep 3;
    echo 'MAIL FROM:<Test@test.com>';
    sleep 3; 
    echo 'RCPT TO: <kyle@test_dest.com>';
    sleep 3;
    echo 'DATA';
    sleep 3;
    echo -e 'To:kyle@testdest.com\nMIME-Version: 1.0 (mime-construct 1.9)\nContent-Type: application/zip\nContent-Transfer-Encoding: base64\n\n';
    dd if=/dev/urandom bs=4 count=10 2>/dev/null | openssl base64;
    echo '.';
} | telnet mx1.testdest.com 25
10
ответ дан 2 December 2019 в 20:46
  • 1
    Хотя, так как я просто отправляю случайные данные, не уверенные, если данные остаются неповрежденными... –  Kyle Brandt 10 July 2009 в 22:03
  • 2
    У Вас есть более высокий допуск для скуки, чем я! > smile< –  Evan Anderson 11 July 2009 в 04:38

Ick. Вы оказываетесь перед необходимостью, base64 кодируют вложение и создают заголовки MIME.

Вместо того, чтобы генерировать новое сообщение "на лету" каждый раз, вероятно, было бы легче только послать себе по электронной почте очень короткое сообщение в качестве примера из "реальной" почтовой программы (усиливающий работу, которую люди, которые записали это, сделали для помещения вложения в надлежащее кодирование и создание заголовков MIME).

Сохраните то сообщение прочь в текстовый файл w/его заголовки (удаляющий транспортный заголовок, конечно), и просто измените / копия / вставляет его в telnet или netcat для будущих сессий.

8
ответ дан 2 December 2019 в 20:46

В то время как рука, тестирующая серверы SMTP вручную, возможна и жизнеспособна, использование инструмента, разработанного для этого, будет намного легче.

Эта статья объясняет, что SWAKS. swaks разработан для smtp тестирования сервера. Вложения поддержек, аутентификация и шифрование!

6
ответ дан 2 December 2019 в 20:46
  • 1
    +1 Теперь, когда что-то, которое я собираюсь начать использовать!:-) –  Kyle Brandt 10 July 2009 в 22:20

Необходимо будет рассмотреть спецификацию протокола SMTP. Это - удивительно легкое чтение для технической спецификации и поможет Вам понять, как почтовый процесс работает.

А именно, поймите, что вложения преобразовываются в типы MIME и кодируются в тексте, таким образом, любые вложения, которые требуется отправить с помощью telnet, должны будут быть преобразованы в текст и переданы как таковые по протоколу telnet.

1
ответ дан 2 December 2019 в 20:46

Если все, что Вы тестируете, 'сделал вложение, поставляют', Вам могло бы возможно сойти с рук использование стандарта перед MIME вложений: Uuencode. В отличие от MIME, намного более просто создать сообщения. В отличие от MIME это не требует никаких заголовков. Однако не все почтовые клиенты распознают кодируемые программой uuencode файлы как вложения больше, таким образом, я предлагаю тестировать, чтобы видеть, можно ли использовать его. Если это делает, Вы только что сохранили себя большое усилие. Если это не делает, то предварительное построение Вашего MIMEed обменивается сообщениями через жемчуг, или что-то и передача по каналу его через что-то как NetCat являются, вероятно, способом пойти.

Стоящий взгляда.

1
ответ дан 2 December 2019 в 20:46

Для этой работы есть замечательный Perl-скрипт. Вы можете найти его здесь:

http://www.logix.cz/michal/devel/smtp-cli/

smtp-cli v2.9

Скрипт от автора: Michal Ludvig (c) 2003 -2011 http://smtp-cli.logix.cz

Я использую его сам, и он отлично работает, спасибо Михалу;)

1
ответ дан 2 December 2019 в 20:46

Это то, что я делаю для отправки электронной почты с помощью bash. Я использую его для отправки мне файла журнала и внешнего IP-адреса, не стесняйтесь использовать его:

#!/bin/bash
# Send email from bash with attachment
# by Psirac - www.subk.org
from=myfromadress@test.com
to=mytoadress@test.com
mailserver=smtp.test.com
mylogin=`echo 'MYUSERNAME' | openssl base64`
mypassword=`echo 'MYPASSWORD' | openssl base64`
myip=`wget -qO- icanhazip.com`
myfile=`cat /tmp/mytest.log | openssl base64`
mydate=`date`

exec 9<>/dev/tcp/$mailserver/25
echo "HELO routeur.tripfiller" >&9
read -r temp <&9
#echo "$temp"
echo "auth login" >&9
read -r temp <&9
#echo "$temp"
echo "$mylogin=" >&9
read -r temp <&9
#echo "$temp"
echo "$mypasswd=" >&9
read -r temp <&9
#echo "$temp"
echo "Mail From: $from" >&9
read -r temp <&9
#echo "$temp"
echo "Rcpt To: $to" >&9
read -r temp <&9
#echo "$temp"
echo "Data" >&9
read -r temp <&9
#echo "$temp"
echo "To:$to" >&9
echo "MIME-Version: 1.0" >&9
echo "Subject: Test mail sended at $mydate" >&9
echo "From: $from" >&9
echo "To: $to" >&9
echo "Content-Type: multipart/mixed; boundary=sep" >&9
echo "--sep" >&9
echo "Content-Type: text/plain; charset=UTF-8" >&9
echo "Here your text..." >&9
echo "External IP adress: $myip" >&9
echo "--sep" >&9
echo "Content--Type: text/x-log; name=\"mytest.log\"" >&9
echo "Content-Disposition: attachment; filename=\"mytest.log\"" >&9
echo "Content-Transfer-Encoding: base64" >&9
echo "" >&9
echo "$myfile" >&9
echo "--sep--" >&9
echo "." >&9
read -r temp <&9
echo "$temp"
echo "quit" >&9
read -r temp <&9
echo "$temp"
9>&-
9<&-
#echo "All Done. See above for errors"
exit 0

Надеюсь, вам понравилось;)

psirac.

3
ответ дан 2 December 2019 в 20:46

Я подытожил эту запись, пока искал что-то похожее. мне удалось создать этот скрипт, благодаря авторам и некоторым дополнительным исследованиям.

#!/bin/sh

# Default reception
TOEMAIL="myEmail@domain.ltd";
# 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 receiver@domain.com"
        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="$user@$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

Возможно, вы захотите добавить аутентификацию. Мне это не нужно, поэтому я не добавил его.

Я думаю, что для этого требуется только md5sum , netcat , файл , awk и команды base64 , думаю, они довольно стандартные для большинства систем.

4
ответ дан 2 December 2019 в 20:46

Telnet - отправка электронной почты с несколькими вложениями

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@server.com
RCPT TO: email@server.com
DATA
Subject: Test email
From: email@server.com
To: email@server.com
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
3
ответ дан 2 December 2019 в 20:46

Теги

Похожие вопросы