टेलनेट या नेटकैट का उपयोग करके संलग्न फ़ाइल के साथ एक ईमेल भेजें


15

मैं अक्सर एक परीक्षण के रूप में एक ईमेल भेजने के लिए smtp सर्वर को जोड़ने के लिए टेलनेट या netcat का उपयोग करता हूं।

क्या किसी को पता है कि आप टेलनेट या नेटकैट का उपयोग करके एक ईमेल कैसे भेजेंगे लेकिन एक फ़ाइल भी संलग्न करें ? शायद बेहतर तरीके हैं, लेकिन मैं अभी भी जानना चाहता हूं :-)

मैं एक समाधान के साथ खुश रहूंगा जो लक्ष्य को पूरा करने के लिए थोड़ा सा बैश शेल का उपयोग करता है, लेकिन किसी अन्य उपकरण का उपयोग नहीं करना चाहता ...


1
आह, इसमें संभवतः एक फ़ाइल में माइम अटैचमेंट बनाना, इसे एनकोड करना और फिर इसे अपनी विंडो में पेस्ट करना शामिल होगा। हालांकि SMTP सर्वर पर सिर्फ टेलनेट को सक्षम करने के लिए यह बहुत उपयोगी हो सकता है, एक छोटा मेल लिखें और इसे भेजें (और मैं कर सकता हूं), एक फाइल भेजना जैसे कि बहुत व्यावहारिक नहीं है। 'Sendfile' या 'mutt' आज़माएं (भले ही आपको टूल का उपयोग करना पसंद न हो)।
एंड्रियाइड

प्रतिध्वनि के बाद ''; आप इस प्रतिध्वनि को जोड़ना चाहते हैं '।'; नींद 3; गूंज 'छोड़ दिया';

जवाबों:


10

ठीक है, इसलिए सभी की टिप्पणियों को एक शुरुआती बिंदु के रूप में उपयोग करके मैं इस मूर्खतापूर्ण गंदगी के साथ आया हूं :-) ...

{ 
    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

यद्यपि मैं अभी रैंडम डेटा भेज रहा हूं, यह सुनिश्चित नहीं है कि डेटा बरकरार है या नहीं ...
काइल ब्रान्ड

आप मुझसे ज्यादा टेडियम के लिए एक उच्च सहिष्णुता है! > मुस्कान <
इवान एंडरसन

एक विशिष्ट पाठ फ़ाइल भेजने के लिए मैं इसे कैसे बदल सकता हूं?
user987654321

8

Ick। आपको बेस 64 पर लगाव रखना होगा और माइम हेडर बनाना होगा।

हर बार एक नया संदेश "मक्खी पर" उत्पन्न करने के बजाय, शायद यह आसान होगा कि आप अपने आप को एक "वास्तविक" ईमेल प्रोग्राम से एक बहुत ही छोटा उदाहरण संदेश ईमेल करें (काम का लाभ उठाने वाले लोगों ने इसे लिखने के लिए जो लगाव डाला था। उचित एन्कोडिंग में और MIME हेडर बनाने)।

उस संदेश को टेक्स्ट फ़ाइल w / उसके हेडर (निश्चित रूप से ट्रांसपोर्ट हेडर को हटाते हुए) में सहेजें, और भविष्य के सत्रों के लिए टेलनेट या नेटकाट में इसे संशोधित / कॉपी / पेस्ट करें।


6

जबकि हाथ से एसएमटीपी सर्वर का परीक्षण संभव और व्यवहार्य है, इसके लिए डिज़ाइन किए गए टूल का उपयोग करना बहुत आसान होगा।

यह लेख SWAKS की व्याख्या करता है । swaks को smtp सर्वर टेस्टिंग के लिए डिज़ाइन किया गया है। संलग्नक, प्रमाणीकरण और एन्क्रिप्शन का समर्थन करता है!


+1 अब यह एक ऐसी चीज है जिसका मैं उपयोग शुरू करने जा रहा हूं! :-)
काइल ब्रांट

4

मैं इस प्रविष्टि पर डूब गया जब मैं उसी के बारे में कुछ खोज रहा था। और यहाँ के आक्रांताओं से और अतिरिक्त शोध से मैं इस लिपि को बनाने में कामयाब रहा।

#!/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 , file , awk और a की आवश्यकता है base64 कमांड्स की आवश्यकता होती है, आईडी अनुमान लगाते हैं कि वे अधिकांश प्रणालियों में बहुत मानक हैं।


क्या इस समाधान में आसानी से कई अटैचमेंट जोड़ना संभव होगा?
TryTryAgain

3

यह मैं बैश के साथ ईमेल भेजने के लिए कर रहा हूँ। मैं इसका उपयोग मुझे एक लॉग फ़ाइल और बाहरी आईपी एड्रेस भेजने के लिए करता हूं, इसका उपयोग करने के लिए स्वतंत्र महसूस करता हूं:

#!/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

टेलनेट - कई अनुलग्नकों के साथ ईमेल भेजें

