email - सफर - ईमेल भेजना और प्राप्त करना




जीमेल के माध्यम से सरल एसएमटीपी कमांड का उपयोग कर ईमेल कैसे भेजें? (3)

जीमेल पर भेजने के लिए, आपको एन्क्रिप्टेड कनेक्शन का उपयोग करने की आवश्यकता है। अकेले टेलनेट के साथ यह संभव नहीं है, लेकिन आप openssl जैसे टूल का उपयोग कर सकते हैं

या तो सादे कनेक्शन को एन्क्रिप्टेड में कनवर्ट करने के लिए openssl में starttls विकल्प का उपयोग कर कनेक्ट करें ...

openssl s_client -starttls smtp -connect smtp.gmail.com voc87-crlf -ign_eof

या सीधे एक एसएसएल सॉकेट से कनेक्ट करें ...

openssl s_client -connect smtp.gmail.com:465 -crlf -ign_eof

ईएचएलओ लोकहोस्ट

उसके बाद, बेस 64 एन्कोडेड उपयोगकर्ता नाम / पासवर्ड का उपयोग कर सर्वर को प्रमाणीकृत करें

AUTH प्लेन AG15ZW1haWxAZ21haWwuY29tAG15cGFzc3dvcmQ =

कमांडलाइन से इसे प्राप्त करने के लिए:

perl -MMIME::Base64 -e 'print encode_base64("\000myemail\@gmail.com\000mypassword")' 
AG15ZW1haWxAZ21haWwuY29tAG15cGFzc3dvcmQ=

फिर अपने उदाहरण में "मेल से:" जारी रखें

उदाहरण सत्र:

openssl s_client -connect smtp.gmail.com:465 -crlf -ign_eof
[... lots of openssl output ...]
220 mx.google.com ESMTP m46sm11546481eeh.9
EHLO localhost
250-mx.google.com at your service, [1.2.3.4]
250-SIZE 35882577
250-8BITMIME
250-AUTH LOGIN PLAIN XOAUTH
250 ENHANCEDSTATUSCODES
AUTH PLAIN AG5pY2UudHJ5QGdtYWlsLmNvbQBub2l0c25vdG15cGFzc3dvcmQ=
235 2.7.0 Accepted
MAIL FROM: <[email protected]>
250 2.1.0 OK m46sm11546481eeh.9
rcpt to: <[email protected]>
250 2.1.5 OK m46sm11546481eeh.9
DATA
354  Go ahead m46sm11546481eeh.9
Subject: it works

yay!
.
250 2.0.0 OK 1339757532 m46sm11546481eeh.9
quit
221 2.0.0 closing connection m46sm11546481eeh.9
read:errno=0

शैक्षणिक उद्देश्यों के लिए, मुझे एसएमटीपी के मौलिक और सरल नियमों का उपयोग करके एक एसएमटीपी सर्वर के माध्यम से एक ईमेल भेजने की जरूरत है।

मैं smtp4dev का उपयोग कर ऐसा करने में सक्षम था। मैं telnet localhost 25 और आदेश हैं:

मैं जीमेल एसएमटीपी सर्वर का उपयोग कर, वही काम करना चाहता हूं। हालांकि, इसे प्रमाणीकरण और टीएलएस की आवश्यकता है। मैं यह नहीं समझ सकता कि जीमेल के लिए ऐसा कैसे किया जाए। telnet smtp.gmail.com 587 का एक स्क्रीनशॉट यहां दिया गया है:

मैंने STARTTLS कमांड के बारे में विकिपीडिया के आलेख सहित कई लिंक खोजे और पाया। लेकिन मैं टीएलएस का उपयोग करने में सक्षम नहीं हूं और कमांड लाइन का उपयोग कर जीमेल के एसएमटीपी सर्वर को प्रमाणित करता हूं (या प्रोग्रामिंग भाषाओं में खुद को कमांड भेज रहा हूं)। क्या कोई मदद कर सकता है?


जैसा कि किसी ने उल्लेख नहीं किया है - मैं इस उद्देश्य के लिए महान उपकरण का उपयोग करने का सुझाव दूंगा - swaks

# yum info swaks
Installed Packages
Name        : swaks
Arch        : noarch
Version     : 20130209.0
Release     : 3.el6
Size        : 287 k
Repo        : installed
From repo   : epel
Summary     : Command-line SMTP transaction tester
URL         : http://www.jetmore.org/john/code/swaks
License     : GPLv2+
Description : Swiss Army Knife SMTP: A command line SMTP tester. Swaks can test
            : various aspects of your SMTP server, including TLS and AUTH.