बिल्ली लगाव। ज़िप | base64> zip.txt
बिल्ली लगाव। पीपीडी | base64> pdf.txt

# सामग्री-प्रकार: पाठ / सीएसवी; CSV फ़ाइलों के लिए नाम = "$ FILE" #
# सामग्री-प्रकार: आवेदन / x-msdownload; नाम = "$ FILE" # निष्पादन योग्य के लिए
# सामग्री-प्रकार: पाठ / xml; नाम = "$ फ़ाइल" # xml फ़ाइलों के लिए या अनुप्रयोग / xml का प्रयास करें

टेलनेट smtp.server.dom 25

नमस्कार
मेल फ्रॉम: email@server.com
RCPT TO: email@server.com
डेटा
विषय: टेस्ट ईमेल
प्रेषक: email@server.com
To: email@server.com
MIME- संस्करण: 1.0
सामग्री-प्रकार: मल्टीपार्ट / मिश्रित; सीमा = "X - = - = - = - पाठ सीमा"

--X - = - = - = - पाठ सीमा
सामग्री-प्रकार: पाठ / सादा

अपना संदेश यहां डालें ...

--X - = - = - = - पाठ सीमा
सामग्री-प्रकार: आवेदन / ज़िप; नाम = "file.zip"
सामग्री-अंतरण-एन्कोडिंग: base64
सामग्री-विवाद: लगाव; फ़ाइल नाम = "file.zip"

UEsDBBQAAAAIAG1 + zEoQa .... कॉपी / पेस्ट zip.txt

--X - = - = - = - पाठ सीमा
सामग्री-प्रकार: पाठ / पीडीएफ; नाम = "file.pdf"
सामग्री-अंतरण-एन्कोडिंग: base64
सामग्री-विवाद: लगाव; फ़ाइल नाम = "file.pdf"

UEsDBBQAAAAIAG1 + zEoQa .... कॉपी / पेस्ट pdf.txt

--X - = - = - = - पाठ सीमा
।

QUIT

1
सर्वरफ़ॉल्ट में आपका स्वागत है। जो लोग आपके जैसे उत्तर पोस्ट करते हैं वे वास्तव में इस वेबसाइट पर आपका स्वागत करते हैं! :) gratz
bgtvfr

1

आपको SMTP प्रोटोकॉल विनिर्देश की समीक्षा करने की आवश्यकता होगी। यह तकनीकी विनिर्देश के लिए आश्चर्यजनक रूप से पढ़ा जाने वाला प्रकाश है, और आपको यह समझने में मदद करेगा कि ईमेल प्रक्रिया कैसे काम करती है।

विशेष रूप से, यह महसूस करें कि अटैचमेंट MIME प्रकारों में परिवर्तित हो गए हैं और पाठ में इनकोड किए गए हैं, इसलिए आप जो भी अनुलग्नक टेलनेट के माध्यम से भेजना चाहते हैं, उन्हें टेक्स्ट में परिवर्तित करना होगा और टेलनेट प्रोटोकॉल के माध्यम से इस तरह प्रेषित करना होगा।


1

यदि आप परीक्षण कर रहे हैं तो 'अटैचमेंट डिलीवर' किया गया है, तो आप संभवतः पूर्व-माइम के अटैचमेंट के मानक का उपयोग करके दूर हो सकते हैं: uencencode। MIME के ​​विपरीत, यह संदेश बनाने के लिए बहुत सरल है। MIME के ​​विपरीत इसे किसी हेडर की आवश्यकता नहीं होती है। हालांकि, सभी मेल क्लाइंट यूनेकोडेड फाइलों को अटैचमेंट के रूप में नहीं पहचानते हैं, इसलिए मैं यह देखने के लिए परीक्षण करने का सुझाव देता हूं कि क्या आप इसका उपयोग कर सकते हैं। यदि ऐसा होता है, तो आपने अपने आप को बहुत प्रयास के लिए बचाया है। यदि ऐसा नहीं होता है, तो अपने MIMEed संदेश को perl या कुछ के माध्यम से प्री-कंस्ट्रक्ट करते हैं और इसे NetCat जैसी किसी चीज़ के माध्यम से पाइप करते हैं।

देखने लायक।


20 साल पहले यह एक अच्छा जवाब था। अभी नहीं। कई MIME पुस्तकालयों में से एक का उपयोग करें और एक MIME- अनुरूप ईमेल बनाएँ, जो Base64 एन्कोडिंग के साथ पूर्ण है।
james.garriss

1

इस काम के लिए एक शानदार पर्ल स्क्रिप्ट है। आप इसे यहां देख सकते हैं:

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

smtp-cli v2.9

स्क्रिप्ट लेखक की है: मिशल लुडविग (c) 2003-2011 http://smtp-cli.logix.cz

मैं इसे स्वयं उपयोग करता हूं और यह बहुत अच्छा है, मिशल के लिए धन्यवाद;)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.