इसमें बहुत सारे विकल्प हैं और आप जो कुछ भी चाहते हैं वह कर सकते हैं।

जीमेल: स्टार्ट टीएलएस, एसएसएलवी 3 (और हां, 2016 में जीमेल अभी भी एसएसएलवी 3 का समर्थन करता है)

$ echo "Hello world" | swaks -4 --server smtp.gmail.com:587 --from [email protected] --to [email protected] -tls --tls-protocol sslv3 --auth PLAIN --auth-user [email protected] --auth-password 7654321 --h-Subject "Test message" --body -
=== Trying smtp.gmail.com:587...
=== Connected to smtp.gmail.com.
<-  220 smtp.gmail.com ESMTP h8sm76342lbd.48 - gsmtp
 -> EHLO www.example.net
<-  250-smtp.gmail.com at your service, [193.243.156.26]
<-  250-SIZE 35882577
<-  250-8BITMIME
<-  250-STARTTLS
<-  250-ENHANCEDSTATUSCODES
<-  250-PIPELINING
<-  250-CHUNKING
<-  250 SMTPUTF8
 -> STARTTLS
<-  220 2.0.0 Ready to start TLS
=== TLS started with cipher SSLv3:RC4-SHA:128
=== TLS no local certificate set
=== TLS peer DN="/C=US/ST=California/L=Mountain View/O=Google Inc/CN=smtp.gmail.com"
 ~> EHLO www.example.net
<~  250-smtp.gmail.com at your service, [193.243.156.26]
<~  250-SIZE 35882577
<~  250-8BITMIME
<~  250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH
<~  250-ENHANCEDSTATUSCODES
<~  250-PIPELINING
<~  250-CHUNKING
<~  250 SMTPUTF8
 ~> AUTH PLAIN AGFhQxsZXguaGhMGdATGV4X2hoYtYWlsLmNvbQBS9TU1MjQ=
<~  235 2.7.0 Accepted
 ~> MAIL FROM:<[email protected]>
<~  250 2.1.0 OK h8sm76342lbd.48 - gsmtp
 ~> RCPT TO:<[email protected]>
<~  250 2.1.5 OK h8sm76342lbd.48 - gsmtp
 ~> DATA
<~  354  Go ahead h8sm76342lbd.48 - gsmtp
 ~> Date: Wed, 17 Feb 2016 09:49:03 +0000
 ~> To: [email protected]
 ~> From: [email protected]
 ~> Subject: Test message
 ~> X-Mailer: swaks v20130209.0 jetmore.org/john/code/swaks/
 ~>
 ~> Hello world
 ~>
 ~>
 ~> .
<~  250 2.0.0 OK 1455702544 h8sm76342lbd.48 - gsmtp
 ~> QUIT
<~  221 2.0.0 closing connection h8sm76342lbd.48 - gsmtp
=== Connection closed with remote host.

याहू: टीएलएस उर्फ ​​एसएमटीपीएस, टीएलएसवी 1.2

$ echo "Hello world" | swaks -4 --server smtp.mail.yahoo.com:465 --from [email protected] --to [email protected] --tlsc --tls-protocol tlsv1_2 --auth PLAIN --auth-user [email protected] --auth-password 7654321 --h-Subject "Test message" --body -
=== Trying smtp.mail.yahoo.com:465...
=== Connected to smtp.mail.yahoo.com.
=== TLS started with cipher TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128
=== TLS no local certificate set
=== TLS peer DN="/C=US/ST=California/L=Sunnyvale/O=Yahoo Inc./OU=Information Technology/CN=smtp.mail.yahoo.com"
<~  220 smtp.mail.yahoo.com ESMTP ready
 ~> EHLO www.example.net
<~  250-smtp.mail.yahoo.com
<~  250-PIPELINING
<~  250-SIZE 41697280
<~  250-8 BITMIME
<~  250 AUTH PLAIN LOGIN XOAUTH2 XYMCOOKIE
 ~> AUTH PLAIN AGFhQxsZXguaGhMGdATGV4X2hoYtYWlsLmNvbQBS9TU1MjQ=
<~  235 2.0.0 OK
 ~> MAIL FROM:<[email protected]>
<~  250 OK , completed
 ~> RCPT TO:<[email protected]>
<~  250 OK , completed
 ~> DATA
<~  354 Start Mail. End with CRLF.CRLF
 ~> Date: Wed, 17 Feb 2016 10:08:28 +0000
 ~> To: [email protected]
 ~> From: [email protected]
 ~> Subject: Test message
 ~> X-Mailer: swaks v20130209.0 jetmore.org/john/code/swaks/
 ~>
 ~> Hello world
 ~>
 ~>
 ~> .
<~  250 OK , completed
 ~> QUIT
<~  221 Service Closing transmission
=== Connection closed with remote host.

मैं बिना किसी समस्या के पिछले 5 वर्षों के लिए जीमेल के माध्यम से नागोस से ईमेल अधिसूचनाएं भेजने के लिए स्वैक्स का उपयोग कर रहा हूं।


मौजूदा उत्तरों के आधार पर, पासवर्ड का खुलासा किए बिना कमांड लाइन से, जीमेल खाते का उपयोग करके, एसएमटीपी पर स्वचालित ई-मेल भेजने के लिए एक चरण-दर-चरण मार्गदर्शिका है।

आवश्यकताएँ

सबसे पहले, निम्न सॉफ़्टवेयर पैकेज स्थापित करें:

ये निर्देश एक लिनक्स ऑपरेटिंग सिस्टम मानते हैं, लेकिन विंडोज़ (साइगविन या देशी समकक्षों के माध्यम से) या अन्य ऑपरेटिंग सिस्टम के लिए बंदरगाह के लिए उचित रूप से आसान होना चाहिए।

प्रमाणीकरण

निम्न शैल स्क्रिप्ट को authentication.sh रूप में सहेजें authentication.sh :

#!/bin/bash

# Asks for a username and password, then spits out the encoded value for
# use with authentication against SMTP servers.

echo -n "Email (shown): "
read email
echo -n "Password (hidden): "
read -s password
echo

TEXT="\0$email\0$password"

echo -ne $TEXT | base64

इसे निष्पादन योग्य बनाएं और इसे निम्नानुसार चलाएं:

chmod +x authentication.sh
./authentication.sh

संकेत मिलने पर, अपना ई-मेल पता और पासवर्ड प्रदान करें। यह कुछ ऐसा दिखेगा:

Email (shown): [email protected]
Password (hidden): 
AGJvYkBnbWFpbC5jb20AYm9iaXN0aGViZXN0cGVyc29uZXZlcg==

अंतिम पंक्ति ( AGJ...== ) की प्रतिलिपि बनाएँ, क्योंकि इसका उपयोग प्रमाणीकरण के लिए किया जाएगा।

अधिसूचना

निम्नलिखित उम्मीद स्क्रिप्ट को notify.sh रूप में notify.sh (ध्यान दें कि पहली पंक्ति उम्मीद कार्यक्रम को संदर्भित करती है):

#!/usr/bin/expect

set address "[lindex $argv 0]"
set subject "[lindex $argv 1]"
set ts_date "[lindex $argv 2]"
set ts_time "[lindex $argv 3]"

set timeout 10
spawn openssl s_client -connect smtp.gmail.com:465 -crlf -ign_eof 

expect "220" {
  send "EHLO localhost\n"

  expect "250" {
    send "AUTH PLAIN YOUR_AUTHENTICATION_CODE\n"

    expect "235" {
      send "MAIL FROM: <YOUR_EMAIL_ADDRESS>\n"

      expect "250" {
        send "RCPT TO: <$address>\n"

        expect "250" {
          send "DATA\n"

          expect "354" {
            send "Subject: $subject\n\n"
            send "Email sent on $ts_date at $ts_time.\n"
            send "\n.\n"

            expect "250" {
                send "quit\n"
            }
          }
        }
      }
    }
  }
}

निम्नलिखित परिवर्तन करें:

  1. प्रमाणीकरण स्क्रिप्ट द्वारा उत्पन्न प्रमाणीकरण कोड के साथ YOUR_AUTHENTICATION_CODE पर पेस्ट करें।
  2. प्रमाणीकरण कोड उत्पन्न करने के लिए उपयोग किए गए ई-मेल पते के साथ YOUR_EMAIL_ADDRESS बदलें।
  3. फ़ाइल सहेजें।

उदाहरण के लिए (नोट करें कि ई-मेल पते के लिए कोण ब्रैकेट बनाए रखा गया है):

send "AUTH PLAIN AGJvYkBnbWFpbC5jb20AYm9iaXN0aGViZXN0cGVyc29uZXZlcg==\n"
send "MAIL FROM: <[email protected]>\n"

अंत में, सूचित करें स्क्रिप्ट निष्पादन योग्य निम्नानुसार है:

chmod +x notify.sh

ईमेल भेजें

निम्नानुसार कमांड लाइन से एक ई-मेल भेजें:

./notify.sh [email protected] "Command Line" "March 14" "15:52"




smtp-auth